Dateiname->Tag ergibt doppelte bzw. nicht ersetzte Tags

Dateiname->Tag ergibt doppelte bzw. nicht ersetzte Tags

ich möchte mein archiv taggen, die meisten files befinden sich in ordnern, schematische datei- und Ordnernamen. ich benutze "Dateiname->Tag" z.b. mit dem string:
%artist% (%dummy%) - %album% [%PUBLISHER%] {%COMMENT%} (%date%)\%artist% - %album% - %TRACKNUMBER% - %TITLE% (%REMIXED BY%)

2 probleme tauchen bisher dabei auf:

  1. manchmal entfernt mp3tag den zb YEAR tag nicht, sondern schreibt bloß den neuen wert dazu
  2. manchmal entfernt mp3tag den zb YEAR tag nicht und schreibt den neuen wert nicht dazu

wie kann ich meinen string verändern, damit er automatisch schon existierende tags ersetzt?
habe ne weile gesucht, nix zum thema gefunden.

Du benutzt in dem Formatstring eckige Klammern, welche aber in Mp3tag eine besondere Funktion haben (siehe Mp3tag Hilfe). Die besondere Funktion der eckigen Klammern kann unterdrückt werden, indem man sie in einfache Apostrophe einschließt, so '[' und so ']'.

DD.20091216.0806.CET

Bei "Dateiname->Tag" haben die eckigen Klammern diese Funktion nicht.

Hilfreich ist immer wenn man angibt was für Audiodateien und Tagformate man verwendet.

Und wieso ist im String %date% aber danach schreibst du von Year?

danke euch beiden.

ja, das funktioniert auch soweit. @DetlevD: danke trotzdem für den tip, da wär ich bestimmt später drüber gestolpert, weil labels bei mir in eckigen Klammern sind.

:book:

ooops, erwischt :rolleyes: ...so klapps

%artist% (%dummy%) - %album% [%PUBLISHER%] {%COMMENT%} (%year%)\%artist% - %album% - %TRACKNUMBER% - %TITLE% (%REMIXED BY%)

daraus ist auch das problem entstanden, hatte date+year getaggt, foobar listet beides unter "date"

aber ein anderes problem bleibt, könnt ihr mir bitte dazu was sagen? es gibt files, die haben (z.b.) YEAR schon getaggt, da möchte ich nicht, daß der bestehende tag überschrieben wird. kann ich da irgendeine syntax (vor z.b. (%year%)) schreiben, damit der tag im fall nicht überschrieben wird

Das geht mit Sicherheit einfacher, aber das hier sollte gehen:
Aktion Tag-Felder importieren:
Quellformat: $if(%year%,$replace($regexp(%_directory% ++ %_filename%,(.? - .? )('('.?)(')' '++' .),$1 ersetze%year%$3),ersetze,'('),%_directory% ++ %_filename%)
Formatstring: %artist% (%dummy%) - %album% [%PUBLISHER%] {%COMMENT%} (%year%) ++ %artist% - %album% - %TRACKNUMBER% - %TITLE% (%REMIXED BY%)

