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