Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 08/09/2007, à 12:43

mulima

mpd : playlist dynamique

bonjour

J'ai écris un script python qui permet de compléter dynamiquement la liste de lecture courante de mpd

Le principe est d'interroger last.fm (audioscrobbler) sur l'artist en cours et de récupérer les suggestions associées. Ensuite pour chaque suggestion, le script cherche dans les morceaux de la bibliothèque les correspondances et les ajoute a la file d'attente

Ca permet donc d'avoir de la music en continu sur le même genre que ce qui est en cours ...

Recupérer le script :

svn co "http://mumumat.no-ip.com/svn/trunk/mpd_dynamic_playlister" mpd_dynamic_playlister

Installer en plus

sudo apt-get install python-elementtree

L'executer:

cd mpd_dynamic_playlister
python dynamic_playlister.py

je n'ai pas encore reussi a le faire fonctionner en daemon, donc pour le lancer en le decrochant de votre shell (en tache de fond, donc ...)

nohup python dynamic_playlister.py &

Ne connaissant pas encore bien python , tout aide sera la bienvenue pour l'améliorer

Merci pour vos retours :-)


edit : j'ai maj de l'url du checkout .. p'tite erreur
edit2: script mis a jour , verification de la presence de mpc
edit3: suppression des appels bash en utilisant la lib mpdclient2 :-)
edit 4 : le script fonctionne maintenant a distance + un fichier de config est créé

Dernière modification par mulima (Le 09/02/2008, à 08:48)

Hors ligne

#2 Le 08/09/2007, à 12:52

CasseTaTele

Re : mpd : playlist dynamique