An die anderen: Wie kann ich im 3.Teil von $regexp eine offene Klammer darstellen? Ich habe ( ; '(' ; '(' ; "(" ; ( probiert und das mit $replace zu umgehen scheint unnötig zu sein.

mfG
gnor

Frage mich nicht wieso ...
$regexp('abc','.(.).','$1(')
von: abc
zu: b(

DD.20091216.1833.CET

<_< Ooops, überall diese Ausnahmen, aber gut, jetzt weißt du es ja für den anderen Fall der Fälle.

Du kannst beim Importieren ein temporäres Feld benutzen, z.B. TEMP_YEAR, in das du zunächst alle Werte importierst. Dadurch kannst du in der Listenansicht die Daten visuell vergleichen, wenn du dir eine Spalte für TEMP_YEAR angelegt hast, ansonsten in der erweiterten Tagfeld Ansicht.

Nach dem Import formatierst du mit einer Aktion "Tagfeld formatieren" das Feld YEAR in Abhängigkeit von seinem eigenen Inhalt mit dem Inhalt von TEMP_YEAR oder nicht.
Tagfeld formatieren : YEAR
Formatstring: $if2(%YEAR%,%TEMP_YEAR%)

Wenn alles getan ist, dann kannst du das Feld TEMP_YEAR entfernen.

DD.20091216.1845.CET

@gnor: uiii - das klappt sogar! seltsamerweise nicht beim 2. mal. werd ich morgen nochmal angehen. leider hat man bei "Aktion Tag-Felder importieren" keine Vorschau aufs ergebnis (oder weiß ich nur nichts davon?), deshalb hatte ich mich für "Dateiname->Tag" interessiert. kann ich deinen Quellformat String immer benutzen, wenns um den year tag geht? oder ändert sich der wieder, wenn sich der formatstring ändert? bei deinem Quellformat String sehe ich momentan beim besten willen noch nicht durch.
leider ist die hilfe Scripting functions in englisch. und zum thema "Aktion Tag-Felder importieren" hab ich darin nichts gefunden.

@DetlevD: falls ich die quellformatsprache nicht demnächst kapiere, werd ichs so ähnlich machen wie du vorgeschlagen hast.

@gnor: es scheint, der Quellformat String macht zwar bei year alles richtig, wenn aber z.b. artist o. album fehlt, wird das nicht eingetragen.

gibt es eine taugliches tutotial auf deutsch?

Mein Quellformat-String setzt sich folgendermaßen zusammen:
Außen ist eine if-Bedingung - $if(%year%,y,z) d.h. wenn %year% vorhanden ist, mache das, was bei y steht anderfalls z. Falls year also nicht existiert (also z geliefert wird), liefert er das Verzeichnis %_directory% und den Dateinamen %_filename% mit ++ verbunden.
Bei y wird durch einen regulären Ausdruck das Jahr im Verzeichnis durch das Jahr im Tag ersetzt.

Der Formatstring schließlich beschreibt, wie der Quellformatstring aufgebaut ist und importiert die Teilstrings in die Tag-Felder.

Die if-Bedingung überprüft nur auf %year%, deswegen macht er beim Interpreten usw. nichts.
Wenn du diese auch noch im String berücksichtigen willst, müsstest du mehrere if-Bedingungen schachteln. Einfacher ist da die Lösung von DetlevD, die das in mehreren Teilschritten macht.

Die Hilfe war mal auf Deutsch. Vielleicht gibt es sie in einer älteren Version von Mp3tag noch.

mfG
gnor

Ich würde es machen nach dem Prinzip "keep it simple".

Anfang Aktionengruppe 20091216.kein schwabe

Aktion #1
Aktionstyp 7: Tagfelder importieren
Quellformat: %_directory%
Formatstring: %TEMP_ARTIST%÷(%DUMMY%)÷-÷%TEMP_ALBUM%÷[%TEMP_PUBLISHER%]÷{%TEMP_COMMENT%}÷(%TEMP_YEAR%)

Aktion #2
Aktionstyp 7: Tagfelder importieren
Quellformat: %_filename%
Formatstring: %TEMP_ARTIST%÷-÷%TEMP_ALBUM%÷-÷%TEMP_TRACKNUMBER%÷-÷%TEMP_TITLE%÷(%TEMP_REMIXED÷BY%)

Aktion #3
Aktionstyp 5: Tagfeld formatieren
Feld: ARTIST
Formatstring: $if2(%ARTIST%,%TEMP_ARTIST%)

Aktion #4
Aktionstyp 5: Tagfeld formatieren
Feld: ALBUM
Formatstring: $if2(%ALBUM%,%TEMP_ALBUM%)

Aktion #5
Aktionstyp 5: Tagfeld formatieren
Feld: PUBLISHER
Formatstring: $if2(%PUBLISHER%,%TEMP_PUBLISHER%)

Aktion #6
Aktionstyp 5: Tagfeld formatieren
Feld: COMMENT
Formatstring: $if2(%COMMENT%,%TEMP_COMMENT%)

Aktion #7
Aktionstyp 5: Tagfeld formatieren
Feld: YEAR
Formatstring: $if2(%YEAR%,%TEMP_YEAR%)

Aktion #8
Aktionstyp 5: Tagfeld formatieren
Feld: TRACKNUMBER
Formatstring: $if2(%TRACKNUMBER%,%TEMP_TRACKNUMBER%)

Aktion #9
Aktionstyp 5: Tagfeld formatieren
Feld: TITLE
Formatstring: $if2(%TITLE%,%TEMP_TITLE%)

Aktion #10
Aktionstyp 5: Tagfeld formatieren
Feld: REMIXED÷BY
Formatstring: $if2(%REMIXED÷BY%,%TEMP_REMIXED÷BY%)

Aktion #11
Aktionstyp 9: Tagfelder entfernen
Folgende Tagfelder entfernen (mit Semikolon getrennt): TEMP_ARTIST;TEMP_ALBUM;TEMP_PUBLISHER;TEMP_COMMENT;TEMP_YEAR;TEMP_TRACKNUMBER;TE
MP_TITLE;TEMP_REMIXED÷BY

Hinweis: Ersetze jedes ÷ Sonderzeichen durch ein Leerzeichen.
Ende Aktionengruppe 20091216.kein schwabe (11 Aktionen)

DD.20091217.2047.CET