ka.da

Aller au contenu | Aller au menu | Aller à la recherche

graphe last.fm

Graphe last.fm (extrait)
cliquez pour voir le graphe complet

Ceci est un extrait d'un graphe représentant mon profil last.fm. Si vous voulez créer le vôtre, allez voir du côté de LastGraph (enfin de retour). L'idée de cette application est venue à Andrew Godwin après avoir découvert les graphes last.fm de Lee Byron. N'ayant pas accès au code permettant de les générer[1], il s'est mis au travail. Résultat, une bibliothèque Graphication mélangeant Python et Cairo lui permettant de générer du PDF ou du SVG.

Concernant Python et la visualisation d'informations, j'ai également découvert un blog appelé visophyte.

Notes

[1] il semble que le code permettant de générer les autres exemples soit lui disponible. C'est du Processing un langage que je découvre (plus d'infos sur Wikipedia)

petit script Python pour récupérer des listes de voisins last.fm

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

développement Python

J'ai récemment eu envie de me remettre au développement, ayant 2-3 projets dans le coin de ma tête. Et je me suis dit que j'allais me mettre à Python, langage interprété, multiplateforme et libre bien évidemment. C'est un peu le langage à la mode en ce moment[1] et après être tombé sur moults articles en traitant[2] et projets l'utilisant[3], je me suis décidé.
Je me suis également intéressé à la problématique de gestion de version pour gérer un projet informatique, surtout à plusieurs. CVS en est le représentant historique dans le monde du logiciel libre, mais depuis peu une foule de nouveaux outils sont apparus[4], et après un bref passage du côté de Mercurial, je me suis finalement décidé sur Subversion dont l'approche et le mode centralisé sont plus simples à appréhender.

Voici donc une série de ressources que j'ai retenu pour le développement en Python et l'utilisation de Subversion:

Vous en voulez plus ? allez voir l'article Cours pour apprendre Python sur biologeek.org pour plus de liens.

  • les outils ensuite :
    • Eclipse est un IDE écrit en Java et initialement prévu pour ce langage, mais qui à l'aide de nombreux plugins s'adaptent à d'autres langages. Essayez-le et appréciez;
    • Pydev est le plugin pour développer en Python avec Eclipse, et une doc;
    • Subclipse quant à lui est le plugin pour travailler avec Subversion;
    • la société Edgewall met à disposition un très bon outil pour gérer un projet basé sur Subversion, c'est Trac[6], mais elle propose également une Python Sidebar pour avoir dans votre navigateur favori la référence Python directement accessible.

J'ai parcouru ensuite le web de tutoriel en tutoriel pour réussir à installer de façon satisfaisante Subversion + Trac sur ma Debian mais ceux que j'ai trouvé marchaient plus ou moins bien[7] , jusqu'à celui-ci Installer et configurer Apache2, Trac et Subversion sur Ubuntu sur Prendre Un Café. Il concerne Ubuntu mais marche tout aussi bien pour Debian testing/etch.

update : je viens à peine de finir ce billet que je tombe sur un tuto Eclipse pour le développement web, PHP et Python sous Dapper. Pour Debian, j'ai eu des problèmes pour installer un plugin (Pydev il me semble) parce que la dernière version proposée était la 3.1 et qu'il me fallait la 3.2.

Notes

[1] mais j'aurais également pu choisir Ruby pour cette même raison :)

[2] dont Pourquoi programmer en Python ? sur biologeek.org

[3] dont Xen ou tout au moins sont interface d'administration, n'est pas le moindre

[4] voir une liste

[5] apt-get install diveintopython

[6] outil proposant un Wiki, un browser du code, un gestionnaire de tickets,... Il est utilisé par Dotclear notamment

[7] je parle de ceux de destination-linux.org, PrO²jects, xhtml.net, ou le site de Trac. Ils sont peut-être corrects mais je les ai trouvés moins directs que celui de Prendre Un Café...