petit script Python pour récupérer des listes de voisins last.fm
Par eric le jeudi, novembre 23 2006, 17:02 - InformatiqueEtGeekeries - Lien permanent
Pour ceux qui ne connaissent pas encore Last fm : (présentation rapide) c'est une communauté pour tous ceux qui aiment et écoutent de la musique. Vous vous créez un compte, vous configurez votre lecteur de musique favori avec ce compte, et ensuite ce que vous écoutez apparait sur votre profil last.fm... voilà pour le début, ensuite vous pouvez tagger les morceaux, artistes écoutés, rejoindre ou créer des groupes, écrire des journaux, découvrir de la musique grâce à vos voisins, et grâce aux radios disponibles sur le site....... bref, plein de possibilités mais je vous conseille d'aller lire la FAQ si vous voulez plus d'informations.
Tout ça pour dire que ça fait déjà un an et demi que je m'y suis inscrit, que j'ai déjà "scrobblé" près de 5000 morceaux, que j'ai quelques "amis" et une multitude de voisins, que je suis abonné à 63 groupes exactement mais que c'est en constante évolution[1] et que j'ai voulu essayer de voir si sur un groupe donné, on retrouvait les mêmes voisins parmi les membres. J'ai donc écrit un petit script Python qui, même si il n'est pas parfait (cf TODO) a le mérite de faire ce qu'on lui demande.
#! /usr/bin/python -tt
## TODO ##
# recuperation de la liste des membres d'un groupe
# rendre le script portable en enlevant l'appel a wget
import os
import re
# liste à compléter
membres = ['gal33Za']
for membre in membres:
os.system('wget http://ws.audioscrobbler.com/1.0/user/%s/neighbours.txt -O voisins-%s'%(membre,membre))
fichiers = ['voisins-'+x for x in membres ]
voisins = {}
for fichier in fichiers:
f = open(fichier, "r")
for line in f.readlines():
v, voisin = line.split(",")
voisin = voisin[:-1]
if voisin in voisins:
voisins[voisin] = voisins[voisin] + 1
else:
voisins[voisin] = 1
#endfor
f.close
#endfor
# pour afficher avant tri
#for key, value in voisins.iteritems():
# print str(value) + " : " + str(key)
### tri de dictionnaire
### cf http://aspn.activestate.com/ASPN/Python/Cookbook/Recipe/52306
voisinsRanges = sorted(voisins.items(), key=lambda (k,v): (v,k), reverse=True)
for voisin in voisinsRanges:
nom, nombre = voisin;
# pour générer une liste simple
#print str(nom) + " : " + str(nombre)
# pour générer du BBcode
print "[url=http://www.last.fm/user/" + str(nom) + "]" + str(nom) + "[/url] : " + str(nombre)
# pour générer du HTML
#print "<a href=\"http://www.last.fm/user/" + str(nom) + "\">" + str(nom) + "</a> : " + str(nombre)
#endfor
# endscript
ps : je ne sais pas si ça vous a intéressé, mais en tout cas, ça prouve que je ne suis pas mort...
Notes
[1] le nombre de groupes existants est énorme et il y en a pour tous les goûts : des musicaux (Post-Rock Instrumental, Godspeed You! Black Emperor, radiohead, Mogwai, Noir Desir, Constellation Records, Indie and Alternative...), des géographiques (France, EU), des "geeks" (Amarok Users, Debian Linux, jabber, Vi (oui, le bon vieux troll vi vs emacs se retrouve également sur last.fm), des "politiques" (I Still Buy CDs, Music fans and Musicians against the RIAA, I don't have an iPod, Shove your DRM up your ass, NO 2 ID, I Hate Football) ou conceptuels dont certains dont le nom seul oblige à s'inscrire (I Don't Mean To Come Off As A Music Snob, I Grew Up In A Small Town and Suprisingly I Listen to Good Music!, Non aux Red Hot en tête de Charts, , The Black Background Users, People who join too many groups) etc, etc, etc
Commentaires
C'est quoi l'intérêt d'appartenir à tel ou tel groupe ?
L'intérêt ??? Et bien, ça dépend, soit faire partie de telle ou telle communauté, augmenter le nombre d'inscrits et donc d'utilisateurs (par ex. pour un logiciel Debian, Ubuntu, Amarok), influencer ainsi les stats en fonction de tes goûts, pouvoir discuter de choses qui t'intéresse, exprimer tes gouts et tes couleurs et tes opinions plus ou moins politiques, t'amuser (l'exemple des groupes The Black Background Users et The Red Background Users), etc, etc, etc.
En fait, en suivant l'exemple de mon ami "l'ombre", quand je tombe sur le profil de quelqu'un, je regarde ses groupes, ça me permet de connaitre un peu ses gouts et sa personnalité et me permet de trouver de nouveaux groupes qui me plaisent et auquels je m'inscris... tout simplement...
Tu peux également en créer (je l'ai fait pour 5 groupes dont eucd.info et Canal B) pour t'amuser.
En clair, pas réellement d'intérêt à moins d'utiliser last.fm pas seulement comme un outil statistique et une webradio mais comme une communauté de mélomanes ou tu croises des gens, tu vas dans des bars^Wgroupes pour rencontrer d'autre personnes, etc...
Regarde également les groupes de mak, il en a trouvé certains qui lui correspondent bien :)