Wie Verzeichnisse (viele) umbenennen mit MP3TAG basierend auf TAGs aus enthaltenen Audiodateien?

Hallo,

ich speichere meine Musik nach folgender Struktur:

Interpret\Erscheinungsjahr - Albumtitel

Nun möchte ich das Verzeichnis "Erscheinungsjahr - Albumtitel" ergänzen durch [Bits per Sample-Frequenz], basierend auf einem beliebigen FLAC-File aus dem entsprechenden Verzeichnis. Die Abtastfrequenz wird ja standardmäßig in der entsprechenden Spalte von MP3TAG angezeigt und die Bits per Sample bekommt man leicht mit einer neuen Spalte hin, die %_bitspersample% anzeigt.

Falls ja, wie genau ist das umsetzbar mit MP3TAG?

Vielen Dank.

P.S.: Für Musikliebhaber wie mich ist MP3TAG ein unverzichtbares Tool, um den Überblick über legal gekaufte Musik zu behalten, die man nicht mehr von CD, sondern eher einem NAS abspielt. Glücklicherweise beschränkt sich MP3TAG nicht nur auf MP3-Files, sondern kann auch (sehr gute) mit FLAC umgehen.

Zum Einrichten und Testen könntest Du es mit dem Konverter Tag -> Tag versuchen.

Die nötigen Inhalte sähen in etwa so aus:
Feld: _DIRECTORY
Format String:
%YEAR% - %ALBUM% - '['%_bitspersample%']'

Ich weiss nicht genau, aus welchem Tag Du das Erscheinungsjahr nimmst. Du müsstest also die Tagnamen entsprechend anpassen.

Bitte beachte: Solltest Du unterschiedliche Bits per Sample-Frequenz im gleichen Verzeichnis gespeichert haben, gibt das mit hoher Wahrscheinlichkeit ein Durcheinander und Deine Alben werden auseinander gerissen.

Also unbedingt zuerst ein Backup Deiner Stücke machen und gut testen.

Wenn das dann genau wie gewünscht funktioniert, können wir daraus einfach eine Aktion machen.

1 Like

Vielen Dank, war auch gerade am Experimentieren mit Tag -> Tag Konverter (ALT-5).
Da ich meine bisherigen Verzeichnisnamen übernehmen möchte, werde ich es zunächst mal versuchen mit:

Feld: _DIRECTORY
Format String:
_%directory% '['%_bitspersample%']'

Kannst Du gerne so machen. Probiere es bitte möglichst auch mit unterschiedlichen %_bitspersample% im gleichen Verzeichnis aus. Nur um sicher zu gehen...

Lass uns bitte wissen, wie es für Dich am Schluss gepasst hat. Davon profitieren andere dann auch wieder.

1 Like

Das mache ich sehr gerne, es funktioniert aber leider doch nicht.

Wie kann ich denn nur das Jahr nutzen, wenn das TAG "year" wie folgt aussieht 2022-07-21 und dem Veröffentlichungsdatum entspricht, also quasi so wie in Deinem Beispiel aber anstelle von %year% nur die ersten 4 Zeichen (von links gesehen)?

Ich hab eine ähnliche, wenn auch etwas komplexere Aktion in Benutzung.
Allerdings schreibt die die Informationen in den Album Tag selber statt in den Ordnernamen (was ich generell nicht empfehlen würde).
Also solltest du für deinen usecase %album% durch %_directory% und / durch - (oder ein anderes Zeichen deiner Wahl) ersetzen.

Meine Aktion prüft erst via regex, ob der albumname bereits [bitspersamle/KHz/channels] enthält, damit bei aufeinanderfolgenden Ausführungen nicht mehrfach die selbe Information angehängt wird.

Da mich die Information nur interessiert, wenn die Flac nicht 16bit 44.1KHz sind, hängt er bei mir die Information nur an, wenn bitpersample > 16 oder KHz > 44.1 ist. Dann hängt es noch, falls die Datei mehr als 2 Channels hat, die Channelzahl dran.

Das kann aber, wie @LyricsLover bereits angemerkt hat, dazu führen, dass Alben mit gemischten Dateien auseinander gerissen werden.

Meine Aktion ist:
Format Value
Field: ALBUM

$regexp(%album%,(.*)(\s\'['\d{2}'['\/-']'\d{2,3}\.?\d?'['\/-']'?(\d\.\d)?\']'),$1)$if($eql($right(%_filename_ext%,4),flac),$if($or($grtr(%_bitspersample%,16),$grtr(%_samplerate%,44100)), '['%_bitspersample%/$cutRight(%_samplerate%,3)$trimRight('.'$right(%_samplerate%,3),'.0')$if($eql(%_mode%,3),/3.0,)$if($eql(%_mode%,4),/4.0,)$if($eql(%_mode%,5),/5.0,)$if($eql(%_mode%,6),/5.1,)']',),)

Beispiel Output ist dann z.B. Rocksteady [24/88.2/5.1] wenn die Quelle 24Bit 88.2KHz und 5.1 Kanäle hatte.
Kannst ja gucken, ob ein Teil der Aktion für das, was du erreichen willst, nützlich ist. :slight_smile:

1 Like

Sowas wie das?
$left(%year%,4)

Was auch funktioniert und dabei alles ab dem ersten nicht-numerischen Zeichen abschneidet:
(in Deinem Beispiel -07-21)
$num(%year%,1)

1 Like

@LyricsLover

Danke.
Mit
$num(%year%,1) - %album% '['%_bitspersample%']'
funktioniert es perfekt, wie gewünscht.

