#1 Le 10/02/2011, à 15:00
- masterbox
[PLUGIN RHYTHMBOX] synchronisation de vos notes dans vos fichiers MP3
Bonjours à tous !
Premier post ici, pour vous signaler la mise à disposition d'un petit plugin que j'ai développé que vous trouverez ici :
http://utopievirtuelle.wordpress.com/20 … rhythmbox/
Il permet de synchroniser les notes que vous avez appliquées sous Rhythmbox dans les tags de vos fichers MP3. C'est notamment utile pour les retrouver dans XBMC (mon objectif) mais aussi sous banshee (dont j'utilise la signature pour être compatible)
Merci de vos retours ici même ou sur mon blog !
PS : suis-je dans la bonne catégorie ?
MasterBOX
------------------------------------------------------------------------------------
Mon blog, avec mes créations sur Ubuntu et ma vision du futur :
http://utopievirtuelle.wordpress.com
Hors ligne
#2 Le 10/02/2011, à 19:02
- Vysserk3
Re : [PLUGIN RHYTHMBOX] synchronisation de vos notes dans vos fichiers MP3
Salut,
Merci ca peut effectivement être très pratique (même si théoriquement, on ne devrait pas stocker ce genre d'infos dans les fichiers, mais utilisé la bd du logiciel en question, l'ennui c'est qu'aucun lecteur audio ne fait les choses de la même manière pour stocker l'information, d'où un problème effectivement de compatibilité).
Un truc qui serait pas mal que j'avais voulu faire à une époque, mais là tu as déjà fait un truc complet donc autant te demander, c'est par exemple lorsqu'on déplace un fichier audio sur le disque, on perd les ratings aussi sous Rhythmbox (car le rating est stocké dans rhythmboxdb.xml et que le chemin absolu du fichier sert d'identifiant). L'idée serait de pouvoir à partir d'un rhythmboxdb.xml source transformer un rhythmboxdb.xml destination dans lequel les fichiers ont vu leur chemin absolu changer...
Hors ligne
#3 Le 10/02/2011, à 19:17
- masterbox
Re : [PLUGIN RHYTHMBOX] synchronisation de vos notes dans vos fichiers MP3
Et bien avec ce plugin tu peux récupérer tous tes ratings, il suffit de les synchroniser avant déplacement, puis après.
Je sais que la plupart des logiciels sont contre le stockage dans le fichier, pour plusieurs raisons :
- si le fichier est partagé, on partage aussi les notes, qui sont plutôt personnelles
- ils n'aiment pas trop jouer avec les tags mp3...
mais ces arguments sont contournables, le 1er car on peut avoir plusieurs tag popm, avec un identifiant par personne, il faudrait juste se donner la peine de choisir le bon...
En tout cas je t'invite a tester la synchro pour ton problème, et de me dire si cela fonctionne comme tu le souhaites.
MasterBOX
------------------------------------------------------------------------------------
Mon blog, avec mes créations sur Ubuntu et ma vision du futur :
http://utopievirtuelle.wordpress.com
Hors ligne
#4 Le 10/02/2011, à 19:27
- Vysserk3
Re : [PLUGIN RHYTHMBOX] synchronisation de vos notes dans vos fichiers MP3
Et bien avec ce plugin tu peux récupérer tous tes ratings, il suffit de les synchroniser avant déplacement, puis après.
Je sais que la plupart des logiciels sont contre le stockage dans le fichier, pour plusieurs raisons :
- si le fichier est partagé, on partage aussi les notes, qui sont plutôt personnelles
- ils n'aiment pas trop jouer avec les tags mp3...mais ces arguments sont contournables, le 1er car on peut avoir plusieurs tag popm, avec un identifiant par personne, il faudrait juste se donner la peine de choisir le bon...
En tout cas je t'invite a tester la synchro pour ton problème, et de me dire si cela fonctionne comme tu le souhaites.
J'essayerai à l'occasion, j'ai plus de fichiers .ogg et .flac par contre que de fichiers .mp3
Hors ligne
#5 Le 10/02/2011, à 19:30
- masterbox
Re : [PLUGIN RHYTHMBOX] synchronisation de vos notes dans vos fichiers MP3
oui, c'est dans la liste des améliorations a apporter ;-)
MasterBOX
------------------------------------------------------------------------------------
Mon blog, avec mes créations sur Ubuntu et ma vision du futur :
http://utopievirtuelle.wordpress.com
Hors ligne
#6 Le 10/02/2011, à 19:33
- Vysserk3
Re : [PLUGIN RHYTHMBOX] synchronisation de vos notes dans vos fichiers MP3
Tiens, je vais regarder un peu ton code
Du détail, mais au lieu de faire :
if (pathSong[-4:] == ".mp3") or (pathSong[-4:] == ".MP3")
je ferai :
if ( pathSong[-4:].lower() == ".mp3".lower() )
Ca te permettra de catcher les mP3 ou Mp3 par exemple (insensible à la casse)
Dernière modification par Vysserk3 (Le 10/02/2011, à 19:34)
Hors ligne
#7 Le 10/02/2011, à 19:52
- masterbox
Re : [PLUGIN RHYTHMBOX] synchronisation de vos notes dans vos fichiers MP3
Alors là je suis preneur de ce genre de conseil, car python n'est vraiment pas ma langue d'origine ;-)
de plus j'ai repris le code d'un autre plugin, en y ajoutant mes propres monstruosités...
je note tes conseils! Merci!
MasterBOX
------------------------------------------------------------------------------------
Mon blog, avec mes créations sur Ubuntu et ma vision du futur :
http://utopievirtuelle.wordpress.com
Hors ligne
#8 Le 10/02/2011, à 19:58
- samfuzz
Re : [PLUGIN RHYTHMBOX] synchronisation de vos notes dans vos fichiers MP3
l'ennui c'est qu'aucun lecteur audio ne fait les choses de la même manière pour stocker l'information, d'où un problème effectivement de compatibilité).
il y a une récente spécification, pour les tags "rating" et "playcount" qui permettrait justement d'harmoniser l'écriture des tags dans les fichiers audio:
FMPS, or Free Music Player Specs, an effort to have workable cross-player compatibility for difficult fields like rating and playcount
http://www.freedesktop.org/wiki/Specifi … ayer-specs
http://gitorious.org/xdg-specs/xdg-spec … cation.txt
amarok la supporte déja partiellement, clementine en lecture seule pour l'instant, quodlibet devrait la supporter, gmusicbrowser la supporte completement et peut-etre banshee (voir rapport de bug https://bugzilla.gnome.org/show_bug.cgi?id=602158
--> ça serait pas mal d'adapter ce greffon à ces specs
Dernière modification par samfuzz (Le 10/02/2011, à 20:11)
Hors ligne
#9 Le 10/02/2011, à 20:02
- masterbox
Re : [PLUGIN RHYTHMBOX] synchronisation de vos notes dans vos fichiers MP3
Merci je vais y jeter un coup d'oeil, mais je privilégie la compatibilité avec xbmc pour l'instant. mais s'il s'agit d'un nouveau tag, rien n'empêche de synchroniser les 2 type de tags...
MasterBOX
------------------------------------------------------------------------------------
Mon blog, avec mes créations sur Ubuntu et ma vision du futur :
http://utopievirtuelle.wordpress.com
Hors ligne
#10 Le 11/02/2011, à 13:30
- Vysserk3
Re : [PLUGIN RHYTHMBOX] synchronisation de vos notes dans vos fichiers MP3
masterbox, d'après http://live.gnome.org/RhythmboxPlugins/ … ption_File :
The name of the module to load. If you are writing a C plugin, Rhythmbox will look for "module.so". If you are writing a Python plugin, Rhythmbox will look for a directory called "module" with a __init__.py file inside, or "module.py" (the former is better).
Il faudrait mieux avoir un fichier __init__.py dans le dossier que tu devrais alors renommer en saveTAGRating
Hors ligne
#11 Le 11/02/2011, à 14:57
- Vysserk3
Re : [PLUGIN RHYTHMBOX] synchronisation de vos notes dans vos fichiers MP3
Un autre petit problème (dans le deactivate du plugin) :
def deactivate(self, shell):
uim = shell.get_ui_manager()
self.action_group = None
uim.remove_ui (self.ui_id)
uim.remove_action_group (self.action_group)
self.action = None
Le problème c'est que tu mets à None la variable self.action_group que tu passes ensuite en argument, ce qui ne va pas bien sûr, il faudrait faire :
def deactivate(self, shell):
def deactivate(self, shell):
uim.remove_ui (self.ui_id)
uim.remove_action_group (self.action_group)
del self.action_group
del self.action
Et pour bien faire, faudrait mettre uim comme un champ (comme pour action et action_group), ainsi on l'initialise dans le activate avec un self.uim=.....
puis il est dispo partout ensuite, dans le deactivate, il n'y aura plus besoin de refaire uim = shell.get_ui_manager()
Si ca te dit, je peux faire des modifs si tu mets un projet pour ton plugin sur github (ou équivalent)
Hors ligne
#12 Le 11/02/2011, à 15:05
- masterbox
Re : [PLUGIN RHYTHMBOX] synchronisation de vos notes dans vos fichiers MP3
Oui je pensais de toute façon créer un repo, je fais ça ce week end si possible
Merci pour tous tes conseils, ça me permet de mieux comprendre les philosophies Python et Plugin Rhythmbox... Dans le 1er cas j'ai du mal à y adhérer (suis plutôt Perl à la base...) et dans le 2ème le manque cruel de documentation ne m'a pas aidé.
Grâce a toi ce plugin va devenir plus propre
Sinon j'ai un peu regardé les specs FMPS, ça me parait jouable.
Ce que j'aimerai faire aussi par la suite, c'est pouvoir faire la synchronisation lors de l'ajout dans la bibliothèque, puis lors d'une changement de note. Vous auriez une piste ?
MasterBOX
------------------------------------------------------------------------------------
Mon blog, avec mes créations sur Ubuntu et ma vision du futur :
http://utopievirtuelle.wordpress.com
Hors ligne
#13 Le 11/02/2011, à 15:11
- Vysserk3
Re : [PLUGIN RHYTHMBOX] synchronisation de vos notes dans vos fichiers MP3
Moi aussi je découvre un peu les plugins rhythmbox, mais ca me permettra de me refaire la main avec Python. Il y a d'autres détails, je les posterais
Sinon, pour l'autre point, c'est certainement possible avec le QueryModel qui se met à jour automatiquement, faudrait creuser par là
Hors ligne
#14 Le 11/02/2011, à 15:31
- samfuzz
Re : [PLUGIN RHYTHMBOX] synchronisation de vos notes dans vos fichiers MP3
je n'y connais rien en python mais j'ai utilisé a une époque ce greffon rhythmbox : Ratings Export/Import
http://sites.google.com/site/airmind/rhythmboxplugins
si ça peut aider
Hors ligne
#15 Le 11/02/2011, à 15:53
- Vysserk3
Re : [PLUGIN RHYTHMBOX] synchronisation de vos notes dans vos fichiers MP3
Oui c'est exactement ce que fait le script de masterbox apparemment
Par contre je me rend compte que ce que j'aimerais bien sauvegarder aussi (en plus de la note), c'est le nombre de lecture, voire la date de dernière lecture...là je sais pas s'il y a des standard pour ça, mais l'idée en fait serait de pouvoir au moins retrouver ça lors d'un déplacement de fichier...
Hors ligne
#16 Le 11/02/2011, à 15:58
- masterbox
Re : [PLUGIN RHYTHMBOX] synchronisation de vos notes dans vos fichiers MP3
Si il est dans le standard le nombre de lecture, avec les ratings, et je l'ai implémenté, mais pas trop testé pour l'instant.
Je l'avais pas trouvé ce plugin, ce n'est pas tout a fait la même façon de faire, le mien permet de synchroniser sur une liste choisie...
Mais doit encore être améliorer pour supporter plus de formats et être thread friendly (oui pour l'instant c'est moche ça gèle l'affichage...)
MasterBOX
------------------------------------------------------------------------------------
Mon blog, avec mes créations sur Ubuntu et ma vision du futur :
http://utopievirtuelle.wordpress.com
Hors ligne
#17 Le 11/02/2011, à 15:59
- masterbox
Re : [PLUGIN RHYTHMBOX] synchronisation de vos notes dans vos fichiers MP3
Ah pour la date de dernière lecture je ne crois pas qu'il y est de standard, mais rien n'empeche de faire un tag TXXX spécifique...
MasterBOX
------------------------------------------------------------------------------------
Mon blog, avec mes créations sur Ubuntu et ma vision du futur :
http://utopievirtuelle.wordpress.com
Hors ligne
#18 Le 11/02/2011, à 16:03
- Vysserk3
Re : [PLUGIN RHYTHMBOX] synchronisation de vos notes dans vos fichiers MP3
Tiens, il me semblait qu'on ne pouvait pas utiliser les threads avec les plugins python ?
Ou alors tu veux parler de http://live.gnome.org/RhythmboxPlugins/ … ated_tasks
Dernière modification par Vysserk3 (Le 11/02/2011, à 16:03)
Hors ligne
#19 Le 11/02/2011, à 16:11
- masterbox
Re : [PLUGIN RHYTHMBOX] synchronisation de vos notes dans vos fichiers MP3
Oui c'est ça, alors disons GUI thread friendly si tu préfères
MasterBOX
------------------------------------------------------------------------------------
Mon blog, avec mes créations sur Ubuntu et ma vision du futur :
http://utopievirtuelle.wordpress.com
Hors ligne
#20 Le 12/02/2011, à 13:27
- Vysserk3
Re : [PLUGIN RHYTHMBOX] synchronisation de vos notes dans vos fichiers MP3
Bon alors je viens de tester vraiment là et il y a plusieurs problèmes :
- Déjà un truc qui sera obsolète dans la version de rhythmbox suivante (j'ai la version 0.13.3) c'est :
source = shell.get_property("selected_source")
à remplacer par :
source = shell.get_property("selected_page")
- Ensuite, plus grave, j'ai donc testé le plugin en lui même (tidyRating), et ca m'a remis à zéro la valeur du nombre d'écoutes, celle qui est affichée dans Rhythmbox.
edit : en fait en regardant bien, c'est parce que pour faire la synchro depuis les fichiers VERS rhythmbox, tu regardes si le rating de rhythmbox est à 0. TU devrais regarder en fait si rating est à 0 ET si le count est aussi à 0
- Autre chose aussi, je pense que
db = shell.get_property("db")
devrait être sorti de la boucle for, il n'est pas nécessaire de le faire pour chaque "element" de la boucle étant donné qu'il ne dépend pas de "element" justement (enfin je crois).
Voire même carrément supprimé car la variable db n'est jamais utilisé en dessous apparemment....car ca passe visiblement par des shell.props.db
- ui_str la chaîne en dur dans le code devrait être remplacé par un fichier xml séparé (par exemple saveratings_ui.xml placé dans le dossier du plugins) et on remplace
self.ui_id = self.uim.add_ui_from_string(ui_str)
par
self.uim.add_ui_from_file(path.expanduser("~/.local/share/rhythmbox/plugins/saveTAGRating_en/saveratings_ui.xml"))
Je suis en train de faire toutes les modifs dont je parlais de mon côté comme ça je t'enverrai ou je commiterai quand ce sera bon
Dernière modification par Vysserk3 (Le 12/02/2011, à 15:12)
Hors ligne
#21 Le 12/02/2011, à 18:31
- masterbox
Re : [PLUGIN RHYTHMBOX] synchronisation de vos notes dans vos fichiers MP3
Alors, je dis amen a toutes tes remarques, faut croire que j'aurais dû analyser un peu plus le plugin dont je suis parti, mais bon j'avais fait au plus court... Enfin toutes sauf une remarque tout de même, celle qui concerne la condition d'import.
En effet, si je test si le nombre de count est un 0, parfois la note ne s'importera pas alors qu'il y en a bien une.
Par contre je serait partisan de faire deux cas différents :
1) le rating existe, on importe rien
2) le rating est à 0, alors on importe la note, et on ajoute le compteur à celui qui est dans rhythmbox (pour eventuellement le remettre dans le fichier apres), car cela veut dire qu'on a écouté la musique depuis que le fichier a été déplacé par exemple, ou encore que les notes viennent d'un autre lecteur dans lequel on a lu ce fichier, et donc le compte correspond bien aussi à la somme des 2.
Qu'en penses-tu ?
Mais de manière générale, la façon la plus sûre est de synchroniser à l'importation du fichier (du coup tout est à 0) et puis à chaque lecture / modification de la note. Cela provoque par contre beaucoup d'écritures des fichiers...
Sinon voici le git ( https://github.com/masterbox/saveTAGRating ) auquel j'avais ajouté tes premières recommendations. Mais si tu as déjà une version à jour tu n'as qu'à l'écraser.
MasterBOX
------------------------------------------------------------------------------------
Mon blog, avec mes créations sur Ubuntu et ma vision du futur :
http://utopievirtuelle.wordpress.com
Hors ligne
#22 Le 15/02/2011, à 10:11
- Vysserk3
Re : [PLUGIN RHYTHMBOX] synchronisation de vos notes dans vos fichiers MP3
Bon alors,
J'ai commité et maintenant je pense que la base est saine à savoir :
- factorisation au maximum de code et modularité, ca permettra de développer facilement une fonction sans toucher au reste du code qui est indépendant du format audio par exemple
- j'ai amélioré aussi la fonction de sauvegarde et de restauration pour éviter de faire une écriture supplémentaire ou un commit supplémentaire si on n'en a pas besoin
- j'ai essayé de commenter un maximum le code pour que ce soit le plus lisible possible
Voilà, reste à prendre en charge les autres formats (malheureusement, d'après ce que j'ai lu il n'y a pas de standard pour le ogg ou le flac) et à faire les gui threads
Si on veut exécuter quelque chose à la lecture ou à la modification d'un rating, je pense qu'il faudra passer par dbus pour ça.
Hors ligne
#23 Le 15/02/2011, à 19:36
- Vysserk3
Re : [PLUGIN RHYTHMBOX] synchronisation de vos notes dans vos fichiers MP3
Bon pour les GUI threads, c'est fait, j'ai mis en IDLE la priorité pour pas que ca gêne d'autres choses. Ca a l'air relativement rapide et fluide (j'ai testé juste sur une centaine de fichiers, faudrait voir avec genre 5000-10 000 fichiers).
Hors ligne
#24 Le 15/02/2011, à 23:21
- masterbox
Re : [PLUGIN RHYTHMBOX] synchronisation de vos notes dans vos fichiers MP3
je regarde tout ça dans la semaine dès que j'ai un peu de temps, merci pour ton aide inestimable :-)
je testerai avec quelques milliers de fichiers.
MasterBOX
------------------------------------------------------------------------------------
Mon blog, avec mes créations sur Ubuntu et ma vision du futur :
http://utopievirtuelle.wordpress.com
Hors ligne
#25 Le 16/02/2011, à 12:44
- Vysserk3
Re : [PLUGIN RHYTHMBOX] synchronisation de vos notes dans vos fichiers MP3
Par contre, je viens de me rendre compte d'un truc, si je suis ce qu'indiquait samfuzz, on devrait changer en fait le tagging même pour les mp3....:
2.1.1 MP3
MP3 values MUST be stored in a TXXX frame with the Description
set to the specified identifier and the Text set to the string
representation of the value. The Description SHOULD be in
CamelCase as specified in the following sections, e.g.
FMPS_Rating.2.1.2 VorbisComments
Any file supporting VorbisComments (Vorbis, FLAC, Theora, Speex)
MUST use a comment with the Key set to the specified identifier
and the Value set to the string representation of the value. The
Key SHOULD be in all upper-case, e.g. FMPS_RATING.
En gros au lieu de POPM et PCNT, il faut utiliser un TXXX....mais après pas sûr que ce soit lisible par XBMC ou autres lecteurs, mais bon ce serait plutôt à ces lecteurs de s'adapter. Au pire on peut stocker les trois types de frame....
Pour les vorbis/flac, il faudrait s'inspirer du tagging (clé:valeur) de Quod Libet (cf http://code.google.com/p/quodlibet/wiki … sComments)
Tout ceci devrait être possible via mutagen uniquement et pas trop dur à changer maintenant que le code est bien modulaire.
À suivre....
Dernière modification par Vysserk3 (Le 16/02/2011, à 13:07)
Hors ligne