Einstellen des ID3-Titel-Tags auf den Namen der MP3-Datei


14

Hat jemand ein Bash-Skript, das eine Medienbibliothek durchläuft und das ID3-Titel-Tag jeder MP3-Datei so festlegt, dass es dem Namen der Datei entspricht?

Ich bin auch offen für andere automatisierte Methoden. Dies kann eine GUI-Anwendung sein oder alles, was die Arbeit automatisch erledigt.

Eine EasyTag-Methode finden Sie hier: So benennen Sie Bulk-Titel-Tags in MP3-ID3-Dateien um - Leider verstehe ich die Schritte nicht.


Sie können Ihre eigene Frage beantworten. Listen Sie die Schritte auf, die Sie gefunden haben, ubuntuforums.orgund geben Sie Ihre Quelle an. :) Dies wird zukünftigen Besuchern von Superuser helfen, falls der ubuntuforums.orgLink nicht mehr verfügbar ist.
Iglvzx

3
Hier sind ein paar Tipps: 1) Überfüllen Sie Ihre Frage nicht mit "Bearbeiten 1", "Bearbeiten 2" usw. Beheben Sie Probleme mithilfe von Kommentaren. 2) Wenn Sie eine Lösung finden, posten Sie sie als Antwort, als wollten Sie die Frage eines anderen beantworten. Stecke die Antwort nicht in die Frage . Dort suchen die Leute nicht danach :) Verwenden Sie auch Blockzitate für alles, was Sie an anderer Stelle zitieren (siehe Formatierungshilfe).
Slhck

Ich habe ein Skript korrekt Tag MP3 - Dateien im Format „Artist - Track.mp3“ und die Datei dann auf „Track.mp3“ umbenennen: gist.github.com/ZachSaucier/f51e608ac75e8ed6e96cd54a9ec103b0 miteyed3
Zach Saucier

Antworten:


17

EasyTAG ist in der Tat ein großartiges Werkzeug für dieses Problem. Ich habe hier meine Antwort gefunden . In Bezug auf die Verwendung stellt sich heraus, dass die beste Referenz die EasyTAG-eigene Dokumentation ist .

Öffnen Sie EasyTag, navigieren Sie zu einem Ordner mit Musikdateien, wählen Sie alle Dateien im Ordner oder alle Dateien aus, die Sie markieren möchten, und klicken Sie auf die Schaltfläche "Dateien scannen" welches es ist).

Stellen Sie dann sicher, dass die Scanner-Dropdown-Liste auf "Tag ausfüllen" eingestellt ist, und nehmen Sie dann im Feld "Tag ausfüllen" die entsprechenden Änderungen vor, bis das Beispiel unter dem Feld so aussieht, wie Sie es suchen. Wenn Sie weitere Hilfe benötigen, klicken Sie auf "?" Klicken Sie auf die Schaltfläche für die Legende (Auflistung der verschiedenen möglichen Codes, mit denen übersetzt werden soll) und klicken Sie auf die Maskentaste, um einige Startpunkte aufzulisten.

Wenn Sie mit den Ergebnissen zufrieden sind, klicken Sie auf die Schaltfläche "Dateien scannen" (im Dialogfeld "Dateien scannen", nicht auf das, auf das Sie ursprünglich geklickt haben, um zu sehen, wo Sie sich befinden ... die Symbole sehen gleich aus), und Ihre Änderungen werden übernommen . Wenn Sie den Namen des Interpreten oder des Albums nicht erhalten, wählen Sie einfach alles aus, was Sie ändern möchten, geben Sie die Daten ein und klicken Sie auf die kleine Schaltfläche neben diesem Feld. Alle ausgewählten Dateien werden dann ausgefüllt oder in diesen Interpreten oder dieses Album geändert. Dies funktioniert in den meisten Bereichen.

Wenn Sie fertig sind, klicken Sie auf die Schaltfläche Speichern und Sie sind fertig.

PS: Der CDDB-Scanner funktioniert häufig recht gut, wenn Sie vollständige Alben oder zumindest im Handel erhältliche Songdateien haben, die Sie markieren möchten.

PPS: Ich bin anscheinend immer noch halb wach. Versuchen Sie dies entsprechend dem, was Sie in Ihrem ursprünglichen Beitrag geschrieben haben, im Feld "Tag füllen":

%n. %a - %t

Hier ist der Abschnitt, der für diese Frage relevant ist:


1.2.2. Automatisch mit "Fill Tag" -Scanner:

Einige Bedingungen für die Verwendung dieses Modus:

  • Dateien sortiert nach Alben
  • Dateinamen oder übergeordnetes Verzeichnis enthalten Tag-Informationen (Künstler, Album, Titel, ...)
  • leere oder nicht korrekte Tags

Der Scanner zum Füllen von Tags verwendet ein Muster, um Wörter in Dateinamen und Verzeichnissen mit den Tag-Einträgen zu verknüpfen. Auf diese Weise können die Tag-Felder automatisch ausgefüllt werden, indem Sie auf die grüne Schaltfläche im Scannerfenster oder in der Symbolleiste klicken. Wenn das Tag teilweise vervollständigt ist, verwenden Sie die Option „Felder beim Scannen des Tags überschreiben“ auf der Registerkarte „Scanner“ im Fenster „Voreinstellungen“, um alle Felder durch die neuen Werte zu ersetzen.

Jeder Code entspricht einem Feld nach diesen Regeln:

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

