Comment puis-je exporter tous les mp3 d'une playlist dans Banshee?

13

J'ai toute ma musique, non triée dans / home / blah / Music /. C'est dans des dossiers aléatoires, ce qui n'a pas d'importance pour moi car Banshee s'occupe de tout. J'ai une grande playlist contenant un bon 2/3 de ma musique. Comment puis-je copier tous les fichiers mp3 répertoriés dans la liste de lecture dans un nouveau dossier?

Remarque: je n'essaie pas d'exporter une liste de lecture, mais de copier les mp3 répertoriés dans la liste de lecture.

La forme négative
la source

Réponses:

13

Je l'ai fait avec rhythmbox, créez un dossier sur votre bureau en lui donnant un nom. trouvez maintenant la liste de lecture que vous aimez lorsque la liste de musique s'affiche, cliquez sur l'une des chansons et maintenez la touche Ctrl + enfoncée la liste des trous maintenant faites-la glisser et déposez-la dans le dossier sur votre bureau. cela devrait faire une copie de votre musique. vous pouvez également essayer le lecteur de musique clémentine, il a quelques outils pour vous aider à exporter.

http://www.clementine-player.org/

MrMassiveManMeat
la source
4
+1 Cela fonctionne également avec Banshee.
Sabacon
1
Je suppose que cela ne devient pas plus intuitif. Dans Banshee, vous pouvez créer des listes de lecture intelligentes, ce qui vous permet de copier exactement ce que vous voulez.
The Negative Shape
Merci, fonctionne bien, mieux que les scripts qui utilisent (j'en ai cherché beaucoup). Tu es mon héros
Indacochea Wachín
15

Trouvé la solution, fonctionne avec n'importe quel lecteur multimédia.

  1. Exportez votre liste de lecture dans un fichier m3u. Je l'ai appelé playlist.m3u

  2. Ouvrez un terminal dans le dossier où vous avez enregistré le fichier.

  3. Copiez et collez ceci:

    sed "s/#.*//g" < playlist.m3u | sed "/^$/d" | while read line; do cp "${line}" '/path/to/output/folder/'; done
    

N'oubliez pas de modifier le chemin d'accès au dossier de sortie souhaité.

Remarque: le terminal ne donnera aucune sortie pendant la copie des fichiers, soyez patient;)

La forme négative
la source
1
Impressionnant! J'aimerais pouvoir le +1 mille fois.
Pratyush
C'est le moyen le plus simple, si votre joueur Banshee. Merci!
nitines
4

Bonne question, c'est une fonctionnalité bien nécessaire, il est étrange de voir combien peu de lecteurs multimédias l'ont.

Voici une méthode que vous pouvez essayer, elle peut avoir des limites dans votre cas, surtout si votre liste de lecture est très grande, écrivez un CD de données sur le disque avec les fichiers de la liste de lecture, enregistrez l'image .iso résultante où vous le souhaitez, puis extrayez-la.

Voici les étapes:

  • Sélectionnez votre liste de lecture sur la gauche. Assurez-vous que tous les artistes est sélectionné dans le volet supérieur droit.

  • sélectionnez toutes les pistes dans la liste de lecture dans le volet inférieur droit.

  • Faites un clic droit et cliquez sur Graver le CD

Brasero devrait commencer avec toutes les pistes prêtes à être gravées sur CD, il voudra par défaut graver un CD audio, maintenant il y aura probablement tellement de pistes qui ne rentreront probablement pas sur un CD audio, donc la prochaine étape est de changer la projet brasero.

  • Cliquez sur le menu projet dans brasero, puis sélectionnez Nouveau projet de données dans le menu déroulant.

Il vous sera demandé "Voulez-vous supprimer la sélection de fichiers ou l'ajouter au nouveau projet?"

  • Cliquez sur le bouton Conserver la sélection de fichiers.

Brasero est maintenant prêt à écrire une image Iso avec tous les fichiers de votre liste de lecture à l'emplacement de votre choix.

  • Cliquez sur le bouton de gravure en bas à droite, choisissez votre emplacement et nommez l'image iso, le processus d'écriture sera assez rapide car aucun transcodage ou normalisation n'est effectué.

  • Faites un clic droit sur l'image .iso et extrayez-la, cela créera un dossier avec les fichiers.

Si vous le souhaitez, vous pouvez continuer et graver le CD en tant que sauvegarde ou si vous devez en donner une copie à quelqu'un.

Voir les captures d'écran:

