Définition de la balise de titre ID3 sur le nom de fichier MP3


13

Quelqu'un at-il un script bash qui passe par une médiathèque et définit la balise de titre id3 de chaque fichier MP3 sur le même nom que le nom du fichier?

Je suis ouvert à d'autres méthodes automatisées aussi. Il peut s'agir d'une application graphique ou de tout ce qui fera le travail automatiquement.

Une méthode EasyTag est notée ici: Comment renommer une balise de titre en vrac dans des fichiers mp3 ID3 - Malheureusement, je ne comprends pas les étapes.


Vous pouvez répondre à votre propre question. Énumérez les étapes que vous avez trouvées ubuntuforums.orget citez votre source. :) Cela aidera les futurs visiteurs de Superuser, dans le cas où le ubuntuforums.orglien ne serait plus disponible.
iglvzx

3
Voici quelques conseils: 1) N'encombrez pas votre question avec "modifier 1", "modifier 2", etc. Résolvez les problèmes en utilisant des commentaires. 2) Si vous trouvez une solution, postez-la comme une réponse, comme si vous essayiez de répondre à la question de quelqu'un d'autre. Ne mettez pas la réponse dans la question . Ce n'est pas là que les gens le cherchent :) Utilisez également des guillemets pour tout ce que vous citez ailleurs (voir l'aide au formatage).
Slhck

Réponses:


17

EasyTAG est en effet un excellent outil pour résoudre ce problème. J'ai trouvé ma réponse ici . En termes d'utilisation, la meilleure référence s'avère être la propre documentation d'EasyTAG .

Ouvrez EasyTag, naviguez vers un dossier contenant des fichiers musicaux, sélectionnez tous les fichiers du dossier ou tous les fichiers que vous souhaitez baliser, cliquez sur le bouton "Numériser des fichiers" (vous devrez les survoler pour les comprendre). lequel il est).

Ensuite, assurez-vous que la liste déroulante du scanner est définie sur "Remplir la balise", puis, dans le champ Remplir la balise, apportez les modifications appropriées jusqu'à ce que l'exemple sous le champ corresponde à ce que vous recherchez. Si vous avez besoin d’aide supplémentaire sur ce qu’il faut mettre dans le champ Remplir la balise, cliquez sur le "?" bouton pour la légende (liste de ce que les différents codes possibles doivent être traduits avec) et appuyez sur le bouton du masque pour lister quelques points de départ.

Lorsque les résultats vous conviennent, cliquez sur le bouton "Numériser les fichiers" (dans la boîte de dialogue Numériser les fichiers, et non celle sur laquelle vous avez cliqué à l'origine pour obtenir l'endroit où vous vous trouvez ... les icônes se ressemblent) et vos modifications seront appliquées. . Si vous n'obtenez pas le nom de l'artiste ou de l'album, sélectionnez simplement tout ce que vous souhaitez modifier, entrez les données et cliquez sur le petit bouton en regard de ce champ. Tous les fichiers sélectionnés seront alors remplis ou remplacés par cet artiste ou cet album. Cela fonctionne dans la plupart des domaines.

Lorsque vous avez terminé, cliquez sur le bouton Enregistrer et vous avez terminé.

PS: Le scanner CDDB fonctionne souvent plutôt bien si vous essayez de baliser des albums complets, ou du moins des fichiers de chanson disponibles dans le commerce.

PPS: Apparemment, je suis encore à moitié réveillé. Selon ce que vous avez écrit dans votre message d'origine, essayez ceci dans le champ Remplir la balise:

%n. %a - %t

Voici la section pertinente à cette question:


1.2.2. Automatiquement avec le scanner «Fill Tag»:

Quelques conditions pour utiliser ce mode:

  • fichiers triés par albums
  • les noms de fichiers ou le répertoire parent contiennent des informations sur les tags (artiste, album, titre,…)
  • balises vides ou pas correctes

Le scanner «Remplir une étiquette» utilise un modèle pour associer des mots dans le nom du fichier et des répertoires aux entrées de la balise. De cette manière, les champs de balises peuvent être complétés automatiquement en appuyant sur le bouton «vert» dans la fenêtre du scanner ou dans la barre d’outils. Si la balise est partiellement complétée, utilisez l'option «Écraser les champs lors de la numérisation» dans l'onglet «Scanner» de la fenêtre «Préférences» pour remplacer tous les champs par les nouvelles valeurs.

Chaque code correspond à un champ, en respectant ces règles:

Strings associated with code    Will fill the field
%a
  Artist
%b
  Album
%c
  Comment
%p
  Composer
%r
  Copyright
%e
  Encoded by
%g
  Genre
%i
  None! (used to ignore a string)
%l
  Number of tracks
%o
  Original artist
%n
  Track
%t
  Title
%u
  URL
%y
  Year

Remarque: pour éviter les erreurs, il est recommandé d’utiliser un code une seule fois dans le modèle. Bien entendu, comme lors du marquage manuel, seuls les fichiers sélectionnés sont traités par le scanner. Vous pouvez utiliser les modèles définis dans la liste ou écrire vos propres modèles pour correspondre au format de vos noms de fichiers et répertoires. Pour éviter les erreurs lors de la sélection ou de l'écriture du bon motif, un aperçu affiche immédiatement les résultats avant d'appliquer le motif. Si vous avez besoin d'aide avec les différents codes, appuyez sur le bouton «Aide» (la bouée de sauvetage) pour afficher la légende de chaque code. De plus, si vous souhaitez enregistrer vos propres motifs, les éditer ou les trier, appuyez sur le bouton «Masquer» pour afficher un petit éditeur dans la fenêtre du scanner.

