Home Forums Wiki Doc Install Extras Screenshots Source Code Projects Blog Users Groups Register
Glx-Dock / Cairo-Dock List of forums Applets | Applets Applet musicPlayer
The latest stable release is the *3.4.0* : How to install it here.
Note: We just switched from BZR to Git on Github! (only to host the code and your future pull requests)
Applets | Applets

Subjects Author Language Messages Last message
[Locked] Applet musicPlayer
Page : 1 2 3 4 5 6 7 8 9 10
ChAnGFu Français 193 Guest [Read]
04 January 2015 à 11:41

Sardem FF7, Sunday 08 November 2009 à 23:29


Subscription date : 08 November 2009
Messages : 9
Bonsoir,

Grand utilisateur du MPD, j'ai fini par coder le support MPD de cette applet.
Disponible dans ma branche : https://code.launchpad.net/~sardemff7/cairo-dock-plug-ins/sdf-plug-ins

Basé sur la dernière version du trunk, seules quelques améliorations en dehors du support MPD ne fonctionnent pas (car non disponible dans le Cairo-dock : shift+click milieu, scroll horizontal)

Sinon les modifications annexes apportent de la flexibilité aux actions possibles (rajout notamment du contrôle du volume).

Il reste encore des améliorations à faire, et surtout le support du volume pour chaque lecteur (quand le lecteur le supporte) et pas mal de debug je pense. Il y a également un petit bug sur la mise à jour du temps (très irrégulière) qui doit venir de la "latence" serveur/applet.
Je n'ai rien fait nveau couverture (chaque client MPD faisant sa propre tambouille, visiblement, ce n'est pas très facile à gérer).

Mais globalement, il fonctionne bien (peut-être un peu dur au démarrage pour charger le bon état sur l'icône ?) et supporte quelques clients du MPD (sans savoir les lancer, trop dur de vérifier si ils sont lancés alors que le MPD lui-même l'est tout le temps…) pour l'afficher/cacher (je vais essayer d'améliorer le principe pour ce qui est d'en rajouter facilement).

Edit : je viens de trouver ce sujet après avoir posté ailleurs et donc je suis tombé sur ce support MPRIS du MPD.
Personnellement, j'y vois deux inconvénients : le Python (Ruby fanboy que je suis ^^) et le client en plus. Ma solution est sans doute plus archaïque mais le client en plus (du client graphique très utile pour les playlists) est de fait le Cairo-Dock lui-même

Une amélioration qui serait utile, du côté MPD, est l'envoi de messages sans qu'on ai à demander le statut, et je vais m'empresser de voir ce qui peut être fait de ce côté là.

matttbe, Sunday 08 November 2009 à 23:38


Subscription date : 24 January 2009
Messages : 12573
Salut Sardem,

Ah, c'était toi qui avait créé une branche vide .

Merci pour ta contribution en tout cas !

J'avais peur de voir une nouvelle applet mais là, une amélioration de MP, c'est génial .

