Ordnername als Albumname/Interpret

Hallo,

ich arbeite jetzt seit ein paar Tagen mit Mp3Tag und habe mir schon eine ganz schön lange Formatierliste zusammengebastelt, da bei einer Fehlkonvertierung viele Informationen verloren gegangen sind.
Was ich noch brauche ist, dass der Ordnername als Albumname angegeben wird.

Beispiel:

(Überordner) Rammstein
(Unterordner) Rosenrot
01 Benzin
02 ...

Der Ordnername Rosenrot soll jetzt in den Liedinfos auftauchen.
Ist es auch möglich, den Überordner als Interpreten anzugeben?

Ich hoffe Ihr könnt mir helfen.

MfG

Aktion>Tagfeld formatieren>

Feld: Album

Formatstring: %_workingdir%

Okay

dann hast du den Ordnernamen im Tag Album stehen

Man kann den ganzen Pfad auf die Tags verteilen, aber da muss ich auch erst mal probieren. Vielleicht kommt in der Zeit Hilfe von einem mp3tag-Meister :slight_smile:

Danke, das hat schonmal weitergeholfen : )
Gibt es auch eine Möglichkeit, alles bis zu einem bestimmten Zeichen zu löschen? Konnte da in den FAQ nichts finden.

Also

XYZ - Liedname

Alles bis zum Bindestrich soll weg.

Erst mal zum Pfad auf die Tags verteilen.
Ich bin kein Experte, aber ich kann mir schon ab und an mal helfen und konstruiere mir Möglichkeiten, was vielleicht Kopfschütteln zur Folge hat.

Mein Testpfad
C:\Users\SFL\Desktop\Neuer Ordner\test (das ist der Inhalt des "Verzeichnis" in der Sidebar.)
11 - A La Carte - You Get Me On The Run.mp3 (das ist der Dateiname der bei mir so in der Spalte Dateiname steht)

Aktion>Tagfelder importieren>

Quellformat: %_path%

String: %dummy%\%dummy%\%dummy%\%dummy%\%dummy%\%album%\%track% - %artist% - %title%.mp3

Du müsstest den String quasi an deinen Pfad anpassen oder mal schauen ob dir jemand was einfacheres anbietet.

obiger Beispielpfad zusammengefasst: C:\Users\SFL\Desktop\Neuer Ordner\test\11 - A La Carte - You Get Me On The Run.mp3
Du müsstest für jedes xxxx\ also alles was bei mir vor der 11 steht ein %dummy%\ zuteilen.

Kennst du den Konverter Dateiname - Tag?
Wenn der Pfad so lautet:
Rammstein\Rosenrot\01 Benzin

Dann kannst du den mit der Maske
%artist%\%album%\%track% %title%
umsetzen. Wobei, zugegeben, bei Dateinamen, die mehr als 1 Leerzeichen drin haben, das nicht klappt. Wenn das zu blöd ist, dann geht auch die Maske
%artist%\%album%\%dummy%
(das lässt den Titel weg)
oder
%artist%\%album%\%title%
Dann steht alles vom Dateinamen in TITLE.

Zum Ersetzen-Problem oder Löschen:
Du könntest, wenn das XYZ sinnlos ist, es einfach mit "Ersetzen mit Regulärem Ausdruck" weg-ersetzen:
Suchstring: .- (.)
Ersetzen: $1

Wenn das XYZ was ist, was du behalten willst, also z.B. die Track-Nummer, dann könntest du die Daten aus dem Feld in andere Felder importieren.
Wenn also
XYZ - Liedname
in TITLE drinsteht, dann würde die Aktion "Tag-Felder importieren" für %title%
und dem Formatstring
%track% - %title%
die Felder TRACK und TITLE füllen.

So viele Möglichkeiten und so wenig Zeit seufz

Okay danke.
Das Problem ist nur, dass ich das alles für rund 80.000 Lieder und über 500 Ordner machen muss. Das heißt, ich müsste es jedes mal neu einstellen.
Ich versuche extra eine Formatierungsliste zu machen, die mir jegliche Arbeit abnimmt. Also rein, formatieren, raus.

Zum Tag Feld formatieren:
%_workingdir% ist nur mit Vorsicht zu verwenden (eher gar nicht). Lädt man mehrere Ordner in Mp3tag, ist %_workingdir% für alle Ordner gleich.
Besser ist %_directory% für den Ordner, in dem sich die jeweilige Datei befindet, und %_parent_directory% für den Ornder eine Ebene darüber.

Generell würd ich aber den Dateinamen-Tag Konverter empfehlen wie ihn Ohrenkino beschreibt. Das ist hier das einfachste.

