Pour nous contacter : soyez au rendez-vous sur IRC ! ⋅ Parcourir l'archive musicale Dogmazic ⋅ Notre Blog
Notre Documentation

Télécharger le contenu de playlist m3u

06:08 modifié dans Tech
Jamais vu une qestion de noob comme ça !

bon voilà le délire, je trouve plein de chouettes playlists m3u, je voudrais récupérer les morceaux, pas sorcier puisque la playlist est précisemment constituée de liens vers les morceaux... Oui mais... avec quoi ? Qui (anthropomorphisme logiciel) me permet de télécharger les morceaux constituants une playlist ?

je sait : STFW, oui oui... mais non
(me sortez pas le podcast, les playlists sont pas toutes sur dogmazic ;), et quand on me demande de gérer la musique dans une soirée, souvent c'est un Fenêtre (TM) qui n'as pas de client de podcast. Pourriez aussi me demander pourquoi les télécharger au lieu de les streamer, rhaaa z'etes futés !!! oui mais non je veux les DL)

alors any idea ? heu sous Linux ET Fenetres (TM)...

dF

Réponses

  • les .m3u sont aussi des fichiers textes, donc normalement si tu les lis avec un éditeur de texte (kwrite, kate, open-office...) tu te retrouveras avec les liens à télécharger.

    sinon si tu veux télécharger de multiples mp3 depuis le site, tu as un outil intéressant, une extension de firefox, download them all qui te permet de récupérer les .ogg ou .mp3 des liens présents dans une page internet.
    http://www.downthemall.net/

    ensuite faire cela automatiquement, là je ne vois pas trop...
  • oui c'est ce que j'aurais répondu aussi, copier les données en texte et trouver un prog qui télécharge une série de liens donnés à la volée.

    Et et la limite puisque tu parles de linux et pour automatiser tout ca, tu pourrais écrire un petit script pour parser les données.
    Ca ca serais vite fait puisque les données sont sous cette forme

    #EXTM3U
    #EXTINF:
    http://arch2.musique-libre.org/archive/OGG/7056_[People_ignore_who_i_am]_Atocha_[Creative_Commons___by_nc_nd_2.5]_[www.dogmazic.net].ogg
    http://arch1.musique-libre.org/archive/OGG/2986_[Diy_note]_El_despertar_[Creative_Commons___by_nc_2.0]_[www.dogmazic.net].ogg
    etc ...

    Je sais pas tu te démerde pour enlever les 2 premières lignes , ou alors tu "grep" (STFM comme on dit dans les milieux autorisés)
    Bon la j'ai pas linux mais j'imagine qu'un :
    [code:1]
    $ more playlist.m3u | grep http
    [/code:1]

    devrait te donner les liste des chansons.
    Après il faut arriver à les reformater de facon à utiliser un téléchargeur en ligne de commande, par exemple en STFW j'ai trouvé Axel

    http://blog.codefront.net/2007/04/29/axel-lightweight-command-line-download-accelerator/

    Alors bon la il va te falloir tester mais d'après moi si tu pars sur

    [code:1]
    $ more playlist.m3u | grep http | axel
    [/code:1]

    tu devrais pas être loin du résultat escompté.

    Bon je détail un peu vu que je connais pas ton niveau en ligne de commande, puis ca peut toujours être utile sur ce forum :
    Tu fous le tout dans un script, rend executable, le met dans /usr/bin et ca te fera une nouvelle commande
    Met tout les m3u dans un repertoire puis
    [code:1]
    $ telm3u *
    [/code:1]

    Et voila ! (en théorie)
    Ca devrait aller STFZ (searcher the fucking zics)
  • On devrait pouvoir enlever les 2 premières lignes du fichier grâce à la commande "cut" et pour une commande de téléchargement déja installée, et surement plus flexible même si moins rapide y'a "wget"
  • bon comme ca m'interresse vachement, et que finalement j'ai remarqué que j'ai un linux sous la main, j'ai trouvé comment faire. tu met tout tes m3u dans un dossier puis :

    [code:1]
    more *.m3u | grep http > temp.txt
    wget -i temp.txt
    [/code:1]

    Il doit y avoir un moyen de le faire sans passer par un fichier temporaire, je veux bien que te me le donnes si tu le trouve.
  • yes, bonne piste... le Do It Yourself !

    Je vais essayer de fignoller un truc dès que j'ai un peu de temps.

    J'avoue que mon rêve aurais été un ti bouton dans Xmms qui dit "download the playlist tracks", mais effectivement le script peut être une façon élégante de faire ça...

    Je STFW et je re RTFM ;)

    dF
  • bon ton bout de script marche nickel... MAIS... (y'a toujours des mais en info...)

    Il est sommaire, il cherche TOUTES les playlists et télécharge tout leur contenu dans le répertoire courant, donc les pistes de ma playlist triphop se retrouvent mélangées avec ma liste Death metal... mes oreilles ne le supporteront pas ;). Pis, si j'oublie de virer les playlists et qu'on le relance il refera tout les DL (j'ai implanté une solution barbare qui consiste à supprimer les playlists après le téléchargement, c'est pas très élégant)

    Donc en fait ce qu'il faudrais :
    Il regarde les playlist présentes dans le répertoire. Il crée un répertoire par playlist (nommé d'après le nom de la list m3u). Il télécharge le contenu de chaque playlist dans le répertoire adhoc. Après avoir avoir téléchargé le contenu d'une list, il l'a renomme en "blahblah.m3u_done" comme ça si je relance le script il la traitera pas. Ainsi de suite pour chaque list.
    Résultat il traite les play les unes après les autres, crée des répertoires propres, télécharge le contenu, et enfin empèche de reprocess la list si elle est déjà DL.

    Mon niveau en shell me permet pas de coder ça (je suis graphiste didiou, même si j'aime apprendre, là ça me dépasse je connais pas assez les commandes, les options, et les structures logiques).

    Mais en faisant marcher mon cerveau en français ça donne une boucle :

    Qui est là ?
    {
    -- "moi.m3u"
    - ok, je te fais un rep sous le niveau actuel > "moi_list"
    - je traite les chaine pour choper que les url > temp.txt
    - je télécharge les morceaux dans "moi_list"
    - je te renomme en "moi.m3u_done"
    - j'efface temp.txt

    -- "moi_aussi.m3u
    - ok, je te fais un rep...
    etc, etc
    }
    fin de la boucle.

    pas trop sorcier, mais je sait réfléchir comme ça que en français, je sait pas faire une boucle en shell, je sait pas comment faire pour traiter les listes les unes après les autres, etc...

    [ I had dream section ]
    Une mini interface Gtk dans laquelle on drag and drop un fichier m3u, qui nous demande où on veux sauver les morceaux, crée le répertoire, download les tracks et basta.
    [ / I had a dream section ]

    Evidemment tout ça c'est pour récupérer des morceaux fixes, j'ai pas la velléité de faire un truc pour ripper des flux...

    dF, coder moi jamais ! ;)


    PS : ça se voit que mon émission "Elle est libre ma musique" reprends du service tout les 2eme jeudi du mois sur Divergence-fm (.org) pour 90 min de musique libre et que j'ai besoin d'un outil pour la préparer ? :p
  • he oui c'est ca dès qu'on a un besoin très précis, il faut parfois mettre les mains dans le cambouis

    J'ai appris, il fut un temps, comment faire des boucles en shell, mais c'est vrai que la j'ai oublié

    Ce que je propose, c'est de faire un script qui gère une seule playlist, et de la lancer sur autant de playlists que tu veux par la suite.


    voici ce que tu mettrais dans un telm3u.sh simpliste (pour ton information, $1 représente le premier parametre donc le nom de la playlist)
    [code:1]
    rep=$1-list #ici tu change le nom du repertoire, met ce que tu veux, mais ne met pas de "_", et laisse bien un "-", sinon il va pas comprendre le $1
    mkdir $rep # on fait le repertoire
    cd $rep # on y va
    more $1 | grep http > temp.txt # ici ca bouge pas
    wget -i temp.txt
    rm temp.txt # on supprime le fichier temp
    cd .. # on retourne dans le repertoire d'avant
    [/code:1]

    Ici rien de bien méchant, le plus dur c'est de trouver les syntaxes, et de savoir par ou commencer.
    Ensuite on rajoute les droits d'execution

    [code:1]
    chmod a+x telm3u.sh # "a" c'est pour "all", "+" pour rajouter, et "x" c'est les droits d'eXecution
    [/code:1]

    Puis tu peux le lancer un par un, ou tous d'un coup
    [code:1]
    ./telm3u blablabla.m3u
    ./telm3u *.m3u
    ./telm3u *lamespirale*.m3u #ca c'est pour télécharger toutes les playlistes du groupe Lame Spirale ;) Mais pas la peine de chercher, y'en a pas. Bientot j'espere.
    [/code:1]

    voila voila, sachant que la, comme on fait une recherche sur "http", ca chopera pas ceux qui accèdent à leur mp3 par ftp. Je sais pas si c'est possible, surement.
    Bon si vraiment tu tombe sur le cas, tu duplique tout un bloc et tu change http par ftp.
  • cool, on va finir par arriver à quelque chose... je creuse ça en fin de semaine, là je suis chargé. Merci en tout cas.

    EDIT:
    y'a un probleme chronologique dans ton script
    [code:1]
    rep=$1-list #ici tu change le nom du repertoire
    mkdir $rep # on fait le repertoire
    more $1 | grep http > $rep/temp.txt # on fait le temp dans le rep
    cd $rep # on y va une fois le temp fait
    wget -i temp.txt
    rm temp.txt # on supprime le fichier temp
    cd .. # on retourne dans le repertoire d'avant

    [/code:1]


    dF
  • Bon ben voilà j'ai mon truc de rêve !

    le script :
    [code:1]
    #!/bin/sh
    rep=$1-DL # crée un nom de repertoire
    mkdir $rep # on fait le repertoire
    more $1 | grep http > $rep/temp.txt # on prends que les url on empile dans un fichier texte placé dans le répertoire
    cd $rep # on va dans le répertoire
    wget -i temp.txt # on WGET les url du fichier temp
    rm temp.txt # on supprime le fichier temp
    cd .. # on retourne dans le repertoire d'avant
    [/code:1]

    On sauve ce petit bout de script quelque part on le rends executable

    Ensuite on crée un lanceur personalisé sous gnome en disant "lancer dans un terminal", pointant vers le script, on met le lanceur sur le desktop.

    On load une playlist (sur dogma au hasard) avec disons XMMS ou BEEP, on sauve la playlist. Ensuite drag and drop le fichier m3u sur le lanceur, et hop il fait un repertoire télécharge tout les fichiers dedans, c'est beau.

    Merci ArchDude !

    dF
  • yes !
    Justement je me demandais comment faire pour en faire un bouton, ben voila c'est tout simple en fait.

Ajouter un commentaire