Ci-dessous un exemple d'utilisation de motifs:

a) le nom de fichier suivant:

“/mnt/MP3/EVANESCENCE  Fallen (2003)  Rock/01. Going Under.mp3

b) with the pattern :

“%a - %b (%y) - %g/%n. %t

c) you will fill the tag with theses strings :

    Artist (%a) => EVANESCENCE
    Album (%b) => Fallen
    Year (%y) => 2003
    Genre (%g) => Rock
    Track (%n) => 01
    Title (%t) => Going Under


3

J'ai trouvé divers outils de ligne de commande utiles:

id3v2

id3v2 est un éditeur de tag id3v2 en ligne de commande. Vous pouvez ajouter / modifier / supprimer des tags id3v2 et convertir des tags id3v1 en tags id3v2. Il utilise id3lib. Je cherche un co-responsable. S'il vous plaît écrivez à myers_carpenter si vous êtes intéressé.

eyeD3

eyeD3 est un module et un programme Python pour le traitement des balises ID3. Des informations sur les fichiers mp3 (débit binaire, fréquence d'échantillonnage, temps de lecture, etc.) sont également fournies. Les formats pris en charge sont ID3 v1.0 / v1.1 et v2.3 / v2.4.

Celles-ci sont idéales lorsque vous écrivez quelque chose pour analyser des répertoires.


2

Cela n’a pas toujours un rendu parfait, mais je l’ai utilisé pour obtenir le nom des fichiers MP3 en utilisant uniquement les outils Unix courants (y compris les versions busybox). Peut-être qu’une personne possédant plus de 6 mp3 Tom Petty pourra peut-être la tester davantage.

for x in *.mp3; do
  TITLE=$(strings "$x" |grep TAG |grep -v TAGL |sed "s/^.*TAG//g ; /^L$/d ; /^@$/d ; /^$/d ; /^Ac$/d")
  #mv "$x" "$TITLE.mp3"
  echo $x" "$TITLE.mp3" #just echo for now, until further tested
done

Edit: j’ai mal interprété la question, mais sachant ce qui précède, nous pouvons utiliser sed pour remplacer $ TITLE par le nom du fichier "$ x" en utilisant sed pour remplacer la chaîne en place.

sed -i "s/$TITLE/$x/" "$x"

Je suis presque à 100% sûr que cela ne respecte pas toutes les spécifications ID3, mais cela peut suffire pour une utilisation personnelle de base tant que vous faites une sauvegarde en premier


Merci. J'ai trouvé un moyen d'atteindre mon objectif en utilisant EasyTAG, mais votre réponse répond en réalité à ma question initiale. strings est un bon utilitaire à connaître. (Je ne l'ai pas utilisé auparavant.) Pourriez-vous publier une solution complète basée sur votre modification afin que je puisse être sûr de comprendre le changement suggéré?
MountainX

2

Pour Ubuntu 18.04 LTS (je suppose que toutes les versions de Debian fonctionneront parfaitement):

  • Installez eyeD3 avec sudo apt install eyeD3

  • Créez un fichier pour le script bash (j'ai utilisé "touch"; vous pouvez utiliser l'éditeur de texte de votre choix)

  • Copiez ceci et collez-le dans le fichier:

    Copie le nom du fichier et l’écrit dans la balise Title

    for x in *; do
        eyeD3 --title="${x%.*}" "$x"
        echo $a
    done

    Si vous ne voulez pas voir la progression, omettez la ligne echo $a au-dessus du mot "terminé".

  • Rendre le fichier exécutable:

    chmod +x filename
  • Copiez le script dans le répertoire dans lequel vous souhaitez l'exécuter - celui qui contient vos fichiers multimédia. par exemple:

    cp filename /music/directory
  • Accédez au répertoire dans lequel vous venez de copier le script:

    cd /music/directory
  • Exécutez le script:

    ./filename

    TERMINÉ

Cela a fonctionné pour moi sur Ubuntu 18.04 LTS - ma femme a écrit cela pour moi en environ 3 minutes, donc je ne peux pas répondre aux questions si cela ne fonctionne pas pour vous; Je ne suis pas un programmeur averti, je suis ce Web, DNS, SSH, SFTP, FTP, AD / Domain, fichier, pare-feu, routeur / serveur un peu mec :-) Je déteste faire du script, la programmation et quelque chose comme ça. J'adore profiter des scripts, de la programmation et de tout le reste :-)


1

Je suis surpris que personne n'ait suggéré la solution la plus simple avec ffmpegou avconv:

for i in *.mp3; do avconv -y -i "$i" -c copy -metadata title="$i" new_"$i"; done;

0

J'installerais eyeD3 dans un environnement virtuel python avec pip install eyeD3la version la plus récente. Après cette course:

for i in *.mp3; do /your/venv/bin/eyeD3 --title "$i" "$i"; done
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.