Fenêtre principale de Banshee

Banshee écrit le menu du CD

Banshee écrit le menu du CD

Fenêtre du projet CD audio Brasero

Projet Brasero Audio CD, remplacez-le par un projet de données

Sélection de projets Brasero

Les menus Brasero montrant comment changer le type de projet

Projet de CD de données Brasero

Le projet de données qui peut gérer une bonne quantité de mp3

Sabacon
la source
3

Merci The Negative Shape pour cette excellente solution! Je l'ai modifié pour que les fichiers soient renommés en fonction de leur position dans la liste de lecture.

sed "s/#.*//g" < playlist.m3u | sed "/^$/d" | while read line; do (( COUNTER++ )); filename="${line##*/}"; cp "${line}" "/path/to/output/folder/$COUNTER - $filename"; done
sdl
la source
2

Je laisserai également mon script car il peut être utile à quelqu'un. https://gist.github.com/CRImier/9777606

import os
import shutil

directory_name = "playlist/"
playlist_name = "playlist.m3u"

f = open(playlist_name, "r")
files = []
for line in f:
    line = line.strip().strip("\n").strip("\r")
    if line and not line.startswith("#"):
        files.append(line)
dir_contents = os.listdir(directory_name)
for file in files:
    try:
        filename = os.path.basename(file)
        if filename not in dir_contents:
            shutil.copy(file, "playlist/")
            print filename
        else:
            print ".", #File already there
    except Exception as e:
        print str(e)

C'est du pur Python et ne copie pas les chansons deux fois lorsqu'il est exécuté plusieurs fois. J'espère que cela aide quelqu'un =)

Арсений Пичугин
la source
0

Voici un script que j'utilise pour copier des fichiers du fichier /home/user/playlist.m3u dans le dossier / home / user / export / tant que vos fichiers réels sont dans / home / user / Music / si ce n'est pas simplement changer le une ligne dans le script.

#!/bin/bash
m3u=$(sed /#.*/d "/home/user/playlist.m3u"|sed 's/\.\.\/\.\./\/home\/user/g');

echo "$m3u" | while read line; do
    newFile=$(echo $line| sed 's/\/home\/user\/Music\//\/home\/user\/export\//');
    newPath=$(echo "$newFile" | grep -o .*\\/);

    mkdir -p "$newPath";
    cp "$line" "$newFile";  
done;
exit 0;

La différence avec le fait de faire glisser des entrées de banshee dans un dossier est que ce script conservera la hiérarchie de vos /artists/albums/track.mp3 ou toute autre hiérarchie dont vous disposez pour refléter exactement la liste de lecture m3u que vous créez. Ainsi, aucun doublon n'est possible et chaque piste est à sa place d'origine.

Je l'ai fait parce que mon téléphone n'a que MTP et qu'il est un peu flou sous Ubuntu. De plus, Banshee synchronisera mon Android de manière très chaotique. Je dois donc presque l'utiliser pour transférer wifi mon dossier d'exportation.

sinekonata
la source
0

J'ai amélioré le script python donné par l'utilisateur: "Арсений Пичугин" afin qu'il préserve la structure du répertoire lors de la copie des fichiers vers un nouvel emplacement. Cela vous permet ensuite de copier le fichier .m3u et les fichiers musicaux cibles vers un nouvel appareil, et les liens ne seront pas rompus, de sorte que la liste de lecture sera en fait LUE, comme sur votre lecteur mp3 ou votre téléphone. Le script suppose qu'il se trouve dans le dossier de niveau supérieur où se trouvent les fichiers musicaux et où se trouve le fichier .m3u.

import os
import shutil

#here, add the name of the dir where the playlist files will be copied
directory_name = "/home/username/Desktop/Music/"
playlist_name = "Test_Favorites.m3u"

f = open(playlist_name, "r")
files = []
for line in f:
    line = line.strip().strip("\n").strip("\r")
    if line and not line.startswith("#"):
        files.append(line)
dir_contents = os.listdir(directory_name)
#print dir_contents
for file in files:
    try:
        filename = os.path.basename(file)
        filepath = os.path.dirname(file)
        newpath = directory_name + "" + filepath
        newname = newpath + "/" + filename
        if os.path.exists(newname):
          print filename + " already existed, not copied."
        else:
          if not os.path.exists(newpath):
            os.makedirs(newpath)
          shutil.copy(file,newpath)
          print newname
    except Exception as e:
        print str(e)

prendre plaisir!

Guy Smiley
la source