@Casual_Tea

Deinen Ansatz nur bei höherer Qualität als 16 Bit bzw. über 44.1kHz den Namen zu ändern und auch die 5.1 Option finde ich genial! Vielen Dank dafür.

Eigentlich bin ich hin- und hergerissen, zwischen den (bisher) sprechenden Verzeichnisnamen oder dem Ansatz die eigentlichen Audiofiles sauber zu taggen.
Bisher vermisse ich noch ein Tool, mit dem ich meine Audiosammlung (verteilt auf verschiedene NAS-Laufwerke) in den Griff bekomme (z.B. doppelte oder qualitativ schlechtere Audiofiles löschen) und das auf ID-Tags basiert.
Daher nutze ich bisher die üblichen Tools, um verzeichnisse anzuzeigen und einzelne Audiodateien abzuspielen.

@LyricsLover

Hiermit funktioniert es nun, wie gewünscht:

Feld: _DIRECTORY
Format String:
$num(%year%,1) - %album% '['%_bitspersample%']'

Wie mache ich daraus nun eine Aktion?

Deutsches Mp3tag:

Aktion vom Typ "Tag-Feld formatieren"
Feld: _DIRECTORY
Formatstring:
$num(%year%,1) - %album% '['%_bitspersample%']'

Englisches Mp3tag:
Action-Type "Format Value"

1 Like

Vielen Dank. Glaube das Prinzip nun verstanden zu haben.
Actiongruppe mit o.g. Einstellungen angelegt, die ich nun bei Bedarf nutzen kann.

Klasse!

Die Actiongruppe ist eigentlich eine Sammlung von einzelnen Aktionen.

Die Aktion #1 kann Dir das Verzeichnis wie in Deinem Beispiel umbenennen.
Weitere Aktionen in der gleichen Aktionsgruppe könnten dann andere Veränderungen vornehmen, wie z.B. die Schreibweise von Titeln anpassen, Dein YEAR standartkonform mit nur 4 Stellen anstelle des kompletten amerikanischen Datums abzufüllen und und und...

So können dann z.B. Aktionsgruppen für klassische Musik angelegt werden, solche für Pop-Musik und so weiter.

Melde Dich einfach wieder, wenn Du weitere Fragen hast.

PS:
Du musst auch nicht extra 8 Jahre bis zur nächsten Frage warten. :wink: :innocent:

1 Like

@Casual_Tea

Wie müsste Deine Aktion eigentlich aussehen, um den aktuellen Inhalt des Tags (bei mir den Verzeichnisnamen) nur um die Info bitspersample >16 und kHz > 44.1 quasi als Suffix anzuhängen?
Bin nämlich sehr zufrieden mit meinen bisherigen Verzeichnisnamen.

Wie meinst du das? Willst du nur bitspersample und khz anhängen? Also den Ordner:

'Round Midnight

um [24-96] zu 'Round Midnight [24-96]ergänzen?

Falls ja dann geht das mit:

Aktion: Format Value
Field: _DIRECTORY
Format String:
$regexp(%_directory%,(.*)(\s\'['\d{2}'['\/-']'\d{2,3}\.?\d?'['\/-']'?(\d\.\d)?\']'),$1)$if($eql($right(%_filename_ext%,4),flac),$if($or($grtr(%_bitspersample%,16),$grtr(%_samplerate%,44100)), '['%_bitspersample%-$cutRight(%_samplerate%,3)$trimRight('.'$right(%_samplerate%,3),'.0')']',),)

Hab es aber nur kurz aus meiner Aktion zusammengehackt und angepasst. Ausgiebig getestet ist sie nicht.

Oder willst du wortwörtlich

'Round Midnight >16 >44.1

erreichen?

Ersteres. Wenn mehr als 16 Bit bzw. 44.1kHz, dann an den bisherigen Verzeichnisnamen dranhängen als Suffix.
Und eigentlich müsste pro Verzeichnis nur eine Datei geprüft werden, sonst macht er das ganze Spiel bei 10 FLACs in einem Verzeichnis 10x oder nicht?

Vielen Dank.

Ja, schon - und der letzte in der Reihe gewinnt, wenn sich die Eigenschaften unterscheiden ...
Ansonsten kannst du ja filtern mit
%track% IS 1
und dann nur die Eigenschaften dieser Datei nehmen.

@Ohrenkino und Casual_Tea

Wie müsste die o.g. Prüfung nur von Track 1, d.h. %track% IS 1 in u.g. Format String eingefügt werden?

Aktion: Format Value
Field: _DIRECTORY
Format String:
$regexp(%_directory%,(.*)(\s'['\d{2}'['/-']'\d{2,3}.?\d?'['/-']'?(\d.\d)?']'),$1)$if($eql($right(%_filename_ext%,4),flac),$if($or($grtr(%_bitspersample%,16),$grtr(%_samplerate%,44100)), '['%_bitspersample%-$cutRight(%_samplerate%,3)$trimRight('.'$right(%_samplerate%,3),'.0')']',),)

Warum wendest du keinen Filter an?

1 Like

@ohrenkino

Danke, dass Du nochmal schreibst und ich glaube bei mir ist nun auch (endlich) der Groschen gefallen.
Ich verstehe es so, dass ich die Anzeige filtere und nur jeweils den ersten Track eines Verzeichnisses anzeigen lasse und darauf dann die o.g. Funktion von Casual_Tea "loslasse". Korrekt?

so hatte ich es gemeint.

1 Like