Muchas de las redes sociales que existen en internet, cuentan con una serie de servicios webs o aips para acceder a la información que ellos manejan. Last.fm también tiene con una serie de servicios web con los que poder acceder a casi todo la información de un usuario o de un grupo / disco en particular. Actualmente el desarrollo de este servicio se encuentra en fase beta.
Los servicios pueden encontrarse en varios formatos como XML, Texto Plano, RSS, XSPF o iCal en caso de tratarse de eventos. Esto es todo lo que permite hacer:
User Profile Data
Profile Information
Top Artists
Top Albums
Top Tracks
Top Tags
Top Tags for Artist
Top Tags for Album
Top Tags for Track
Friends List
Neighbours
Recent Tracks
Recent Banned Tracks
Recent Loved Tracks
Recent Journals
Weekly Chart List
Recent Weekly Artist Chart
Recent Weekly Album Chart
Recent Weekly Track Chart
Previous Weekly Artist Chart
Previous Weekly Album Chart
Previous Weekly Track Chart
Manual Recommendations
System Recommendations
Current Events
Friends' Events
System Event Recommendations
Taste-O-Meter
Artist Data
Similar Artists
Top Fans
Top Tracks
Top Albums
Top Tags
Current Events
Album Data
Info
Track Data
Similar Tracks
Top Fans
Top Tags
Tag Data
Overall Top Tags
Top Artists
Top Albums
Top Tracks
Group Data
Recent Journals
Weekly Chart List
Recent Weekly Artist Chart
Recent Weekly Album Chart
Recent Weekly Track Chart
Previous Weekly Artist Chart
Previous Weekly Album Chart
Previous Weekly Track Chart
Forum Data
Forums
Geo-aware Data
Top Artists
Top Tracks
Podréis encontrar más información aquí, además de una wiki y un foro.
Utilizando una tecnología como LINQ To XML es muy sencillo acceder a un servicio y obtener los resultados que este ofrece. Por ejemplo, el método Top Albums devuelve un XML como el siguiente:
<?xml version="1.0" encoding="UTF-8"?>
<topalbums user="Pedroafa" type="overall">
<album>
<artist mbid="648615ca-ca74-460d-928a-2bae67ae6d14">
Dirty Pretty Things
</artist>
<name>Waterloo to Anywhere</name>
<mbid></mbid>
<playcount>71</playcount>
<rank>1</rank>
<url>
http://www.last.fm/music/Dirty+Pretty+Things/Waterloo+to+Anywhere
</url>
<image>
<large>
http://cdn.last.fm/coverart/130x130/2479427-1411073277.jpg
</large>
<medium>
http://cdn.last.fm/coverart/130x130/2479427-1411073277.jpg
</medium>
<small>
http://cdn.last.fm/coverart/130x130/2479427-1411073277.jpg
</small>
</image>
</album>
</topalbums>
Partiendo de este XML se pueden obtener un conjunto de entidades con las que poder trabajar a lo largo de la aplicación.
Y el código de LINQ que se necesita para atacar al servicio es el siguiente:
XDocument loaded = XDocument.Load(
String.Format(ConfigurationManager.AppSettings["TopAlbum"], user));
var albums = from a in loaded.Descendants("album") select new Album
{ artist = new Artist { mbid = (string)a.Element("artist").Attribute("mbid"), Value = (string)a.Element("artist") }, name = (string)a.Element("name"), mbid = (string)a.Element("mbid"), playcount = (int)a.Element("playcount"), rank = (int)a.Element("rank"), url = (string)a.Element("url"), image = new LastFm.Entities.Image { large = (string)a.Element("image") .Element("large"), medium = (string)a.Element("image") .Element("medium"), small = (string)a.Element("image") .Element("small") } };
LINQ To XML convierte el desarrollo de Mashups en un juego de niños .