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 puisque Banshee s'occupe de tout. J'ai une grande liste de lecture 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 ne cherche pas à exporter une liste de lecture, mais à copier les fichiers MP3 répertoriés dans la liste.
J'ai fait cela avec rhythmbox, créez un dossier sur votre bureau pour lui donner un nom. maintenant trouver la liste de lecture que vous aimez quand la liste de musique montre, cliquez sur l'une des chansons et maintenez la touche ctrl + haute en surbrillance la liste des trous maintenant glissez-la et déposez-la dans le dossier situé sur votre bureau. cela devrait faire des copies de votre musique. vous pouvez également essayer le lecteur de musique clémentine, il a quelques outils pour vous aider à exporter.
Trouvé la solution, fonctionne avec n'importe quel lecteur multimédia.
Exportez votre playlist dans un fichier m3u. Je l'ai appelé playlist.m3u
Ouvrez un terminal dans le dossier où vous avez enregistré le fichier.
Copier et coller ceci:
sed "s/#.*//g" < playlist.m3u | sed "/^$/d" | while read line; do cp "${line}" '/path/to/output/folder/'; done
N'oubliez pas de changer le chemin du dossier de sortie souhaité.
Remarque: le terminal n’émettra aucune sortie pendant la copie des fichiers, soyez patient;)
Bonne question, c’est une fonctionnalité très utile. Il est étrange de voir si peu de lecteurs multimédias l’a.
Voici une méthode que vous pouvez essayer. Elle peut avoir des limites dans votre cas, en particulier si votre liste de lecture est très volumineuse, écrivez un CD de données sur le disque avec les fichiers de la liste de lecture, enregistrez l’image .iso obtenue à l’emplacement souhaité, puis extrayez-le.
Voici les étapes:
Sélectionnez votre playlist sur la gauche. Assurez-vous que tous les artistes sont sélectionnés dans le volet supérieur droit.
sélectionnez toutes les pistes de la liste de lecture dans le volet inférieur droit.
Faites un clic droit et cliquez sur Ecrire un CD.
Brasero doit commencer avec toutes les pistes prêtes à être gravées sur un CD; il voudra par défaut écrire un CD audio. Il y aura probablement tellement de pistes qui ne tiendront pas sur un CD audio. La prochaine étape consiste donc à changer le projet brasero.
On vous demandera "Voulez-vous annuler la sélection de fichier ou l'ajouter au nouveau projet?"
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 simplement graver le CD à titre de sauvegarde ou si vous devez en remettre une copie à quelqu'un.
Voir les captures d'écran:
Banshee écrire le menu du CD
projet Brasero Audio CD, changer ceci en un projet de données
Les menus Brasero montrant comment changer le type de projet
Le projet de données pouvant gérer une bonne quantité de mp
Merci La forme négative 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
Je laisserai aussi mon script car il pourrait ê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 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 =)
Voici un script que j'utilise pour copier des fichiers du fichier / home/user/playlist.m dans le dossier / home/user/export / aussi longtemps que vos fichiers réels sont dans / home/utilisateur/Music / sinon changez simplement la ligne du 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 glisser des entrées Banshee dans un dossier est que ce script conserve la hiérarchie de votre /artists/albums/track.mp3 ou de toute autre hiérarchie pour refléter exactement la liste de lecture m3u que vous créez. Donc, de cette façon, aucun doublon n'est possible et chaque piste est à sa place.
Je l'ai fait parce que mon téléphone ne dispose que de MTP et qu'il est un peu flou sous Ubuntu. De plus, banshee synchronisera mon Android de manière très chaotique. Donc, je dois presque utiliser cela pour transférer wifi mon dossier d'exportation.
J'ai amélioré le script python donné par l'utilisateur: "Арсений Пичугин" afin qu'il conserve la structure de répertoires lors de la copie de fichiers vers un nouvel emplacement. Cela vous permet ensuite de copier le fichier .m3u et les fichiers musicaux cibles vers un nouvel appareil. Les liens ne seront pas rompus. La liste de lecture sera alors JOUÉE, 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 de musique 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!