Wie hast du denn geprüft, dass alle 80000 Lieder dem Muster entsprechen?
Denn eigentlich ist der Konverter nun genau für solche Massenaktionen gedacht.
Allerdings funktioniert jede Formatierungsliste nur so gut wie die Analyse, die zuvor gelaufen ist, um mit den Sonderfällen klar zu kommen.
Von daher wären vielleicht echte Beispiele für Pfade und Dateinamen nützlich statt so Umschreibungen wie "XYZ - Liedname". Denn wenn das XYZ in Wirklichkeit Zahlen sind, lassen die sich anders behandeln als reiner Text.
Je konkreter die Frage, desto präziser wird die Antwort ausfallen. Hier im Forum sich echte Spezialisten für so was. Glaub mir. :wink:

Wieso? Wo ist das Problem?
Wenn alle Dateipfade nach dem gleichen Schema aufgebaut sind, kannst du beliebig viele Dateien aufeinmal bearbeiten.
Die Konverter Formatstrings werden automatisch im einer History gespeichert. Aktionen kannst du als Aktionsgruppen abspeichern.

Wenn du eine "Formatierungsliste" für unterschiedlich Pfadformate brauchst, brauchst du auch verschiedene Formatstrings.
Oder du bastelst dir ein Gruppe von Tag Feld Formatieren Aktionen, die mit Hilfe von Skript Funktionen und Regulären Ausdrücken für jedes Tag Feld verschiedene Optionen im Dateipfad überprüfen und sich so die Werte holen. Dann wirds aber kompliziert.

Hab mal die provisorische Liste im Anhang hochgeladen.

Noch habe ich einen Befehl davor, mit dem ich einzelne Strings aus den Dateien lösche. Bei vielen Ordnern ist dem Liednamen der Artist vorgestellt.
Diesen will ich auslesen und automatisch wegnehmen lassen.

Also nach dem Motto:

  • get Artist Name
  • _ FILENAME replace "Artist -" zu ""

Wie schreibe ich das?

Alle Ordner wie folgt aufgebaut:

Artist/Album/01 - Lied


Ich würde wirklich den Konverter Dateiname-Tag anschmeissen.
Mit der Maske
%artist%\%album%\%track% - %title%
Dann hast du die einzelnen Daten schön auf die Felder aufgeteilt und kannst die nach Belieben neu bearbeiten. Oder auch neue Dateinamen schreiben - das würde die ganzen Aktionen mit %_filename% unnötig machen, da die fast alle in einem Rutsch mit dem Konverter Tag-Dateiname zu erschlagen sind.
Auch kann man mit Hilfe der Filter
(z.B. einfach F3 drücken und dann %20 eintragen - und schon kriegst du alle Dateien zu sehen, die irgendwo im Tag %20 stehen haben - und nur in denen müsste dann auch %20 durch Blank ersetzt werden)
leichter die Sonderfälle finden. Aber das sagte ich schon.

Von dieser Vorgehensweise würd ich eher abraten. Alles, was du mit Mp3tag tun willst in eine einzige Aktionsgruppe zu packen und dann hoffen, dass das bei 80.000 Liedern funktioniert ist ein bisschen optimistisch. Das kann eigentlich nur gehen, wenn sie alle in der Vergangenheit schon mal penibel nach einheitlichem Schema bearbeitet wurden.
Aber mußt du wissen.

Ansonsten:
Tag Feld formatieren ALBUM: %_workingdir% muss da unbedingt raus. Das funktioniert nur, wenn du immer nur einen Ordner in Mp3tag lädst. Siehe mein Beitrag oben.
Genauso Tag Feld formatieren TRACK: $num(%_counter%,2)

und für deine Methode:

Tag Feld formatieren ALBUMARTIST: %_parent_directory%
Tag Feld formatieren ALBUM: %_directory%
Tag Feld formatieren ARTIST: %_parent_directory%
Tag Feld formatieren TRACK: $regexp(%_filename%,^(\d*).+,$1)
Tag Feld formatieren TITLE: $regexp(%_filename%,^\d*\s*(.+),$1)

Du kannst z.B. auch jeweils die Option einbauen, dass die jeweiligen Felder nur beschrieben werden, wenn sie leer sind, also keine bestehenden Inhalte überschrieben werden. z.B. für ARTIST:
Tag Feld formatieren ARTIST: $if2(%artist%,%_parent_directory%)

Diesen Befehl hast du also in eine extra Aktionsgruppe davor. Gut das kann funktionieren. Du musst uns aber hier dein paar konkrete Dateinamen nennen, einfach nur "vorgestellt" hilft nicht weiter. Entscheidend für die Formatstrings sind die verwendeten Trennzeich incl. Leerzeichen, und welche Variation es da so gibt.

Funktioniert das auch, wenn die Ordner völlig deformiert sind?

Also etwa 500 Ordner die alle sowas enthalten:

Artist/
1983 Album 1
Album 2
Album 3 von BlaBlubb
1992 Album 2/

   CD1
   CD2 (Ordner in Ordner)

Und dann eben die Lieder, die fehlerhaft sind (siehe Anhang)

