Last.fm nel nostro sito
Last.fm penso lo conosciate tutti, permette di ascoltare musica quasi “on demand”, con stazioni radio create “ad hoc” in base ai nostri gusti. Una delle caratteristiche più interessanti di last.fm è quella di gestire un profil dell’utente tenendo tracce delle canzoni ascoltate nel sito, tramite i maggiori software come itunes e winamp e perfino dai lettori portatili.
La cosa interessante per gli sviluppatori è che last.fm permette di accedere a queste informazioni tramite le proprie API, prelevando da file testuali o xml le informazioni sulle canzoni e gli artisti ascoltati. Quello che andremo a fare è proprio realizzare un piccolo script in php per leggere questi files. In particolare andremo a prelevare le ultime tracce ascoltate…
L’indirizzo delle api è ws.audioscrobbler.com (vi rimando allo stesso per tutti i vari dati disponibili). Il file che ci interessa è quello relativo alle tracce recenti che si trova all’indirizzo
http://ws.audioscrobbler.com/1.0/user/cescopag/recenttracks.xml
(ovviamente al posto di “cescopag” metterete il vostro utente)
ma veniamo al codice php necessario.
Per prima cosa leggiamo il nostro xml tramite la funzione “file_get_contents()”:
$xml_recenttracks=file_get_contents("http://ws.audioscrobbler.com/1.0/user/cescopag/recenttracks.xml");
Andiamo ora a leggere l’xml tramite il comando “simplexml_load_string()” che permette di fare il parsing di una stringa formattata in xml ed inserisce il file in un array di oggetti:
$recenttracks=simplexml_load_string($xml_recenttracks);
Bene, abbiamo un array pronto per essere letto tramite un semplice ciclo, ad esempio se vogliamo prelevare le ultime 3 canzoni ascoltate il codice da usare sarà:
for ($i=0; $i<3; $i++)
{
$track = $recenttracks->track[$i];
$artist = $track->artist; //l'artista del brano
$album = $track->album; //l'album contenente il brano
$date = $track->date; //la data
$name = $track->name; //il titolo del brano
$url = $track->url; //l'indirizzo corrispondente in last.fm
}
bene, ora non ci resta che stampare le variabili e il gioco è fatto. Se volessimo prelevare anche la copertina dovremmo usare un altro file xml ed inserire nel ciclo for le seguenti righe:
$track_data = @simplexml_load_file("http://ws.audioscrobbler.com/1.0/album/$artist/$album/info.xml");
$cover = isset($track_data -> coverart->small) ? $track_data -> coverart->small : false;
Il codice completo sarà quindi:
<?php
$xml_recenttracks = file_get_contents("http://ws.audioscrobbler.com/1.0/user/cescopag/recenttracks.xml");
$recenttracks = simplexml_load_string($xml_recenttracks);
for ($i=0; $i<3; $i++)
{
$track = $recenttracks->track[$i];
$artist = $track->artist; //l'artista del brano
$album = $track->album; //l'album contenente il brano
$date = $track->date; //la data
$name = $track->name; //il titolo del brano
$url = $track->url; //l'indirizzo corrispondente in last.fm
$track_data = @simplexml_load_file("http://ws.audioscrobbler.com/1.0/album/$artist/$album/info.xml");
$cover = isset($track_data -> coverart->small) ? $track_data -> coverart->small : false;
//ora comincio a stampare...
?>
<p>
<?php if($cover) { ?>
<img src="<?=$cover?>" alt="cover" align="left" />
<?php } ?>
<?=artist?> - <?=$album?><br />
<a href="<?=$url?>"><?=$name?></a><br />
</p>
<?php } ?>
Comments(2)
[...] PS: per sapere come fare il parsing di un xml con php potete leggere il post su last.fm [...]
Good post.