Każdy “poważny” serwis w dzisiejszych czasach posiada swoje API czyli interfejs programistyczny. Nie inaczej jest z last.fm. Ten popularny serwis muzyczny posiada bardzo rozbudowane API umożliwiające między innymi:

  • pobranie listy ostatnio odtwarzanych utworów przez określonego użytkownika
  • pobranie informacji o wykonawcy, albumie czy wydarzeniu w określonej lokalizacji
  • dodanie utworu, albumu czy wykonawcy do własnej biblioteki lub listy odtwarzania
  • wysyłanie informacji o odtwarzanych utworach do serwisu (scrobbling)

Możliwości jest dużo więcej, cała dokumentacja dostępna pod adresem http://www.lastfm.pl/api/intro

Pierwszym krokiem do korzystania z API (prócz oczywiście samej rejestracji i zalogowania się w serwisie) jest pozyskanie odpowiedniego klucza. Należy przejść na stronę http://www.lastfm.pl/api/account , gdzie trzeba określić formę naszej aplikacji (zwykle jest to pierwsza opcja “Non-commercial Use” – czyli aplikacja do użytku niekomercyjnego) a także jej nazwę oraz krótki opis.

Po wysłaniu formularza od razu dostaniemy dwa klucze opisane jako API Key oraz secret.

W kolejnym kroku pobieramy potrzebne biblioteki z zakładki downloads (http://www.last.fm/api/downloads), gdzie znajdują się interfejsy do większości popularnych języków programowania. W przypadku Pythona należu pobrać i zainstalować moduł pyLast (http://code.google.com/p/pylast/), który znajduje się w repozytorium svn. Jeżeli pracujemy pod Linuksem wystarczy (jeśli mamy zainstalowanego klienta svn) wydać komendę:

svn checkout http://pylast.googlecode.com/svn/trunk/ pylast-read-only

a następnie zainstalować ją odpowiednią dla dystrybucji komendą, np.

sudo python setup.py install

W przypadku Windows można do pobrania kodu użyć klienta Tortoise SVN lub po prostu pobrać pliki pylast.py i setup.py z repozytorium i zainstalować komendą
python setup.py install

Teraz przetestujemy instalację, początek każdego połączenia będzie identyczny:

import pylast
API_KEY = 'tu Twój API KEY'
API_SECRET = 'tu Twoje hasło'
username = 'tu nazwa Twojego użytkownika'
password_hash = pylast.md5('tu hasło Twojego użytkownika')
network = pylast.get_lastfm_network(api_key = API_KEY, api_secret = API_SECRET, username = username, password_hash = password_hash)</code>

Utworzony obiekt network posłuży nam do pobierania odpowiednich obiektów zawierających informacje o artystach, albumach czy utworach, a także do wysyłania poleceń do serwisu.

aby teraz pobrać informację o artyście piszemy:

artist = network.get_artist('Iron Maiden')

Teraz pobierzemy listę najpopularniejszych utworów:

tracks=artist.get_top_tracks()

I wyświetlamy pierwsze 10:

i=0
for track in tracks:
print track.item.title
i += 1
if i == 10: break;

Run To The Hills
The Number of the Beast
The Trooper
2 Minutes to Midnight
Aces High
Fear of the Dark
Hallowed Be Thy Name
Wasted Years
Can I Play With Madness
The Evil That Men Do

w podobny sposób możemy pobrać listę tagów:

tags=artist.get_top_tags()
i=0
for tag in tags:
print tag.item.name
i += 1
if i == 10: break;

heavy metal
metal
NWOBHM
hard rock
rock
Power metal
british
classic rock
Iron Maiden
New Wave of British Heavy Metal

Oczywiście można także bezpośrednio pobrać informację o określonym utworze:

track = network.get_track("Iron Maiden", "Rime of the ancient mariner")

i wysłać informacje o “polubieniu go”:

track.love()

Pobranie informacji o albumie i jego utworach jest analogiczne, z tym że utwory albumu pobrane za pomocą metody get_tracks są w postaci listy:

album = network.get_album('Amorphis','Eclipse')
print album.get_tracks()

[Amorphis - Two Moons, Amorphis - House Of Sleep, Amorphis - Leaves Scar, Amorphis - Born From Fire, Amorphis - Under A Soil And Black Stone, Amorphis - Perkele (The God of Fire), Amorphis - The Smoke, Amorphis - Same Flesh, Amorphis - Brothers moon, Amorphis - Empty Opening, Amorphis - Stonewomen (Bonus Track)]

podobnie proste jest otagowanie albumu i pobranie listy tagów:

album.add_tags('progressive metal')
album.get_tags()

[metal, Progressive metal]

Jak widać API jest bardzo proste i przyjemne w użyciu, jedynym problemem może być dokumentacja, w takim przypadku bardzo pomagają polecenia dir oraz help.