FeedBack Lastify

Après avoir passé une semaine à tester les APIs Python de Spotify et LastFm, j'ai fini par faire un petit site exploitant ces deux APIs (+ GData et une bonne dose de jQuery) que je vous présente aujourd'hui : http://lastify.dev.naeka.fr/

Ce site n'était pas vraiment destiné à être montré ni même à exister, ce n'est qu'un terrain de jeux, mais au lieu de m'en débarrasser autant m'en servir pour vous montrer ce que l'on peut faire avec quelques APIs Python.

Dans cet article je vais donc vous présenter les deux APIs qui constituent la majeure partie du site :

Spotimeta

Pour télécharger spotimeta : http://pypi.python.org/pypi/spotimeta/

L'aide de spotimeta : http://developer.spotify.com/en/metadata-api/overview/

Spotimeta est une API très simple d'utilisation et il n'y a pas beaucoup de possibilités alors vous aurez très vite compris comment elle marche.

Voici une petite démo qui fera quasiment le tour de l'API :

import spotimeta p = 1 # numéro de la page en sachant que le nombre de résultat est fixé à 100 #Donc si page = 1 vous aurez les résultats 1-100 et si page = 2 vous aurez les résultats 201 à 300 # Pas toujours très pratique #Pour chercher un titre (track) : track = `Beat it` tracks = spotimeta.search_track(track, p) #Pour chercher un album : album = `Thriller` albums = spotimeta.search_album(album, p) # Pour chercher un artiste : artist = `Michael Jackson` artists = spotimeta.search_artist(artist, p)

Voila, rien de bien compliqué.

Comment expoiter ces résultats ? C'est très simple : tracks, albums et artistes sont des dictionnaires qui fonctionnent sur le même principe :

[cc lang='python' line_numbers='false'] #Exemple pour tracks #Les infos générales #Le nombre de résultats total (s'il y a 750 résultats, vous devrez faire la rechercher avec p=7 pour accéder au dernier résultat) print tracks[total_results] #la page (p) print tracks[start_page] #Le nombre de resultats dans tracks (toujours égal à 100 pour le moment) print tracks[items_per_page] #Puis, les résultats en eux meme : for t in tracks[result]: print t[name] #Le titre print [length] #La durée en seconde print t[artist][name] #le nom de l'artiste print [album][name] #le nom de l'album [/cc]

Le code dans la boucle for change un peu quand vous utilisez search_album ou search_artist, mais le plus simple, c'est de faire un print pour afficher le contenu du dictionnaire et de choisir les informations qui vous intéressent.

Enfin, spotimeta dispose d'un autre fonction : Lookup qui sert à récupérer des informations à partir d'un lien spotify. Démonstration :

import spotimeta #le lien : q = `spotify:artist:3fMbdgg4jU18AjLCKBhRSm` #Le détail detail = 0 #détail indique la quantité d'information que vous voulez avoir en retour, par défaut 0 et 2 pour le maximum d'informations. #détail n'est pas pris en compte pour les tracks, juste pour les albums et artistes. #la recherche : info = spotimeta.lookup(q,p) #Pour l'exploiter: #le type d'objet (artist/track/album) print info[`type`] #Les informations : print info[`result`] #info[`result`] est un dictionnaire qui contiendra plus ou moins d'information en fonction du niveau détail #Par exemple, ici, mon lien correspond a Micheal Jackson, avec un detail de 0, je n'ai accès qu'a son nom et son lien spotify... #avec un detail de 2, j'ai accès à la liste complète des ses albums, leur lien etc...

Voila, je crois avoir fait le tour de l'api spotify, comme vous pouvez le constater, c'est une API très simple d'utilisation. Et ce n'est que la version 0.2 alors de nombreuses évolutions sont surement à venir.

Pylast

Pylast est une API bien plus développée et permet d'interagir avec le site lastfm.com

Pour pouvoir vous en servir, vous aurez besoin d'un compte lastfm et de deux clés pour l'api.

Pour obtenir les clés pour l'API : http://www.lastfm.fr/api/account

Pour télécharger pylast : http://code.google.com/p/pylast/

L'aide pylast : ... hum... http://www.lastfm.fr/api/ et surtout help()

Cette API étant trop développée pour vous montrer tout ce qu'on peut faire avec, je vais me contenter de montrer comment la mettre en place et sa façon de marcher.

import pylast #Vos clés : API_KEY = `............` API_SECRET = `.............` #Il faut commencer par créer la connexion avec lastfm : network = pylast.get_lastfm_network(api_key = API_KEY, api_secret = API_SECRET) #A partir de la, toutes vos requêtes passeront par network. #Pour acceder au profil d'un artiste : artist = network.get_artist(`Michael Jackson`) #La différence avec spotify, est que pylast ne vous retourne jamais de dictionnaire remplis d'informations. #Si vous faites : print artist #Vous aurez : Michael Jackson #Pour avoir accès a toutes les autres information sur Micheal Jackson (biographie, son lien lastfm, son top tracks etc...) #vous devez vous servir des méthodes correspondantes : #Pour avoir sa biographie : print artist.get_bio_content() #Pour voir toutes méthodes utilisables sur un objet utilisez help() ou dir() : help(network) help(artist) #ou dir(network) dir(artist)

Voilà, en ce qui concernent pylast, je vous conseille de vous servir de help() car vous ne trouverez rien de plus détaillé sur le web.

Supplément

Pour ceux qui ne connaitraient pas encore l'API de Google : GData, je vous conseille vraiment d'aller y jeter un œil car cette API permet d'interagir avec plusieurs services Google (notamment Youtube) avec beaucoup d'aisance car elle est simple et dispose d'une aide à l'utilisation très importante (ce qui fait plaisir de temps en temps).

Pour télécharger GData : http://code.google.com/p/gdata-python-client/

L'aide GData : http://code.google.com/apis/gdata/docs/directory.html

Si vous avez des difficultés pour utiliser une des ces APIs n'hésitez pas à poser votre question dans les commentaires, j'essaierai d'y répondre.