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 09/02/2011, à 20:01

LeChi

[résolu] imprimer les «tags» d'une liste musicale

Bonjour à tous.

J'utilise rythmbox et gmusicbrowser, mais je ne trouve pas une fonction spécifique.

Je voudrais imprimer la liste des auteurs, titres et nom de l'album pour une liste d'écoute définie.

Peut-être faudrait-il passer par une liste enregistrée en tant que fichier, puis écrire un script extrayant les métadonnées des flac, ogg ou autre et les enregistrant dans un fichier plein texte, avec des balises latex ou csv ou autre...

Mais je ne vous pas comment aborder ce problème.

Merci par avance pour toute suggestion ou aide concrète.

Dernière modification par LeChi (Le 21/06/2011, à 08:05)

Hors ligne

#2 Le 10/02/2011, à 11:16

RegisBurin

Re : [résolu] imprimer les «tags» d'une liste musicale

Salut

Pas de réponse, mais je cherche à faire le même genre de chose (import tags => feuille de calcul => impression)... Donc ce post pour m'abonner au topic.

Quelques premières pistes trouvées néanmoins: Voir du coté de eyed3 et Mutagen qui sont tous 2 des modules python pour lire (et donc pouvoir extraire) les Tags Id3 (eyed peut être uitliser en console $eyed3 -v [dossier], mais ne sait pas lire les tags sur des OGG hmm , Mutagen sais lire les tags sur les OGG et WAV, mais module python quoi...)

Si tu te débrouilles en Python (pas du tout mon cas, donc je bloque...), ça peut être de bonnes pistes à étudier...

@+


Config (M-AUDIO Delta44/Wacom CTH661-Phone ZTE OpenC-FFOS2.1) | BabyBox[WIP]
Moi sur le web / Moi, IRL mais sur le web / Ma maison sur le web

Hors ligne

#3 Le 13/02/2011, à 17:52

rv4848

Re : [résolu] imprimer les «tags» d'une liste musicale

Sinon quodlibet dispose d'un plugin pour ça. Il exporte en HTML. Après j'ai pas essayé ^^

Hors ligne

#4 Le 20/02/2011, à 16:00

LeChi

Re : [résolu] imprimer les «tags» d'une liste musicale

Bonjour à tous,

je viens de tester Quolibet : ce logiciel est génial car j'y trouve ce que je ne trouvais pas ailleurs :
- en liste de lecture : ne lire qu'une chanson, puis s'arrêter ;
- l'export vers html des étiquettes .

le seul bémol est qu'il ne lit pas les emplacement smb:// , d'ailleurs tout comme gmusicbrowser.
Je dois donc monter les répertoires du disque réseau, mais c'est sans réel problème, j'ai trouvé l'aide sur ce forum.

merci

Chi

Hors ligne

#5 Le 20/02/2011, à 16:26

rv4848

Re : [résolu] imprimer les «tags» d'une liste musicale

Ravi d'avoir été utile wink
si tu veux j'ai développé quelques plugin ( gestion pochette, supprimer tag) mais c'est pas très évolué

Hors ligne

#6 Le 24/02/2011, à 00:13

LeChi

Re : [résolu] imprimer les «tags» d'une liste musicale

Bonsoir à tous,


je reviens sur ce thème d'impression des tags d'une liste de lecture.

Quod Libet a un plugin d'exportation vers une page html ; il exporte les champs (tags) vus dans la fenêtre au moment de l'exportation. Il suffit donc de faire le choix des tags pour les envoyer vers un html.

J'aimerais transformer ce plugin pour un export vers LaTeX et obtenir un fichier de cette structure :

\begin{center}
    \begin{Large}Thème : Handel\end{Large}\linebreak Longwy, 21 janvier 2011
\end{center}

\begin{enumerate}
\opus{Hornpipe in d-dur}{Feuerwerksmusik HWV351, Concerto grosso}{Georg Friedrich Händel}{1:42}
\opus{Feuerwerksmusik HWV351 - 1. Overture (Adagio - Allegro - Lentement - Allegro)}{Feuerwerksmusik HWV351, Concerto grosso}{Georg Friedrich Händel}{8:17} 
\opus{Allegro, Andante}{Handel Water Music, Concerto In F For Organ}{Georg Friedrich Händel}{7:40} 
\opus{Overture: Largo; Allegro}{Handel Water Music, Concerto In F For Organ}{Georg Friedrich Händel}{4:11}
\end{enumerate}

Je ne sais pas visionner le fichier html.pyc, mais voici le fichier du plugin html.py :

# Copyright 2005 Eduardo Gonzalez
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation
#
# $Id$

import os
import re
import gtk
import config

from util import tag, escape
from plugins.songsmenu import SongsMenuPlugin

HTML = '''<?xml version="1.0" encoding="UTF-8"?>
<html>
<head><title>Quod Libet Playlist</title>
 <style type="text/css">
  table {table-collapse:collapse; border-spacing:0; width: 100%%}
  td {border: 0; padding:7px}
  th {border: 0; padding:7px; text-align: left}
 </style>
</head>
<body>
  <h1>My <a href="http://www.sacredchao.net/quodlibet/">Quod Libet</a>
  Playlist</h1>
  <br />
  <table id="songTable">
    <thead>
      <tr>
        %(headers)s
      </tr>
    </thead>
    <tbody id="songData">%(songs)s</tbody>
  </table>
</body>
</html>
'''

