Skip navigation.

devloop :: blog

Blog sur la sécurité informatique, la programmation, Linux et le Web

Lire votre musique d'Imeem.com dans Amarok ou VLC

, , , , , ,

Après l'implémentation de l'API officielle de Imeem.com puis de son API cryptographique, je boucle (normalement) la série avec un code qui permettra de lire les flux FLV depuis votre lecteur multimédia favori pour peu qu'il supporte le format XSPF (qu'Amarok et VLC semblent utiliser par défaut).

Avant de m'y mettre, j'aurais passé pas mal de temps à faire un script capable de détecter les tags mal encodés sur Imeem et de les corriger.
Typiquement on retrouve soit des données en UTF-8 qui semblent avoir été avalées comme du ISO-8859-1 (dans ce cas on a deux caractères originaux pour le prix d'un seul) ou un tag ISO-8859-1 interprété comme du UTF-8 avec le caractère de remplacement unicode à la place des accents :bomb:

Dans le premier cas il suffisait (après un arrachage de cheveux) de récupérer les tags mal codés en UTF-8, les réencoder comme si c'était de l'ISO-8859-1 et les renvoyer sur le serveur.
Pour le second cas, comme il est impossible de retrouver l'accent original, on demande la saisie au clavier du bon tag et on l'envoit pour modification au serveur :idea:
Voir le fichier correct_unicode.py dans l'archive.

Pour la lecture des flux je n'avais pas envie de m'embêter à faire mon propre frontend à mplayer comme pour Anywhere.FM surtout que rajouter des modules (soumission Last.FM, changement de status sur la messagerie...) ça rajoute du boulot :insane:
La solution a consisté à faire un programme qui extrait une librairie personelle de Imeem.com et l'enregistre sous la forme d'une liste de lecture au format XSPF :up:
Le résultat est plutôt agréable car ce format de playlist intégre les méta-informations (album, titre de la piste, nom de l'artiste, durée, url de la vignette de l'album, url d'information...). Amarok n'a pas eu l'air d'être complètement au point sur ce format lors de mes tests mais VLC fonctionne parfaitement avec.
Il existe même une extension VLC du format XSPF pour ceux qui voudraient faire des modifications.

Dernier problème : les urls des flux FLV sont à usage unique. Dans la playlist XSPF on retrouve alors des adresses de flux du style "http://localhost:3128/sBrCXnRPUt" avec l'ID de la chanson comme page demandée. J'ai écris un mini serveur HTTP qui se charge de générer une url vers le FLV correspondant et qui répond avec un HTTP 302 (Moved temporarily) quand le lecteur va chercher la musique :smile:



L'archive avec les nouveaux codes est ici : imeem_xspf.zip

Killed by a mumak, while reading a bookQuatre ans

Comments

Anonymous 17. May 2009, 13:42

balrok writes:

hello, i just want to note down here, that your blogposts of imeem were really helpful for me.. now i learned how to decompile swfs (i had the same problem, that i haven't found a good decompiler - but i tried that one, which you used - and it's output really looks good)
and also refreshed some french-skills (i haven't spoken/read french since 3 years now - but i think i understand over 90% of your text :) )
my other problem with imeem was just, that i didn't know that it also provides a json-api, which is _much_ easier than the amf api ^^

so again thanks, i hope i get my french skills high enough to read more of your blog - your posts are looking quite interesting :)

ps: what i don't understand where did you found "your mom is a whore" in the code? i haven't found it.. or was this just a joke which i don't understood? ^^

Anonymous 18. May 2009, 18:27

balrok writes:

hello, sorry for doubleposting, but maybe you're interested in the code i got after i removed everything which seemed unneeded for pure link-generation
through that i could get rid of the random-functions and through another way of the xtea-implementation i also could get rid of the numpy-module
http://pastebin.com/f17717d9d
i think at least the other xtea-algorithm can be interesting for you

devloop 28. May 2009, 17:09

Hello !
Sorry I'm late for a response...
"Your mom is a whore" is a key found in the code... but it only appears with one of the flash decompilers somebody talked me about, I gived a link to this one in another post.
But when I tried to use it in my code it doesn't work... so maybe it's a fake apikey...

How to use Quote function:

  1. Select some text
  2. Click on the Quote link

Write a comment

Comment
(BBcode and HTML is turned off for anonymous user comments.)

If you can't read the words, press the small reload icon.


Smilies