Deux petites 'remarques' :
  • Par hasard, est-ce que MPD ne supporte pas les standards mpris ou dcop? (ça aurait été simple de supporter le lecteur mais comme ça à l'air complet, c'est pas grave, c'est pour l'info ). EDIT : ok, j'ai compris
  • Pour la question de fusionner tes modif, il y a tjs moyen à coup de diff, etc. mais il y a des techniques plus simples (=> c'est un message surtout pour des modif ultérieures de ta part ou de qq1 d'autre lisant ceci). Pourrais-tu, soit nous dire les fichiers modifier depuis quelle version (pour ne pas 'perdre du temps' à vérifier les fichiers pour effacer des lignes, etc. alors que tu as la réponse), soit, et ce serait super simple pour nous , partir de la dernière version des plug-ins, faire tes modif et de 'pusher' sur un autre branche (puis, 'pour faire bien' , de demander sur lp à ce que l'on merge ta branche ). Donc, si tu as le temps :
    • Tu récupères le code source (tu l'as certainement fait) :
      bzr branch lp:cairo-dock-plug-ins
    • Si tu l'avais déjà fait, tu mets à jour :
      cd cairo-dock-plug-ins && bzr pull
    • Tu fais tes modif (un simple copié-collé de ce que tu as produit suffira p-ê)
    • Tu commits en local :
      bzr commit -m "message descriptif"
    • Tu pushs sur une branche perso, par exemple
      bzr push lp:~sardemff7/cairo-dock-plug-ins/musicPlayer

Merci

Sardem FF7, Monday 09 November 2009 à 10:04


Subscription date : 08 November 2009
Messages : 9
En réalité j'ai déjà essayé plusieurs choses, mais le diff fournit par Launchpad pour montrer la fusion des branches me paraissait complètement à côté de la plaque.
Je viens d'essayer tes commandes, et comme je le pensais, le commit est bloqué car je ne sais pas pourquoi mais il me fait un push automatique ou je ne sais quoi.

En attendant, je maintiens la branche en utilisant toujours les derniers fichiers du MP du trunk, donc le merge peut se faire par simple copier/coller sans problème. Pour le moment, je me base sur la toute dernière version.

Je vais essayer de gérer la localisation, si je comprends le principe des po (ou plutôt si j'arrive à les modifier sans tout faire exploser) ^^

Pour les normes, le problème c'est que le MPD est fait pour pouvoir s'utiliser sur le réseau, où DBus ne sait pas parler, je crois.

Je suis en train de faire une feature request et peut-être un patch pour gérer une notification active du serveur (MPD), si ça sera apprécié.

fabounet, Monday 09 November 2009 à 13:18


Subscription date : 30 November 2007
Messages : 17118
Salut et merci pour ta contribution !
moi j'ai pas compris : MPD utilise MPRIS ou pas ? car si oui, son support dans l'applet MP est très facile.
en tous les cas, à priori tu ne devrais pas avoir à faire de modification dans le coeur de MP, mais seulement à rajouter un fichier applet-mpd.c.

Sardem FF7, Monday 09 November 2009 à 13:38


Subscription date : 08 November 2009
Messages : 9
MPD ne supporte pas MPRIS. Un client MPD en Python permet de faire une compatibilité MPRIS, visiblement.

Ensuite, en plus de rajouter le support MPD (beaucoup pour moi , pour les autres si ils veulent), j'ai rajouté une fonction : gestion du volume (sur la molette) et j'ai augmenté la flexibilité (on peut choisir, bouton par bouton, l'action qui est utilisée).

matttbe, Monday 09 November 2009 à 14:40


Subscription date : 24 January 2009
Messages : 12573
Je viens d'essayer tes commandes, et comme je le pensais, le commit est bloqué car je ne sais pas pourquoi mais il me fait un push automatique ou je ne sais quoi.
As-tu récupérer la branche via 'branch' ou 'checkout'
En gros, avec un checkout, c'est comme le svn, tu es lié avec une seule branche et tu t'y gardes.
Cependant, avec une branche, tu fais une copie en local de la branche du serveur. Tu peux donc commiter en local (un commit n'envoie rien au serveur) puis envoyer tes commit sur un serveur.
Attention aussi que tu ne pourras pas recouvrir ton actuelle branche (sauf avec l'option --overwrite)

PS : pour passer d'un checkout (attention, pas un checkout --lightweight) à une branche, utilise la commande
bzr unbind
(bzr bind pour l'opération inverse)

EDIT : si tu ne comptes pas faire de modif ultérieures (et ce serait dommage ), pas besoin de faire tout ça

fabounet, Monday 09 November 2009 à 15:28


Subscription date : 30 November 2007
Messages : 17118
oki je comprends mieux.
pour la molette as-tu rajouté l'option pour tous les lecteurs ? je sais que certains offrent cette possibilité (Banshee par exemple), mais peut-être pas tous.

Pouet, Monday 09 November 2009 à 23:03


Subscription date : 30 November 2007
Messages : 605
MPDRIS est un client pour MPD supportant MPRIS !

et je veux tester l'applet MPD !!!!!!

Sardem FF7, Tuesday 10 November 2009 à 10:57


Subscription date : 08 November 2009
Messages : 9
MPDRIS rajoute une couche entre le MPD et le Cairo-Dock, ce que je cherche à éviter avec mon support MPD via libmpd. Je suis en train de passer à l'utilisation de la libmpdclient, car la libmpd est obsolète et ne gère pas tout. En utilisant la libmpdclient, je peux éviter la boucle pour ce qui est changement de chanson ou d'état (donc PLAYER_GOOD et pas PLAYER_BAD). Par contre je n'apprécie pas trop l'implémentation de cette "notification active" dans la libmpdclient (il faut envoyer un message d'attente de changement, et pendant ce temps, je ne sait pas si je peux récupérer le temps écoulé, on verra bien).

Je n'ai pas (encore ?) rajouté la gestion de volume pour les autres lecteurs, mais je vais le faire dès que j'ai "fini" le support MPD.

Pour tester :
bzr branch -r4 lp:~sardemff7/cairo-dock-plug-ins/sdf-plug-ins
cd sdf-plug-ins/musicPlayer

aclocal --force
libtoolize --force
autoconf --force
autoheader --force
automake --add-missing --force-missing

./configure
make
sudo make install


Normalement ça devrait marcher.

Edit : obligé de passer à deux connexions pour gérer correctement le statut et le temps, sauf à rester sur l'ancienne méthode (à savoir, tout mettre à jour chaque seconde). C'est pas que le protocole du MPD soit très lourd, mais je trouve que leur gestion est limite, je continue à penser que ça peut être amélioré.
Reste l'icone qui ne veut pas se mettre à jour (crash du dock) et j'ai fini la migration vers libmpdclient.

fabounet, Tuesday 10 November 2009 à 12:43


Subscription date : 30 November 2007
Messages : 17118
est-ce que tu sais si la lib libmpdclient est commune ? (comprendre est-ce qu'on aura pas des problèmes de dépendances sur certaines distrib) ?

Sardem FF7, Tuesday 10 November 2009 à 15:54


Subscription date : 08 November 2009
Messages : 9
Très étrangement la libmpd est désormais obsolète, alors qu'elle devait être une abstraction de la libmpdclient, qui devient beaucoup plus complète (qui suit l'évolution du serveur, en fait).

Sous Fedora, je ne dispose pas de la libmpdclient dans les dépôts. Mais théoriquement, elle devrait être plus maintenue que la libmpd.

Je suis passé à une gestion plus … marrante du temps : j'incrémente chaque seconde.
Si tout va bien (donc si le dock lance bien la commande chaque seconde), ça devrait finalement rien changer, car je stoppe cette fonction quand le lecteur n'est plus en lecture.
Sinon j'ai fini la migration, à une ou deux (ou trois ou quatre ?) segfault près.

matttbe, Tuesday 10 November 2009 à 16:25


Subscription date : 24 January 2009
Messages : 12573
Et par la même occasion, si tu utilises les headers d'une nouvelle lib, merci de le préciser

Sinon, j'ai eu un plantage tantôt. Voici le backtrace de ddd :

http://uppix.net/c/7/b/dbc0818e143b1758eb923bcf9011f.png


Et les messages en console:
MP : onChangePlaying (161249280)
_audacious_getPlaying_mpris ()
_extract_playing_status_mpris ()
=> iStatus : 0
MP : onChangeSong ()
MP : Pas d'adresse de la part du lecteur ... on regarde si elle n'existe pas deja en local
cd_musicplayer_dl_cover (Renan Luce, On N'Est Pas À Une Bêtise Près, file:///home/matttbe-old/Musiques/Renan%20Luce%20-%20On%20N'Est%20Pas%20%C3%80%20Une%20B%C3%AAtise%20Pr%C3%A8s.mp3)
cKeyWords : 'Renan|Luce,On|N'Est|Pas|À|Une|Bêtise|Près'
*** glibc detected *** cairo-dock: double free or corruption (!prev): 0x09e59428 ***
En fait, ça plante à chaque fois avec c'est chanson. J'en ai d'autres avec un ', À et ê mais pas de bug pour elles...
Peut-être que le backtrace pourra t'aider Fab

Sardem FF7 : maintenant que tu apportes qqs modif (et c'est génial), pourrais-tu commiter sur une branche perso mais basée sur celle des plug-ins ? Car lorsqu'il y aura des mélanges, ça risque d'être hard pour toi ou celui qui va merger (autant attendre que tu ais fini ce dont tu parlais) de s'y retrouver . Donc, il te suffit normalement d'appliquer ces commandes :
mkdir cairo-dock-modif && cd cairo-dock-modif
bzr branch lp:~sardemff7/cairo-dock-plug-ins/sdf-plug-ins
bzr branch lp:cairo-dock-plug-ins
rm -r cairo-dock-plug-ins/musicPlayer
cp -R sdf-plug-ins/musicPlayer/ cairo-dock-plug-ins/
cd cairo-dock-plug-ins/musicPlayer
bzr commit -m "message descriptif"
bzr push lp:~sardemff7/cairo-dock-plug-ins/musicPlayer
Normalement, il suffit de lancer ceci et tout ira bien. Je pourrais le faire à ta place mais tu n'auras pas les droits en écriture dessus, ce qui serait stupide
Merci

Sous Fedora, je ne dispose pas de la libmpdclient dans les dépôts. Mais théoriquement, elle devrait être plus maintenue que la libmpd.
Tu n'as pas la les paquets libmpd1, libmpd1-dbg et libmpd-dev ? (et p-ê que libmpd-dev ou -devel pourrait t'être utile ?)

fabounet, Tuesday 10 November 2009 à 18:28


Subscription date : 30 November 2007
Messages : 17118
malheureusement je ne vois rien dans le code qui puisse le faire planter à cet endroit-là :/

Pouet, Tuesday 10 November 2009 à 19:29


Subscription date : 30 November 2007
Messages : 605
pour info, voilà ce que j'ai sous debian testing/sid concernant la libmpd

apt-cache search libmpd
libmpd0 - High-level client library for accessing Music Player Daemon
python-mpdclient - Python interface to MPD
libmpd-dev - High-level client library for accessing Music Player Daemon
libmpd1-dbg - High-level client library for accessing Music Player Daemon
libmpd1 - High-level client library for accessing Music Player Daemon

Mav, Tuesday 10 November 2009 à 20:26


Subscription date : 29 November 2007
Messages : 3146
Ca me plait aussi car un petit serveur mpd fait bien plaisir à utiliser
Merci pour cette contrib !
Dire que j'ai commencé cette applet et qu'il ne doit plus rester un bout de code à moi

Sardem FF7, Tuesday 10 November 2009 à 20:30


Subscription date : 08 November 2009
Messages : 9
Alors petit récapitulatif rapide et précisions :

La "libmpd" (dite lib de haut niveau) n'est plus à l'ordre du jour (mais si même Fedora le sait pas, on va avoir du mal). J'utilise donc la "libmpdclient", en version 2.0 actuellement.

La révision 4 de ma branche utilise la libmpd (d'où la commande), et est relativement fonctionnelle (normalement, juste le décompte des secondes qui est plus aléatoire que continu).

Il me reste quelques segfault à gérer (et même avec des fuites de RAM, ça plante, et j'ai vérifié, aucune fonction n'utilise de type non prévu pour) pour terminer la migration/amélioration.

Normalement ma branche reprend le schéma de la branche principale, à savoir un dossier par applet (je vais sans doute m'amuser avec celui du réseau). Je vais faire ce que je peut pour les merge, mais dans le pire des cas j'assure le "merge par bête copier/coller" (en me basant toujours sur les derniers fichiers du trunk).

Et bien sûr, je ne compte pas abandonner comme ça de si agréables bidouilles !

Jackass059, Saturday 14 November 2009 à 14:32


Subscription date : 08 February 2008
Messages : 166
(Re-)bonjour à tous !

Cela fait quelques temps que je ne suis pas passé par ici... Je comptais arrêter de coder sur mon "temps libre", malheureusement, j'ai parfois des pulsions. C'est un peu comme une drogue

Du coup, ce matin j'ai relancé cairo-dock pour voir les nouveautés, et je dois dire que ça avance ! (bien même )
Je n'ai pas encore regardé le code, cependant j'ai cru voir que ce que j'avais proposé pour MP sur le téléchargement des pochettes semblait toujours y être.
Malheureusement, Amazon a modifié complètement son API cet été, de ce fait, le bout de code que j'avais fais ne fonctionne plus.

Mais j'ai trouvé son remplacent : last.fm
Je vais essayer de modifier ça aujourd'hui et demain pour vous proposer un patch.
Mais j'ai vu que vous étiez passé sur bzr, toussa, donc je risque d'envoyer mes patchs par mail, parce que je n'aurai pas le temps d'apprendre à me servir de ce nouvel outil ^^

Je voudrai également savoir s'il existe un "replace_all" soit dans la glib, soit dans les "tools" de cairo-dock ? (pour la glib j'ai commencé à regarder, sans trouver... je suppose donc qu'il n'y en a pas)
Si je demande ça, c'est parce que j'ai recodé un replace_all pour un usage perso, mais s'il est déjà présent dans cairo-dock ça sert à rien de le redonder ^^

matttbe, Saturday 14 November 2009 à 16:54


Subscription date : 24 January 2009
Messages : 12573
Malheureusement, Amazon a modifié complètement son API cet été, de ce fait, le bout de code que j'avais fais ne fonctionne plus.
Oui, j'ai oublié de relevé ça. Ca fonctionnait encore il y a peu de temps mais plus du tout actuellement.

Mais j'ai trouvé son remplacent : last.fm
Et pourquoi ne pas avoir un mélange des deux ?

Mais j'ai vu que vous étiez passé sur bzr, toussa, donc je risque d'envoyer mes patchs par mail, parce que je n'aurai pas le temps d'apprendre à me servir de ce nouvel outil ^^
Tout est expliqué en détail là : Aidez-nous grâce à BZR
Franchement, tu ne seras pas perdu puisque tu as déjà utilisé le svn : bzr add, bzr rm, bzr mv, bzr mkdir, bzr diff, bzr status, bzr help commands, bzr commit -m "", etc.
  • Juste que l'on utilise des branches, donc pour récupérer une branche c'est :
    bzr branch lp:cairo-dock-plug-ins
  • Pour la mettre à jour :
    bzr pull lp:cairo-dock-plug-ins
  • Pour envoyer les modif sur une branche perso
    bzr push lp:~TON_LOGIN_SUR_LP/cairo-dock-plug-ins-extras/TON_APPLET

C'est super simple ensuite pour fusionner les deux branches, enfin, moins long qu'avec des patch

Je pense que je vais également faire une branche perso à Sardem FF7 sinon ça va être galère après !

Merci à vous deux en tous cas !

Jackass059, Sunday 15 November 2009 à 01:38


Subscription date : 08 February 2008
Messages : 166
Ok, à l'occasion, je regarderai alors pour bzr.
Il me faut un nouveau login ? (je suppose que celui que j'avais sur berlios n'est pas dispo sur launchpad)

Pour répondre à ta question "pourquoi pas les deux ?"
La réponse que je fais... Parce que amazon c'est devenu trop chiant ^^°

En résumé : Il faut signer ses requêtes, il faut les encoder, et pour tout ça, il faut une clef privée... Dans de l'OpenSource, la clef privée ça le fait moyen.
Une autre raison, c'est que j'avais du plus ou moins faire un parseur xml maison pour lire leurs fichiers, alors que sur last.fm, j'ai fait quelques essais, et avec le XPath kivabien, c'est vachement plus propre.

matttbe, Sunday 15 November 2009 à 01:56


Subscription date : 24 January 2009
Messages : 12573
Il me faut un nouveau login ? (je suppose que celui que j'avais sur berlios n'est pas dispo sur launchpad)
Il faut un login de launchpad en effet.
Par contre, ça va vite ! Faut aussi créer une clé ssh publique et l'envoyer sur lp pour utiliser bzr mais idem, ça va vite et tout est bien expliqué en détails dans le wiki -> ça devrait te prendre 5 grosses minutes si tu sais lire (sauf si tu dois encore récupérer la branche, etc. ça dépendra alors de ta connexion )

Je vennais également de me renseigner pour Amazon et j'avais vu également ces problèmes
Sinon, Quotlibet utilise également Walmart.com, Dartown.to et Buy.com, je pense. Par contre, CD n'est pas un lecteur audio, c'est à eux à télécharger les pochettes normalement (sauf si avec mpris, on ne sait pas les récupérer facilement ). Donc pas besoin d'avoir un support méga complet mais plutôt fonctionnel dans la plupart des cas

Merci en tout cas

Applets | Applets

Subjects Author Language Messages Last message
[Locked] Applet musicPlayer
Page : 1 2 3 4 5 6 7 8 9 10
ChAnGFu Français 193 Guest [Read]
04 January 2015 à 11:41


Glx-Dock / Cairo-Dock List of forums Applets | Applets Applet musicPlayer Top

Online users :

Powered by ElementSpeak © 2007 Adrien Pilleboue, 2009-2013 Matthieu Baerts.
Dock based on CSS Dock Menu (Ndesign) with jQuery. Icons by zgegball
Cairo-Dock is a free software under GNU-GPL3 licence. First stable version created by Fabounet.
Many thanks to TuxFamily for the web Hosting and Mav for the domain name.