class ExportToHTML(SongsMenuPlugin):
    PLUGIN_ID = "Export to HTML"
    PLUGIN_NAME = _("Export to HTML")
    PLUGIN_DESC = _("Export the selected song list to HTML.")
    PLUGIN_ICON = gtk.STOCK_CONVERT
    PLUGIN_VERSION = "0.17"

    def plugin_songs(self, songs):
        if not songs: return

        chooser = gtk.FileChooserDialog(
            title="Export to HTML",
            action=gtk.FILE_CHOOSER_ACTION_SAVE,
            buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT,
                     gtk.STOCK_OK, gtk.RESPONSE_ACCEPT))
        chooser.set_default_response(gtk.RESPONSE_ACCEPT)
        resp = chooser.run()
        if resp != gtk.RESPONSE_ACCEPT:
            chooser.destroy()
            return

        fn = chooser.get_filename()
        chooser.destroy()

        cols = config.get("settings", "headers").split()

        cols_s = ""
        for col in cols:
            cols_s += '<th>%s</th>' % tag(col)

        songs_s = ""
        for song in songs:
            s = '<tr>'
            for col in cols:
                col = {"~#rating":"~rating", "~#length":"~length"}.get(
                    col, col)
                s += '\n<td>%s</td>' % (
                    escape(unicode(song.comma(col))) or '&nbsp;')
            s += '</tr>'
            songs_s += s

        f = open(fn, 'w')
        f.write((HTML % {'headers': cols_s, 'songs': songs_s}).encode('utf-8'))
        f.close()

Merci par avance, pour me dire comment commencer, car je ne connais pas python.

Cordialement,


Chi

Dernière modification par LeChi (Le 24/02/2011, à 00:15)

Hors ligne

#7 Le 24/02/2011, à 21:53

LeChi

Re : [résolu] imprimer les «tags» d'une liste musicale

Bonsoir,
je me réponds à moi-même : voici mon script, il fonctionne chez moi.

# Copyright 2011 Christian Hinque, based on HTML by Eduardo Gonzalez copyright 2005
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation
#
# $Id$

import os
import re
import gtk
import config

from util import tag, escape
from plugins.songsmenu import SongsMenuPlugin

LATEX = '''\\begin{enumerate}
    \\begin{Large}Th\\'eme : Jazz\end{Large}\linebreak \cue{}, 4 mars 2011
\end{center}
        %(headers)s
\\begin{enumerate}
   %(songs)s
\end{enumerate}'''

class ExportToHTML(SongsMenuPlugin):
    PLUGIN_ID = "Export to LaTeX"
    PLUGIN_NAME = _("Export to LaTeX")
    PLUGIN_DESC = _("Export the selected song list to LaTeX.")
    PLUGIN_ICON = gtk.STOCK_CONVERT
    PLUGIN_VERSION = "0.01"

    def plugin_songs(self, songs):
        if not songs: return

        chooser = gtk.FileChooserDialog(
            title="Export to LaTeX",
            action=gtk.FILE_CHOOSER_ACTION_SAVE,
            buttons=(gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT,
                     gtk.STOCK_OK, gtk.RESPONSE_ACCEPT))
        chooser.set_default_response(gtk.RESPONSE_ACCEPT)
        resp = chooser.run()
        if resp != gtk.RESPONSE_ACCEPT:
            chooser.destroy()
            return

        fn = chooser.get_filename()
        chooser.destroy()

        cols = config.get("settings", "headers").split()

        cols_s = "\opustitre"
        for col in cols:
            cols_s += '{%s}' % tag(col)

        songs_s = ""
        for song in songs:
            s = '\opus'
            for col in cols:
                col = {"~#rating":"~rating", "~#length":"~length"}.get(
                    col, col)
                s += '{%s}' % (
                    escape(unicode(song.comma(col))) or '&nbsp;')
            s += '\n'
            songs_s += s

        f = open(fn, 'w')
        f.write((LATEX % {'headers': cols_s, 'songs': songs_s}).encode('utf-8'))
        f.close()

et mes deux macro-commandes en LaTeX

\newcommand{\opustitre[5]{\begin{flushleft}\begin{textb}\begin{footnotesize}{#1}{#4} - \begin{textit}{#3}\end{textit}\linebreak \begin{tiny}({#5})\end{tiny} {#2}\end{footnotesize}\end{textb}\end{flushleft}}%

\newcommand{\opus}[5]{\item \begin{flushleft}\begin{footnotesize}{#1}{#4} - \begin{textit}{#3}\end{textit}\linebreak \begin{tiny}({#5})\end{tiny} {#2}\end{footnotesize}\end{flushleft}}%

si cela sert à qq, tant mieux.

Dernière modification par LeChi (Le 24/02/2011, à 21:54)

Hors ligne