Je recherche un logiciel sous Linux, qui ajoutera la pochette d'album/couverture à chacun des fichiers sélectionnés en mode batch. La pochette de l'album est un jpg/png stocké sur mon ordinateur. Ce sera génial s'il peut importer à partir d'Internet.
Actuellement, j'ai essayé à la fois Rhythmbox et Banshee. J'ai également essayé lame
et easytag
, mais il semble qu'ils ne prennent pas en charge le mode batch. lame
est pas en ajoutant les propriétés, mais en écrasant. (Je sais que boiteux est la ligne de commande niquement que j'ai utilisée jusqu'à présent).
Donc, fondamentalement, je recherche:
<some magic s/w> --picture=<my chosen picture> Music/Artist/*.mp3
Cela ajoutera l'image aux métadonnées du fichier, de façon permanente.
Pouvez-vous me suggérer un tel logiciel?
En utilisant lame
vous pouvez le faire en utilisant un petit script:
$ lame --ti /path/to/file.jpg audio.mp3
Si les fichiers sont nommés quelque chose comme ça, vous pouvez créer un script Shell pour faire ce que vous voulez:
for i in file1.mp3 file2.mp3 file3.mp3; do
albart=$(echo $i | sed 's/.mp3/.jpg/')
lame --ti /path/to/$albart $i
done
Vous pouvez rendre ce qui précède légèrement plus compact et éliminer le besoin de sed
en utilisant bash
pour le faire en lui faisant supprimer le suffixe correspondant:
...
albart="${i%.mp3}.jpg"
...
Si vous voulez le faire à grande échelle, je vous suggère d'utiliser Picard qui est l'outil frontal pour utiliser la base de données MusicBrainz. Il existe un plugin pour Picard appelé "Cover Art Downloader", qui peut le faire pour des lots de votre collection.
Cependant, ce qui précède ne semble pas être géré par la ligne de commande.
Une autre option serait d'utiliser beets
. Cela peut être généré à partir de la ligne de commande et utilise la base de données MusicBrainz pour l'approvisionnement de la pochette d'album.
Vous pouvez soit vous procurer la pochette de l'album à l'aide de FetchArt Plugin ou l'intégrer à l'aide de EmbedArt Plugin .
Jetez également un œil à cette Q&R U&L précédemment posée intitulée: Quel outil de balisage mp3 pour Linux? . Il existe plusieurs outils alternatifs répertoriés dans ce fil.
Une solution serait d'utiliser ffmpeg:
ffmpeg -i input.mp3 -i cover.jpg -map_metadata 0 -map 0 -map 1 output.mp3
Vous pouvez mettre ceci dans une boucle for pour faire chaque MP3 dans un répertoire:
for f in ./*.mp3; do ffmpeg -i "$f" -i cover.jpg -map_metadata 0 -map 0 -map 1 out-"${f#./}"; done
Cela créera un fichier de sortie distinct (donc si vous avez un fichier appelé foo.mp3
, vous vous retrouverez avec les deux foo.mp3
et out-foo.mp3
); c'est parce que ffmpeg ne peut pas écraser son entrée. Vous pouvez résoudre ce problème avec quelque chose comme:
for f in ./*.mp3; do \
ffmpeg -i "$f" -i cover.jpg -map_metadata 0 -map 0 -map 1 out-"${f#./}" \
&& mv out-"${f#./}" "$f"; done
Utiliser ffmpeg pour ce problème est un peu comme utiliser un missile de croisière pour casser un écrou. Des outils de manipulation de métadonnées plus spécialisés seront certainement en mesure de le faire dans une commande plus propre et plus courte.
Pour MP3:
eyeD3 --add-image="cover.jpg":FRONT_COVER "file.mp3"
Pour FLAC:
metaflac --import-picture-from="cover.jpg" "file.flac"
OGG/Vorbis semble être plus compliqué .
Vous pouvez utiliser FancyAudio gem pour cela. Il peut ajouter des pochettes d'album aux fichiers mp3. La documentation est disponible ici .
fonctionnalités
La capture d'écran ci-dessous montre la sortie de fancy_audio lorsqu'il est exécuté dans un dossier contenant une image et plusieurs fichiers mp3
La capture d'écran ci-dessous montre la sortie de fancy_audio lorsqu'il est exécuté dans un dossier contenant des fichiers mp3 et image
Utilisez mid3v2 de mutagen:
mid3v2 -p <image> <mp3>
L'utilisation de lame ou de ffmpeg recode le MP3 au lieu d'ajouter uniquement l'image en tant que méta-blob. Et l'interface utilisateur n'est pas en ligne de commande.
OP déclare qu'il préférerait que la couverture soit téléchargée sur le Web, et je viens d'écrire un script assez correct pour cela en utilisant eye3D
et sacad
, tous deux installables depuis pip. eye3D
est très utile à cet effet car il ne semble pas ré-encoder l'audio et utiliser le --to-v2.4
flag gère tous les fichiers mp3, quel que soit le type de balise id3. Le script doit être lancé à partir du répertoire contenant les fichiers mp3. Il peut être exécuté sans arguments, en devinant l'artiste et le nom de l'album à partir des balises id3, ou avec des noms manuels comme arguments, par ex. embedart "pink floyd" "dark side of the moon"
. Il est écrit pour le shell poisson, mais devrait facilement être portable pour bash si vous changez toutes les commandes set en bash variables.
function embedart
if echo $argv | grep -q -e '-h'
echo 'embedart "[Artist]" "[Album]"'
return
end
if test $argv[1]
set artist $argv[1]
set album $argv[2]
else
set artist (eyed3 (ls *mp3 | head -1) | ggrep -oP "artist.*: \K.*" | head -1)
if not test $artist
echo "No artist found!"
return
end
set album (eyed3 (ls *mp3 | head -1) | ggrep -oP "album.*: \K.*" | head -1)
if not test $album
echo "No album found!"
return
end
end
sacad $artist $album 350 cover.jpg -v warning 2> /dev/null > /dev/null
eyeD3 --to-v2.4 --add-image "cover.jpg:FRONT_COVER" *mp3 -Q 2> /dev/null > /dev/null
rm cover.jpg
echo "Done!"
end
eyeD3 ne fonctionne pas avec Unicode. Si des caractères non-ascii se trouvent dans le nom de fichier .mp3 (ou même dans un nom de répertoire ancêtre, tel que le répertoire Album), il abandonne. LTA.
Vous n'avez donc pas de chance si le titre de l'album ou de la chanson n'est pas écrit en anglais!
Par exemple:
cp yoursong.mp3 /tmp/Странджанска.mp3
eyeD3 --add-image folder.jpg:FRONT_COVER Странджанска.mp3
Apparemment, eyeD3 souhaite placer le chemin complet du fichier .mp3 dans le fichier .mp3 et ne peut pas gérer les caractères non ascii.
Exception non interceptée: le codec 'ascii' ne peut pas coder les caractères en position 5-16: ordinal pas dans la plage (128) Eyed3: ERREUR: le codec 'ascii' ne peut pas coder les caractères en position 5-16: ordinal hors de portée (128) Traceback ... (trace longue omise) ...