ça plantouille (j'ai essayé avec (p) pour permanant mais ça plante aussi ):

sebastien@sebastien-desktop:~$ svn co "https://mumumat.no-ip.com/trac/browser/trunk/mpd_dynamic_playlister" mpd_dynamic_playlister
Erreur de validation du certificat du serveur pour 'https://mumumat.no-ip.com:443' :
 - Le certificat n'est pas signé pas une autorité de confiance.
   Valider le certificat manuellement !
Informations du certificat :
 - nom d'hôte : mumumat.no-ip.com
 - valide de Mon, 28 May 2007 12:07:17 GMT à Tue, 27 May 2008 12:07:17 GMT
 - signataire : MULIMA, MULIMA, BORDEAUX, FRANCE, FR
 - empreinte : e1:34:39:9d:a4:9f:c1:47:90:d3:95:dc:45:d3:e1:71:0a:57:33:43
(R)ejet, acception (t)emporairement ou (p)ermanente ? t
svn: Échec de la requête PROPFIND sur '/trac/browser/trunk/mpd_dynamic_playlister'
svn: PROPFIND de '/trac/browser/trunk/mpd_dynamic_playlister': 200 OK (https://mumumat.no-ip.com)

Edit:
mais ça marche en copiant/collant cette adresse dans firefox:
https://mumumat.no-ip.com/trac/browser/trunk/mpd_dynamic_playlister ...
....oups non quand je fais enregistrer 'la cible du lien sous'  ça m'enregistre une page html et pas du python,
j'aurais bien copier/coller le code mais ya les numéros de ligne et j'ai la flemme pour le moment smile

Dernière modification par CasseTaTele (Le 08/09/2007, à 12:58)

Hors ligne

#3 Le 08/09/2007, à 13:00

mulima

Re : mpd : playlist dynamique

ya ce lien qui permet d'obtenir un zip du dossier complet
https://mumumat.no-ip.com/trac/changese … format=zip

Dernière modification par mulima (Le 08/09/2007, à 13:01)

Hors ligne

#4 Le 08/09/2007, à 13:07

CasseTaTele

Re : mpd : playlist dynamique

euhh... ça marque ça en haut de la console (devenue noire) mais y se passe rien :

Every 60,0s: python dynamic_playlister.py                                                                                            Sat Sep  8 14:05:41 2007

en même temps comment on lit lastfm avec mpd ? faut faire quelquechose avant de lancer le script (pendant,après,...) ?

quand je quitte avec ctrl+c ça met ça (si ça aide) :

Traceback (most recent call last):
                                    File "dynamic_playlister.py", line 13, in <module>
                                                                                          import audioscrobbler
                                                                                                                 File "/home/sebastien/Desktop/mpd_dynamic_playlister/lib/audioscrobbler.py", line 273, in <module>
sebastien@sebastien-desktop:~/Desktop/mpd_dynamic_playlister$  elementtree.ElementTree import ElementTree
sebastien@sebastien-desktop:~/Desktop/mpd_dynamic_playlister$

Dernière modification par CasseTaTele (Le 08/09/2007, à 13:11)

Hors ligne

#5 Le 08/09/2007, à 13:12

mulima

Re : mpd : playlist dynamique

as tu installé mpc ?... j'ai oublié de le mentionner  :-s

sudo apt-get install mpc

edit : ca n'est plus la peine maintenant

Dernière modification par mulima (Le 09/09/2007, à 10:00)

Hors ligne

#6 Le 08/09/2007, à 13:34

CasseTaTele

Re : mpd : playlist dynamique

euh.. effectivement je ne l'avais pas installé, par contre ça change rien ... ça marche toujours pas !
mais j'ai jamais écouté lastfm avec mpd avant, alors faut me dire déjà comment on fait ,
à moins que ton script fasse vraiment tout ... mais dans ce cas quelle musique écoute t'il depuis lastfm, je comprend pas ...

Dernière modification par CasseTaTele (Le 08/09/2007, à 13:36)

Hors ligne

#7 Le 08/09/2007, à 13:39

mulima

Re : mpd : playlist dynamique

y a t il un message d'erreur ...?

le principe s'est de recupere le morceau que mpd est en train de jouer
puis de demander a lastfm une liste d' artists equivalents
et si parmis ces resultats il trouve dans ta bibliotheque des equivalence, il les ajoutes a ta playlist

Dernière modification par mulima (Le 08/09/2007, à 13:43)

Hors ligne

#8 Le 08/09/2007, à 15:52

CasseTaTele

Re : mpd : playlist dynamique

voila le message d'erreur obtenu:

sebastien@sebastien-desktop:~/Desktop/mpd_dynamic_playlister$ watch -n60 'python dynamic_playlister.py' 
Traceback (most recent call last):
                                    File "dynamic_playlister.py", line 13, in <module>
                                                                                          import audioscrobbler
                                                                                                                 File "/home/sebastien/Desktop/mpd_dynamic_playlister/lib/audioscrobbler.py", line 273, in <module>
                                                               from elementtree.ElementTree import ElementTree
                                                                                                              ImportError: No module named elementtree.ElementTree
sebastien@sebastien-desktop:~/Desktop/mpd_dynamic_playlister$

j'ai essayé de jouer un morceau sur mpd en utilisant sonata , après j'ai lancé le script mais arrivé à la fin sonata a rejoué le morceaux courant
sinon idem en pilotant depuis la console avec mpc

Hors ligne

#9 Le 08/09/2007, à 18:19

pmd

Re : mpd : playlist dynamique

En fait, j'ai pas bien compris à quoi ça servait hmm
Ca récupère les chanson sur last.fm ? Ou après, il faut avoir les chanson suggéré par last.fm ?

Hors ligne

#10 Le 08/09/2007, à 18:27

mulima

Re : mpd : playlist dynamique

un exemple:
tu ecoute un morceau de bob marley
le script va obtenir de lastfm un liste d'artists similaires
donc par exemple
peter tosh
burning spear
steel pulse
etc....

si dans ta bibliotheque tu possedes des titres de ces artistes ils seront ajouté a ta playlist courante


en lancant le script regulierement ta playlist sera completée progressivement en fonction des suggestions et de ce que tu possedes

est ce plus clair comme cela ?

Hors ligne

#11 Le 08/09/2007, à 23:03

pmd

Re : mpd : playlist dynamique

Ouai, beaucoup plus clair smile
Donc si j'ai un morceau de rap, il pourra toujours aller chercher sur last.fm, j'écouterai toujours la même chanson. C'est un peu inutile d'après moi.

Par contre, je découverts un fonction de last.fm big_smile

Hors ligne

#12 Le 08/09/2007, à 23:24

mulima

Re : mpd : playlist dynamique

je pige pas ce que tu dis la ...

ya plein de lecteur qui font ca
listen, exaile, amarok

mais mpd n'a pas cette fonctionnalié ... et moi j'aime bien ne pas être obligé de remplir souvent la playlist, donc j'essai (en apprenant le python au passage) de coder ca ...


un (autre) exemple
http://www.lastfm.fr/music/Beastie+Boys/+similar

Hors ligne

#13 Le 09/09/2007, à 09:12

CasseTaTele

Re : mpd : playlist dynamique

j'ai toujours la meme erreur,
je crois qu'il me manque un truc: "ImportError: No module named elementtree.ElementTree"

Hors ligne

#14 Le 09/09/2007, à 09:57

mulima

Re : mpd : playlist dynamique

j'ai mis le script a jour

pour cette erreur c'est une dependance manquante, autant pour moi :-)

 sudo apt-get install python-elementtree

merci pr tes retours en tout cas ! :-)

Dernière modification par mulima (Le 09/09/2007, à 09:58)

Hors ligne

#15 Le 09/09/2007, à 10:13

CasseTaTele

Re : mpd : playlist dynamique

j'ai téléchargé la dernière version du script, cette fois ça a marché:

sebastien@sebastien-desktop:~/Desktop/mpd3$ svn co "https://mumumat.no-ip.com/svn/trunk/mpd_dynamic_playlister" mpd_dynamic_playlister
A    mpd_dynamic_playlister/dynamic_playlister.py
A    mpd_dynamic_playlister/lib
A    mpd_dynamic_playlister/lib/audioscrobbler.py
Révision 13 extraite.

par contre ça plante à l'execution:

sebastien@sebastien-desktop:~/Desktop/mpd3/mpd_dynamic_playlister$ python dynamic_playlister.py
Traceback (most recent call last):
  File "dynamic_playlister.py", line 17, in <module>
    import daemonize
ImportError: No module named daemonize

il manque encore quelquechose ...

EDIT:
j'ai créé un fichier nommé daemonize.py sous la racine et j'ai copier ce texte : http://code.djangoproject.com/browser/d … format=txt

maintenant j'ai cette erreur :

sebastien@sebastien-desktop:~/Desktop/mpd3/mpd_dynamic_playlister$ python dynamic_playlister.py
Traceback (most recent call last):
  File "dynamic_playlister.py", line 18, in <module>
    import mpdclient2
ImportError: No module named mpdclient2

EDIT2:
j'ai donc téléchargé ça
et maintenant j'ai cette erreur:

sebastien@sebastien-desktop:~/Desktop/mpd3/mpd_dynamic_playlister$ python dynamic_playlister.py
Traceback (most recent call last):
  File "dynamic_playlister.py", line 24, in <module>
    conn = mpdclient2.connect()
  File "/home/sebastien/Desktop/mpd3/mpd_dynamic_playlister/mpdclient2.py", line 335, in connect
    conn = mpd_connection(host, port)
  File "/home/sebastien/Desktop/mpd3/mpd_dynamic_playlister/mpdclient2.py", line 293, in __init__
    self.talker = socket_talker(host, port)
  File "/home/sebastien/Desktop/mpd3/mpd_dynamic_playlister/mpdclient2.py", line 22, in __init__
    self.sock.connect((host, port))
  File "<string>", line 1, in connect
socket.gaierror: (-5, 'No address associated with hostname')

de rien, ça m'intéresse aussi comme script, merci à toi de développer ça smile

Dernière modification par CasseTaTele (Le 09/09/2007, à 10:21)

Hors ligne

#16 Le 09/09/2007, à 10:32

mulima

Re : mpd : playlist dynamique

python-mpdclient doit manquer ...

sudo apt-get install python-mpdclient

et je vire le daemonize c pas encore pret ... donc ca sert a rien

on peut p'tet se retrouver sur irc, sur freenode
je suis sur #mpd ...

Dernière modification par mulima (Le 09/09/2007, à 10:35)

Hors ligne

#17 Le 09/09/2007, à 10:38

CasseTaTele

Re : mpd : playlist dynamique

mulima a écrit :

on peut p'tet se retrouver sur irc, sur freenode
je suis sur #mpd ...

euh peut etre ce soir,
là il faut que je parte, je suis invité smile
sinon dans le même style que la fonction de similarité de lastfm ya ce site: http://www.music-map.com/
qui ne permet pas d'écouter mais de naviguer d'artiste en artiste par proximité musicale. (par contre je sais pas comment récupérer automatiquement l'info à parti de ce site ...)

Hors ligne

#18 Le 09/09/2007, à 11:09

mulima

Re : mpd : playlist dynamique

et ca ne marche toujours pas ...? :s

Hors ligne

#19 Le 09/09/2007, à 11:15

CasseTaTele

Re : mpd : playlist dynamique

Si ça roule !! lol

sebastien@sebastien-desktop:~/Desktop/mpd14/mpd_dynamic_playlister$  python dynamic_playlister.py


        ** MPD dynamic playlister  *



Playing : 'Joe Henderson'
        Suggestion 0 : 
                'Wes Montgomery'
        Added to playlist:
                Jazz/Classic Jazz/Guitar/Wes Montgomery (9)/Wes Montgomery - (1992) The Complete Riverside Recordings/Wes Montgomery - (1992) The Complete Riverside Recordings (CD 1)/04. Missile Blues (Take 5).mp3
        Suggestion 1 : 
                'John Coltrane'
        Added to playlist:
                Jazz/Classic Jazz/Saxophone/John Coltrane (59)/1961 - Complete 1961 Village Vanguard Recordings (4CD)/Disk 1/03-Impressions.mp3
        Suggestion 2 : 
                'Mal Waldron'
        Added to playlist:
                Jazz/Classic Jazz/Saxophone/Archie Shepp (37)/2002 - Archie Shepp & Mal Waldron - Left Alone Revisited/07-Blues For 52Nd Street.mp3

--> Max suggest reach !
Waiting 40 seconds more before another check

Hors ligne

#20 Le 09/09/2007, à 11:18

CasseTaTele

Re : mpd : playlist dynamique

oups plantage ...

Waiting 40 seconds more before another check

Playing : 'Nancy Sinatra'
        Suggestion 0 : 
                'Shirley Bassey'
        Added to playlist:
                Divers/La musique de paris dernière (3)/la musique de paris dernière - volume 2/12. Shirley Bassey And 12 Tree - Light My Fire.mp3
Traceback (most recent call last):
  File "dynamic_playlister.py", line 118, in <module>
    search_results=search(suggest.text)
  File "dynamic_playlister.py", line 45, in search
    for item in conn.search('artist',suggest):
  File "/var/lib/python-support/python2.5/mpdclient2.py", line 173, in <lambda>
    return lambda *args: self.send_n_fetch(cmd, args)
  File "/var/lib/python-support/python2.5/mpdclient2.py", line 176, in send_n_fetch
    getattr(self.sender, cmd)(*args)
  File "/var/lib/python-support/python2.5/mpdclient2.py", line 207, in <lambda>
    return lambda *args: send_command(self.talker, cmd, args)
  File "/var/lib/python-support/python2.5/mpdclient2.py", line 162, in send_command
    args[i] = escape(str(arg))
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 1: ordinal not in range(128)
sebastien@sebastien-desktop:~/Desktop/mpd14/mpd_dynamic_playlister$

Hors ligne

#21 Le 09/09/2007, à 11:44

mulima

Re : mpd : playlist dynamique

c'est quand mm une bonne nouvelle !

v lui faire la peau a ce bug ;-)
merci

edit : fixé (un peu sale mais ca crash plus)

Dernière modification par mulima (Le 09/09/2007, à 13:31)

Hors ligne

#22 Le 10/09/2007, à 18:04

CasseTaTele

Re : mpd : playlist dynamique

j'ai téléchargé et essayé la dernière version (révision 21) ça plante aussi:

Waiting 60 seconds more before another check

Playing : 'Dj Krush'
        Suggestion 0 : 
                'David Holmes'
        Added to playlist:
                Electronic/Kruder & Dorfmeister (4)/Kruder & Dorfmeister - K&D Sessions/Cd 2/01. David Holmes - Gone.mp3
        Suggestion 1 : 
                'Gus Gus'
        Added to playlist:
                Trip Hop/Thievery Corporation (5)/Thievery Corporation - Abductions & Reconstructions/10. Polyesterday (Gus Gus).mp3

--> Max suggest reach !
Waiting 120 seconds more before another check
Traceback (most recent call last):
  File "dynamic_playlister.py", line 118, in <module>
    if check_suggest_needed()==0:
  File "dynamic_playlister.py", line 85, in check_suggest_needed
    current_song=conn.currentsong()
  File "/var/lib/python-support/python2.5/mpdclient2.py", line 173, in <lambda>
    return lambda *args: self.send_n_fetch(cmd, args)
  File "/var/lib/python-support/python2.5/mpdclient2.py", line 184, in send_n_fetch
    return self.fetcher.one_object(keywords, type)
  File "/var/lib/python-support/python2.5/mpdclient2.py", line 232, in one_object
    self.talker.get_line()
  File "/var/lib/python-support/python2.5/mpdclient2.py", line 32, in get_line
    raise EOFError
EOFError
sebastien@sebastien-desktop:~/Desktop/mpd15/mpd_dynamic_playlister$

Juste une suggestion, je connais pas le python, mais en c++ tu peux encadrer tes fonction de try / catch pour gérér les erreurs, si par exemple ça plante à cause d'un mp3 mal tagué (cas qui arrivera toujours) et ben il n'a qu'à en choisir un autre plutot que de planter...

Hors ligne

#23 Le 10/09/2007, à 18:36

CasseTaTele

Re : mpd : playlist dynamique

autre bug ...

sebastien@sebastien-desktop:~/Desktop/mpd15/mpd_dynamic_playlister$ python dynamic_playlister.py


        ** MPD dynamic playlister  *



Playing : 'DJ Krush'
        Suggestion 0 : 
                'Zero 7'
        Added to playlist:
                Trip Hop/Zero 7/Zero 7 - Simple Things/09 - Out of Town.mp3
Error searching mpd library forRöyksopp
Traceback (most recent call last):
  File "dynamic_playlister.py", line 135, in <module>
    search_results=search(suggest.text)
  File "dynamic_playlister.py", line 57, in search
    logit("Error searching mpd library for"+suggest)
  File "dynamic_playlister.py", line 102, in logit
    fp.write('\n'+str)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xf6' in position 33: ordinal not in range(128)
sebastien@sebastien-desktop:~/Desktop/mpd15/mpd_dynamic_playlister$

je suis sous irc: freenode->#mpd si tu veux

Hors ligne

#24 Le 10/09/2007, à 20:09

mulima

Re : mpd : playlist dynamique

oui j'ai noté ces bugs .. pas eu le temps de les corriger encore  :-)

Hors ligne

#25 Le 11/09/2007, à 22:22

mulima

Re : mpd : playlist dynamique

j'ai apporté quelques corrections ... est ce mieux maintenant ..?

Hors ligne