Denn nach dem Code %artist%\%album%\%track% - %title% werden ja eigentlich die Daten der Lieder ausgelesen. Wenn nun aber die Daten nicht da sind/fehlerhaft sind, dann funktioniert das doch nicht, oder?


Also kann ich dem Programm nicht beibringen, dass er über %_parent_directory% den Artisten ausließt und diesen direkt aus dem Namen der Lieder löscht?

Beispiel:
Milc Inc
Forever
01 - milk inc - forever

Das Milk Inc über parent directory auslesen und lschen?

Nein! Zweimal nein.

Wenn die Ordnerstruktur so unterschiedlich ist wie dieses Beispiel zeigt, wird es nur sehr schwer gehen alles in einer Aktionsgruppe zu erfassen.

Das mit den CD1, CD2 Orndern ging noch. Da gibt es irgendwo im Forum ein Anleitung, wie man aus solche Ordner den Albumnamen bildet und die eventellen DISCNUMBER Felder füllt.

Aber bei den Albumordner seh ich nicht weiter. Da ist ja gar kein Schema drin. Das mit der Jahreszahl ging auch noch. Aber wenn da auch noch der Künster optional drinsteht, musst du dir das schon alles einzeln vorknöpfen. Oder halt in Gruppen mit gleichem Schema.
Übrigens " von BlaBlubb" ist genau das was ich nicht meinte mit konkreten Beispielen. Oder ist als Trennzeichen wirklich " von " verwendet?

Und das zweite nein:
%artist%\%album%\%track% - %title% wie es Ohrenkino für den Dateinamen-Tag Konverter empfohlen hat liest nicht die (Tag-)Daten der Lieder aus, sondern schreibt sie neu. Ausgelesen wird im der Dateipfad.

Ich nehme an du meinst mit "Namen" den Dateinamen. Das geht schon in zwei Schritten.

Schritt 1, wie oben gezeigt:
Aktion: Tag Feld Formatieren
Feld: ARIST
Formatstring: %_parent_directory%

Aktion: Tag Feld Formatieren
Feld: _FILENAME
Formatstring: $regexp(%_filename%,%artist%(?:\s|-)*,,1)

Das löscht den Artist Namen aus dem Dateinamen raus, inklusive aller darauf folgender Leerzeichen und Bindestriche (du hast dich immer noch nicht über die verwendeten Trennzeichen ausgelassen, hier wäre das wichtig).
Aber vorsicht, ist der Künstlername mal gleichzeitig der Songname oder Teil davon, wird er hier auch gelöscht. Dies könnte mann vermeiden, wenn man das mit Trennzeichen präzisieren kann.

EDIT:
ich sehe, du hast noch ein Beispiel hinzugefügt.
Das folgende würde den Arstist Namen nur löschen, wenn darauf die Zeichenfolge " - " folgt:
$regexp(%_filename%,%artist% - ,,1)

EDIT 2:
Ach ja, ich seh noch unterschiedliche Groß/Klein Schreibung im von "Milk Inc". Kann man auch lösen, mit einem zusätzlichen ",1" in der $regexp Funktion. Jetzt gerade ausgebessert in diesem Post.

Wenn jetzt aber noch Varianten kommen wie "Milk Inc" / "Milk Inc." / "Milk-Inc" / "MilkInc" wirds schwierig. Da müßte man für jede Band wieder unterschiedlich Schreibweisen berücksichtigen.

Man könnte den Artist Namen auch lassen wo er ist und ihn einfach ignorieren bei der Suche nach dem Wert für das TITLE Feld.
Das hier würde alles nach dem letzten Bindestich in TITLE schreiben:
$regexp(%_filename%,.+ - (.+),$1)

Das hier alles wäre noch etwas sichere bei verschiedenen Schreibweisen und würde auch funktionieren, wenn gar kein Bindestrich vorhanden ist.:
$regexp(%_filename%,^\d*\s*(?:.+-\s?)*(.+),$1)

Hier findest du im Anhang zum Beispiel meine eigene Aktionsgruppe "Zerlegen: Dateinamen in Tags importieren".
Discogs-Pone Script Version 3 von 2011
Die kann relativ chaotische Dateinamen in Tag umwandeln. Ist aber auch nicht fehlerfrei und basiert absolut auf das Vorkommen von "-" als Trennzeichen.
Eine genaue Erklärung der Funktionsweise kann ich dir aber heute nicht mehr geben, da ist zuviel kompliziertes regex Zeug drin dass ich das selber kaum nachvollziehen kann.

Auf die Idee, diese Aktion gemeinsam mit einer Aktion zum Formatieren des Datei oder Ordnerpfades anzzuwenden würde ich aber nie kommen. Wenn man bei die Zwischenschritte gar nicht mehr kontrolliert, ist die Fehlerwahrscheinlichkeit entsprechend größer
Wenn du eh vorarbeiten willst, warum dann nicht gleich bei der Vorarbeit einzelne Tags füllen,