Hinweis: Um Fehler zu vermeiden, wird empfohlen, einen Code nur einmal im Muster zu verwenden. Natürlich werden, wie beim manuellen Markieren, nur die ausgewählten Dateien vom Scanner verarbeitet. Sie können die definierten Muster in der Liste verwenden oder Ihre eigenen Muster schreiben, um dem Format Ihrer Dateinamen und Verzeichnisse zu entsprechen. Um Fehler bei der Auswahl des richtigen Musters oder beim Schreiben zu vermeiden, werden in einer Vorschau unmittelbar die Ergebnisse angezeigt, bevor das Muster angewendet wird. Wenn Sie Hilfe zu den verschiedenen Codes benötigen, drücken Sie auf die Schaltfläche „Hilfe“ (den Rettungsring), um die Legende jedes Codes anzuzeigen. Wenn Sie Ihre eigenen Muster speichern, bearbeiten oder sortieren möchten, wird durch Drücken der Schaltfläche „Maske“ ein kleiner Editor im Scannerfenster angezeigt.

Nachfolgend ein Beispiel für die Verwendung von Mustern:

a) den folgenden Dateinamen:

“/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

Ich habe eine Vielzahl von Kommandozeilen-Tools für nützlich befunden:

id3v2

id3v2 ist ein Befehlszeilen-ID3v2-Tag-Editor. Sie können ID3V2-Tags hinzufügen / ändern / löschen und ID3V1-Tags in ID3V2-Tags konvertieren. Es benutzt id3lib. Ich suche einen Mitbetreuer. Bitte mailen Sie myers_carpenter, wenn Sie interessiert sind.

eyeD3

eyeD3 ist ein Python-Modul und ein Programm zur Verarbeitung von ID3-Tags. Informationen zu MP3-Dateien (z. B. Bitrate, Abtastfrequenz, Wiedergabezeit usw.) werden ebenfalls bereitgestellt. Die unterstützten Formate sind ID3 v1.0 / v1.1 und v2.3 / v2.4.

Diese sind ideal, wenn Sie Skripte erstellen, um Verzeichnisse zu durchsuchen.


2

Dies ist nicht immer perfekt, aber ich habe es verwendet, um die Namen von MP3-Dateien mit nur üblichen Unix-Tools (einschließlich der Busybox-Versionen) zu ermitteln. Vielleicht kann jemand mit mehr als nur 6 Tom Petty-MP3s weitere Tests durchführen.

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

Bearbeiten: Ich habe die Frage falsch verstanden, aber da wir dies wissen, können wir sed verwenden, um $ TITLE durch den Namen der Datei "$ x" zu ersetzen, indem wir sed verwenden, um die Zeichenfolge an der richtigen Stelle zu ersetzen

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

Ich bin fast zu 100% sicher, dass dies nicht die gesamte ID3-Spezifikation erfüllt, aber es kann für den grundlegenden persönlichen Gebrauch ausreichen, solange Sie zuerst ein Backup erstellen


Vielen Dank. Ich habe mit EasyTAG einen Weg gefunden, mein Ziel zu erreichen, aber Ihre Antwort beantwortet meine ursprüngliche Frage am besten. strings ist ein gutes Dienstprogramm, über das Sie Bescheid wissen müssen. (Ich habe es zuvor noch nicht verwendet.) Könnten Sie eine vollständige Lösung basierend auf Ihrer Bearbeitung veröffentlichen, damit ich sicher sein kann, dass ich die vorgeschlagene Änderung verstehe?
MountainX

2

Für Ubuntu 18.04 LTS (ich gehe davon aus, dass alle Debian-Versionen dies problemlos ausführen):

  • Installieren Sie eyeD3 mit sudo apt install eyeD3

  • Erstellen Sie eine Datei für das Bash-Skript (ich habe "touch" verwendet; Sie können einen beliebigen Texteditor verwenden)

  • Kopieren Sie diese und fügen Sie sie in die Datei ein:

    Kopiert den Dateinamen und schreibt ihn in das Title-Tag

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

    Wenn Sie den Fortschritt nicht anzeigen möchten, lassen Sie die Zeile echo $a über dem Wort "Fertig" aus.

  • Machen Sie die Datei ausführbar:

    chmod +x filename
  • Kopieren Sie das Skript in das Verzeichnis, in dem es ausgeführt werden soll - das Verzeichnis, in dem sich Ihre Mediendateien befinden. beispielsweise:

    cp filename /music/directory
  • Navigieren Sie zu dem Verzeichnis, in das Sie das Skript gerade kopiert haben:

    cd /music/directory
  • Führen Sie das Skript aus:

    ./filename

    ERLEDIGT

Bei Ubuntu 18.04 LTS hat es funktioniert - meine Frau hat das in ungefähr 3 Minuten für mich geschrieben, daher kann ich keine Fragen beantworten, wenn es bei Ihnen nicht funktioniert. Ich bin nicht Programmierer versiert, ich richte dieses Web ein, DNS, SSH, SFTP, FTP, AD / Domain, Datei, Firewall, Router / Server, irgendwie ein Typ :-) Ich HASSE es, Skripte zu schreiben, zu programmieren und so etwas. Ich LIEBE es, Skripte, Programme und ähnliches zu nutzen :-)


1

Ich bin überrascht, dass niemand die einfachste Lösung vorgeschlagen hat mit ffmpegoder avconv:

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

0

Ich würde eyeD3 in einer Python-Virtualenv mit installieren, pip install eyeD3damit Sie die zuletzt veröffentlichte Version erhalten. Nach diesem Lauf:

for i in *.mp3; do /your/venv/bin/eyeD3 --title "$i" "$i"; done
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.