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

masterbox a écrit :

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 wink

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 wink

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) wink

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

Vysserk3 a écrit :

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 wink

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) wink

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 smile

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 smile

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  wink
Sinon, pour l'autre point, c'est certainement possible avec le QueryModel qui se met à jour automatiquement, faudrait creuser par là wink

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 wink


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 wink

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

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 wink

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