sfruttare le api di Last.fm con php
June 10th, 2009
Last.fm è uno dei social preferiti qui in SOOLID, soprattutto per quanto mi riguarda, adoro le funzionalità , adoro lo stile con cui fanno le cose e cerco di sfruttare i servizi che offrono il più possibile per la mia band.
Essendo il nerd del gruppo, mi occupo io di gestire tutto quello che riguarda il web, e mi tocca anche l’ingrato compito di piazzare le date dei concerti su tutti i social principali (myspace, lastfm, facebook) e sul blog. Per iniziare a risolvere questo problema di gestione ho deciso di visualizzare sul blog le date dei concerti già inserite su last.fm , sfruttando le API fornite da last.fm.
Come ho fatto:
Step 1: ottenere un’API account
http://www.last.fm/api/account qui potete ottenere la vostra API key che utilizzerete per collegarvi alle API. Tutto quello che dovete fare è dare qualche informazione su come intendete usare le API.
Step 2: ottenere i dati
http://www.last.fm/api qui trovate la lista di tutti i metodi che potete usare completi di lista di parametri da passare, esempio di risposta, significato dei possibili errori restituiti e se il metodo necessita di autorizzazione per essere utilizzato.
A mè interessa Artist.getevents.
Parametri necessari:metodo, api_key, nome artista
In questo caso quindi la stringa per interpellare le api è http://ws.audioscrobbler.com/2.0/?method=artist.getevents&artist=gazebo+penguins&api_key=#########api_key#######
come potete vedere per specificare il metodo non basta il nome ma bisogna mettere “gruppo.nomemetodo”
l’url appena creata vi restituisce i dati richiesti in formato xml.
Step 3: parsare i dati
come utilizzare questi dati in formato xml ? in qualche modo bisogna parsarli e trasformarli in un formato facilmente utilizzabile con php. Dopo un pò di tentativi con funzioni ricorsive e simili ho trovato questo comodissimo metodo simple_xml_load_file() che mi ha risolto il problema.
Questo metodo fantastico, trasforma qualsiasi tipo di dati xml gli diate in pasto, in un’oggetto.
Esempio:
$url = "http://ws.audioscrobbler.com/2.0/?method=artist.getevents&artist=gazebo+penguins&api_key=#########api_key#######"
$eventsObj = simplexml_load_file($url);
fatevi un bel var_dump($eventsObj) per farvi un’idea della struttura dell’oggetto appena creato.
Step 4: orientarsi all’interno dell’oggetto $eventsObj
Ci ho messo qualche minuto a capire come districarmi nella struttura dell’oggetto e listare gli eventi con un foreach, quindi vi scrivo quì qualche dritta così vi risparmio la fatica.
foreach($eventsObj->events->event as $event) :
echo "titolo:".$event->title;
echo "locale:".$event->venue->name;
echo "locale:".$event->venue->location->city;
echo "locale:".$event->venue->location->country;
echo "ID evento:".$event->id;
echo "Data inizio:".$event->startDate;
endforeach;
Ora mi rimane da risolvere il problema di come visualizzare le date di lastfm anche su myspace e facebook…
Per quanto riguarda myspace penso creerò una widget apposita in flash collegata a lastfm tramite un file php, unico modo che conosco di visualizzare dati presi dall’esterno su myspace. Per facebook non sò, forse dovrò fare un plug-in apposito, o forse collegherò semplicemente l’rss alla pagina tramite social rss.
se avete idee fatemi sapere !
Leave a Reply