Welcome to Kartones.Net Sign in

Sector 7G

Sector7G Live Search

About Me

About Me

Windows Live Messenger Presence Gadget

My Photo Albums

My Photo Web Albums

Logos

  • Sector7G
  • ilitia Technologies

May 2008 - Posts

Last.fm Web Services

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 .

Posted: May 25 2008, 05:10 PM by Pedroafa | with no comments