Anfängerhilfe zu Skriptbefehlen und Ordnerstruktur


#1

HalliHallo liebe mp3tag-Freunde,

ich wollte mal meine Aktionengruppe und Ordnerstruktur für wissbegierige vorstellen. Einmal tue ich das um weitere Anregungen zu möglichen Ordnerstrukturen zu geben und zu diskutieren. Vor allem möchte ich aber für Neulinge und Anfänger Aktionen und Skriptbefehle genauer erklären, da ich in meiner Anfängerphase festgestellt habe, dass sich das Einarbeiten in die Skriptbefehle von mp3Tag als schwierig gestalten kann und ich die Hilfe dazu als ungenügend empfand, insbesondere wenn man noch nie etwas mit Programmierung oder dergleichen zu tun hatte. Dabei fand ich es immer hilfreich, wenn Beispiele genau erläutert wurden und möchte das gerne im Folgenden tun. Des Weiteren würde ich mich sehr über Anregungen bzw. Optimierungen zu meiner Aktionengruppe freuen.
Auch wenn ich hier versuche den Umgang mit der Skriptsprache näher zu bringen bleibt es natürlich nicht aus sich mit der Hilfe zu beschäftigen und einzelne Befehle nochmal nach zu lesen.

Ordnerstruktur

Meine Aktionengruppe ist natürlich an meine Ordnerstruktur angepasst, die ich zuerst ein wenig erläutern will.
Grundsätzlich habe ich meine Musik auf einem Netzlaufwerk alphabetisch nach Interpreten sortiert.

X:#...
X:\A...
X:\B...

Da ich leider nicht nur komplette Alben habe, befinden sich Einzeltitel immer im Artist-Ordner. Des Weiteren befinden beim Artist noch die Ordner für Alben. Wenn es mehrere CDs in einem Album gibt, dann gibt es zusätzlich noch die dazugehörigen Unterordner für CD 1 usw. Featuring-Artists werden weiter nicht berücksichtigt und landen im Ordner des Haupt-Artists.
Die Ordnerstruktur sieht also letztendlich so aus:

X:\A\Artist\Artist – Titel.ext
X:\A\Artist\Artist feat. Artist2 – Titel.ext
X:\A\Artist\Album## - Artist – Titel.ext
X:\A\Artist\Album\CD 1## - Artist – Titel.ext

In dem Album Ordner befinden sich die dazugehörigen Cover nach dem Schema. Die Covers selbst lade ich mit AlbumArtDownloader runter, der die Covers automatisch so benennt und im richtigen Verzeichnis speichert.

Front - %album%.ext
Back - %album%.ext

Bei vollständig getaggten Titeln/Alben kann mp3Tag meine Ordnerstruktur mit Hilfe von folgendem Algorithmus (Tag --> Dateiname) selbstständig erzeugen. Der sieht erst mal riesig aus, erfüllt aber alles um diese Ordnerstruktur zu erzeugen.

EDIT:
Die Einordnung von Compilation/Samplern funktioniert jetzt auch. Dafür benutze ich im Album-Artist den Ausdruck „Various Artist“. Der Album-Artist ist bei mir stets dem normalen Artist übergeordnet.
Für Compilations habe ich einen Extraordner. Compilations sind bei mir z.B. Remix-CDs deren Titel nicht durch eine Pause voneinander getrennt sind (überwiegend bei elektronischer Musik). Bravo-Compilations usw. werden grundsätzlich einzeln in die jeweiligen Interpreten einsortiert.

[feat. vs.]
X:
$if($eql(%albumartist%,'Various Artist'),Compilation,$if($or($isdigit($left(
$if2(%albumartist%,%artist%),1)),$eql($left($if2(%albumartist%,%artist%),1),!)),#,$if($eql(
$caps($left($if2(%albumartist%,%artist%),1)),Ä),A,$if($eql($caps($left(
$if2(%albumartist%,%artist%),1)),Ö),O,$if($eql($caps($left($if2(%albumartist%,%artist%),1))
,Ü),U,$caps($left($if2(%albumartist%,%artist%),1)))))))

$if($eql(%albumartist%,'Various Artist'),,$if($eql($strstr($if2(%albumartist%,%artist%),' feat. '),0),$if($eql($strstr($if2(%albumartist%,%artist%),' vs. '),0)
,$if2(%albumartist%,%artist%),$left($if2(%albumartist%,%artist%),$strstr(
$if2(%albumartist%,%artist%),' vs. ')))
,$left($if2(%albumartist%,%artist%),$strstr($if2(%albumartist%,%artist%),' feat. '))))

$if2(%album%,)
$if($and(%album%,%discnumber%),CD $num(%discnumber%,),)
$if($and(%album%,%track%),$num(%track%,2) - ,)%artist% - %title%
[feat. vs.]

Erklärung/ Erläuterung zum Code:

  1. [feat. vs.] --> Bezeichnung des Codes --> eckige Klammern werden nicht beachtet
  2. X: --> Netzlaufwerk meiner Musik
  3. Erzeugung des Alphabets

    EDIT:
    Dieser Ausdruck ist um einiges größer geworden, da nun Artists mit Ä bei A usw. einsortiert werden. Im Groben gesagt, ist dies eine Verschachtelung von mehreren IF-Anweisungen

    $if($eql(%albumartist%,'Various Artist'),Compilation,$if($or($isdigit($left(
    $if2(%albumartist%,%artist%),1)),$eql($left($if2(%albumartist%,%artist%),1),!)),#,$if($eql($caps($left(
    $if2(%albumartist%,%artist%),1)),Ä),A,$if($eql($caps($left($if2(%albumartist%,%artist%),1)),Ö),O,
    $if($eql($caps($left($if2(%albumartist%,%artist%),1))
    ,Ü),U,$caps($left($if2(%albumartist%,%artist%),1)))))))

    --> WENN der Album-Artist = Various Artist ist [$eql(%albumartist%,'Various Artist']
    --> DANN schreibe Compilation --> Einsortierung der Compilation und Samplers in den Extra-Ordner [Compilation]
    --> SONST mache den Rest
    --> WENN Album-Artist vorhanden ist, benutze diesen, SONST benutze Artist [$if2(%albumartist%,%artist%)]
    --> Nimm von diesem Artist das erste Zeichen [$left($if2(%albumartist%,%artist%),1)]
    --> WENN das erste Zeichen eine Zahl ist [$isdigit($left($if2(%albumartist%,%artist%),1))] ODER [$or(…,…)] ein Ausrufezeichen ist [$eql($left($if2(%albumartist%,%artist%),1),!))
    --> DANN schreibe #
    --> SONST mache den Rest
    --> WENN Album-Artist vorhanden ist, benutze diesen, SONST benutze Artist [$if2(%albumartist%,%artist%)]
    --> Nimm von diesem Artist das erste Zeichen [$left($if2(%albumartist%,%artist%),1)]
    --> Mache das erste Zeichen zu einem großen Buchstaben [$caps($left($if2(%albumartist%,%artist%),1))]
    --> WENN das erste Zeichen ein Ä ist [$eql($caps($left($if2(%albumartist%,%artist%),1)),Ä)]
    --> DANN schreibe A
    --> SONST mache den Rest
    Das geht jetzt noch in dem Selben Schema für Ö und Ü so und als letztes wird der normale Anfangsbuchstabe für die Einsortierung in das Alphabet benutzt.
    $caps($left($if2(%albumartist%,%artist%),1)))))))
    --> WENN Album-Artist vorhanden ist, benutze diesen, SONST benutze Artist [$if2(%albumartist%,%artist%)]
    --> Nimm von diesem Artist das erste Zeichen [$left($if2(%albumartist%,%artist%),1)]
    --> Schreibe es als Großbuchstabe [$caps($left($if2(%albumartist%,%artist%),1)))))))]
    Die vielen Klammern kommen durch die Verschachtelung der IF-Anweisungen

  4. Artist-Ordner

    EDIT:
    Auch dieser Teil ist um einiges größer geworden, da ich wieder den Album-Artist dem normalen Artist vorziehe. Desweiteren wird nun feat.-Artist bzw. vs.-Artist gleichzeitig behandelt und entfernt
    Dies hat zur Folge, dass bei der alphabetischen Sortierung immer nur ein Ordner mit dem Haupt-Artist vorhanden ist
    X:\Musik\A\ABBA\ <-- gibt es in der Ordnerstruktur
    X:\Musik\A\ABBA feat. Artist2\ <-- gibt es nicht in der Ordnerstruktur

    $if($eql(%albumartist%,'Various Artist'),,$if($eql($strstr($if2(%albumartist%,%artist%),' feat. '),0),$if($eql($strstr($if2(%albumartist%,%artist%),' vs. '),0),$if2(%albumartist%,%artist%),$left($if2(%albumartist%,%artist%),$strstr(
    $if2(%albumartist%,%artist%),' vs. '))),$left($if2(%albumartist%,%artist%),$strstr($if2(%albumartist%,%artist%),' feat. '))))

    --> WENN Album-Artist = Various Artist ist [$eql(%albumartist%,'Various Artist')]
    --> DANN schreibe NICHTS (Erinnerung: Various Artist ist bei mir der Indikator für Compilation/ Sampler, die extra einsortiert werden. In diesem Ordner wird gleich das Album hineingeschrieben und nicht erst der Artist
    --> WENN Album-Artist vorhanden ist, benutze diesen, SONST benutze Artist [$if2(%albumartist%,%artist%)]
    --> [$strstr($if2(%albumartist%,%artist%),' feat. ')] gibt die Zahl/Stelle an der feat. zum ersten Mal beim Artist auftritt zurück
    --> WENN diese Zahl gleich 0 ist [$eql($strstr($if2(%albumartist%,%artist%),' feat. '),0)], d.h. feat. Ist nicht vorhanden
    --> DANN kontrolliere, ob vs. Im Artist vorhanden ist (analog zu feat.)
    --> WENN diese Zahl gleich 0 ist [$eql($strstr($if2(%albumartist%,%artist%),' vs. '‚),0)], d.h. vs. Ist nicht vorhanden
    --> DANN schreibe den Artist [$if2(%albumartist%,%artist%)]
    --> SONST entferne alle Zeichen ab dort, wo vs. auftritt [$left($if2(%albumartist%,%artist%),$strstr($if2(%albumartist%,%artist%),' vs. '))]
    --> SONST entferne alle Zeichen ob dort, wo feat. auftritt [$left($if2(%albumartist%,%artist%),$strstr($if2(%albumartist%,%artist%),' feat. '))))]

  5. Album-Ordner $if2(%album%,) --> WENN Album vorhanden ist --> DANN schreibe Album --> SONST schreibe NICHTS Hier wird nun auch bei Compilation/Samplern das Album geschrieben
  6. CD-Ordner $if($and(%album%,%discnumber%),CD $num(%discnumber%,),) --> WENN Album UND eine CD-Nummer vorhanden sind [$and(%album%,%discnumber%)] --> DANN schreibe CD und die CD-Nummer im Nummernformat mit beliebig vielen Ziffern [$num(%discnumber%,),)]
  7. Dateiname $if($and(%album%,%track%),$num(%track%,2) - ,)%artist% - %title% --> WENN Album UND Tracknummer vorhanden sind [$and(%album%,%track%)] --> DANN schreibe 2-stellige Tracknummer [$num(%track%,2) - ] --> SONST schreibe NICHTS --> Schreibe Artist – Titel [%artist% - %title%]
Aktionengruppe

Nun zu meiner lang erarbeiteten Aktionengruppe, die ich euch auch gerne zum Download bereitstellen möchte.
Grundsätzlich lasse ich immer den ersten Buchstaben eines Wortes großschreiben. Ansonsten besteht die Gruppe natürlich aus vielen Ersetzen-Funktionen um abweichende Schreibweisen zu korrigieren.

  1. Erweiterung im Titel Erweiterungen im Titel wie Mix, Remix, Edit usw. lasse ich immer in eckigen Klammern schreiben. Normale Ausdrücke in runden Klammern die zum Titel gehören, bleiben auch in runden Klammern.

    Artist – The Sun (Goes Down).ext
    Artist – The Sun (Goes Down) [Club Mix].ext

    Dafür habe ich mir die folgende Funktion erarbeitet.

    Aktionstyp: Ersetzen mit regulären Ausdrücken
    Feld: TITLE
    Regulärer Ausdruck: (([^(](?:Acoustic|Bonus|Cut|Dub|Edit|Extended|Instrumental|mix|P(?:ar)?t.?|Version)[^)]))
    Treffer ersetzen durch: [$1]

    [ ] Groß-/Kleinschreibung berücksichtigen

    Erklärung/ Erläuterung
    Suche nach dem Ausdruck im Titel
    --> mit einer offenen runden Klammer [(]
    --> dann mit allen Zeichen AUßER einer runden offenen Klammer [[^(]] die beliebig oft auftreten können [[^(]]
    --> dann kommt irgendwann einer der verschiedenen Indikatoren für eckige Klammern [(?:Acoustic|Bonus|mix|Edit)]
    --> dann wieder beliebig viele Zeichen AUßER eine geschlossene Klammer [[^)]
    ]
    --> und zum Schluss eine geschlossene runde Klammer [)]
    Runde Klammern haben die Funktion Ausdrücke zu separieren, wenn sie als Zeichen ansich gemeint sind muss ein \ davorstehen
    Jedes Mal, wenn ein Ausdruck separiert wurde, bekommt dieser eine fortlaufende Nummer
    ( [^(](?:Acoustic|Bonus|Cut|Dub|Edit|Extended|Instrumental|mix|P(?:ar)?t.?|Version)[^)] ) <-- Ausdruck bekommt die Nummer 1
    Wenn dahinter ein weiterer Ausdruck in Klammern stehen würde, würde dieser die 2 bekommen usw.
    Dieser Ausdruck soll geändert werden in
    --> offene eckige Klammer [
    --> Aufrufen des gewählten Ausdrucks [$1]
    --> geschlossene eckige Klammer ]

  2. Feat. Artist im Titel zum Artist hinzufügen Leider kommt es oft vor, dass „feat. Artist“ im Titel steht. Ein paar vorschläge dazu gab es bereits im Forum um diesen in den Artist zu packen. Ich erledige dies mit folgendem erweiterten Algorithmus

    Aktionstyp: Tag-Felder formatieren
    Feld: ARTIST
    Formatstring: $trimRight(%artist% $mid(%title%,$strstr(%title%,'feat.'),$len(%title%)),')'|' '*)

    Erklärung/ Erläuterung
    --> schreibe den vorhandenen Artist [%artist%]
    --> gebe die Stelle aus, an der feat. Im Titel Auftritt [$strstr(%title%,'feat.')]
    --> liefer ab dieser Stelle alle folgenden Zeichen im Titel [$mid(%title%,$strstr(%title%,'feat.'),$len(%title%))]
    --> diese Zeichen werden nun in den Artist geschrieben
    --> lösche am rechten Ende des Artist [$trimRight(bisheriger Ausdruck,')'|' ')] die geschlossene runde Klammer [')'] ODER [|] beliebig oft vorhandene Leerzeichen [' ']

    Dieser Algorithmus funktioniert auch nicht bei allen mir bisher ausgedachten Möglichkeiten wie feat. im Titel stehen kann. Eine weiterentwickelte Version ist aber in meiner Standard.mta – Datei vorhanden, die ihr ja runterladen könnt.

  3. Feat. Artist im Titel entfernen Um anschließend den „feat. Artist“ zu entfernen benötigen wir nur noch wenige Zeilen

    Aktionstyp: Ersetzen mit regulären Ausdrücken
    Feld: TITLE
    Regulärer Ausdruck: \s?(?(feat.?)(\w|\s|&)*)?
    Treffer ersetzen durch:

    [ ] Groß-/Kleinschreibung berücksichtigen

    Erklärung/ Erläuterung
    --> suche im Titel den Ausdruck Leerzeichen (kann vorhanden sein) [\s?]
    --> offene runde Klammer (kann vorhanden sein) [(?]
    --> feat mit eventuell vorhandenem Punkt [feat.?]
    --> und wieder beliebig viele [ * ] Zeichen [\w] ODER [|] Leerzeichen [\s] ODER [|] & (gehört nicht zu beliebigen Zeichen, daher extra betrachtet)
    --> als letztes dann eine eventuell vorhandene geschlossene Klammer [)?]
    --> Dieser gefundene Ausdruck wird dann durch NICHTS ersetzt, ist also weg


Hiermit belasse ich erst mal meine Erklärungen zu den Skriptbefehlen.
Ich denke und hoffe, dass die Erläuterungen vernünftig/verständlich formuliert wurden, sodass dies für zukünftige mp3Tag Anfänger eine gute Hilfe für Skriptbefehle darstellt.
Ansonsten war es das erst mal von mir. Für Fragen, Anregungen, Hinweise, Verbesserungen und Optimierungen bin ich natürlich jederzeit zu haben.

Mit freundlichen Grüßen

FredHermann

FredHermann.mta (6.83 KB)


Nur letzten Klammerausdruck suchen&ersetzen?
Nur letzten Klammerausdruck suchen&ersetzen?
#2

Hey,
ich benutze Teile deiner Ordnung und wollte gerne wissen, ob es bei der Aktion:

auch einen Weg gibt Klammern mit Zeichen einzubinden.
Bei mir funktioniert es nicht wenn ich die Aktion bei folgenden Titeln anwende:

Shake It (Steven Quarré & Morris Mavado Mix)
Mercury And Solace (Bt 12" Mastermix)

Lässt sich da noch etwas verändern?

Ansonsten war mir der Beitrag eine große Hilfe! Vielen Dank auf diesem Wege.

Alle anderen sind natürlich auch gefragt! :wink:


#3

Zunächst vielen Dank für die zahlreichen Beispiele. Ich habe mir die MTA-Datei heruntergeladen und auch schon einige Beispele verwendet. Ich habe eine ähnliche Ordnerstruktur, allerdings etwas einfacher aufgebaut, da ich nur komplette Alben verwalte. Auch bei mir erfolgt eine sortenreine Trennung zwischen Interpreten-Alben und Sampler-Alben. Die niedrigste Verzeichniseinheit ist daher das Album. Innerhalb dieses Ordner sind die Tracks als Dateien numerisch geordnet wie auf der Original-CD. Meine Ordnerstruktur habe ich hier ausführlich beschrieben. Wichtig sind für mich zwei Punkte

  • keine Redundanzen
  • einheitliche Verzeichnistiefe.

#4

Konverter: Tag - Tag
Feld: TITLE
Formatstring: $regexp(%TITLE%,'((([^(]|\s)(mix|edit)([^)]|\s)))','[$1]',1)

von:
The Sun (Goes Down) (Club Mix)
Shake It (Steven Quarré & Morris Mavado Mix)
Mercury And Solace (Bt 12" Mastermix)
nach:
The Sun (Goes Down) [Club Mix]
Shake It [Steven Quarré & Morris Mavado Mix]
Mercury And Solace [Bt 12" Mastermix]

DD.20121230.1020.CET


#5

Schön, dass meine Hilfe hier angenommen wird.

browniiie:
Mir ist auch aufgefallen, dass das bei Sonderzeichen wie z.B. & nicht richtig funktioniert und habe dein Code erweitert.

((.(Acoustic|Bonus|Cut|Dub|Edit|Extended|Instrumental|mix|P(ar)?t.?|Version).))

Hier habe ich weitere Wörter hinzugefügt, die in eckigen Klammern stehen sollen hier habe ich die Buchstaben (\w) und Leerzeichen (\s) durch beliebig viele Zeichen jeder Art ersetzt (.*)

mbaa3:
von dir habe ich mich jetzt zu einer erweiterten Struktur für Compilation inspirieren lassen. Dafür verwende ich den Album-Artist --> Various Artist. Wenn der vorhanden ist, dann wird das Album in den Compilation Ordner verschoben. Bei gelegenheit, werde ich meine Struktur oben editieren und neu reinstellen.
Des Weiteren habe ich gesehen, dass du Tag OrigYear zu benutzen. Da mich das schon ewig gestört hatte, dass einige Alben 200* remastered wurden, aber die eigentlichen Titel schon 30 Jahre alt sind werde ich mich damit wohl noch eine Weile beschäftigen.

Ansonsten habe ich jetzt auch noch dafür gesorgt, dass Artists mit Ä bei A, mit Ö bei O usw. eingeordnet werden. Aber wie gesagt, dass werde ich bald nachträglich einstellen.

Mit freundlichen Grüßen

FredHermann


#6

Dieser Skript-Ausdruck funktioniert auch nicht immer richtig.
Aus
The Sun (Goes Down) (Club Mix)
wird ...
The Sun [Goes Down) (Club Mix]

Das funktioniert ...
Konverter: Tag - Tag
Feld: TITLE
Formatstring:

$regexp(%TITLE%,'\(([^(]*(?:Acoustic|Bonus|Cut|Dub|Edit|Extended|Instrumental|mix|P(?:ar)?t\.?|Version)[^)]*)\)','[$1]',1)

von:
The Sun (Goes Down) (Club Mix)
nach ...
The Sun (Goes Down) [Club Mix]

DD.20121220.1923.CET


#7

@DetlevD
Vielen Dank für den Hinweis. Aber was bedeutet der Ausdruck ?: zum Beispiel vor Acoustic? Ich habe keine programmiertechnische Bedeutung für den : in der Hilfe gefunden.

Ansonsten habe ich jetzt mal meinen Ordnerstrukturquellcode und auch die angesprochenen Fehler aktualisiert. Dummerweise zieht der jetzt das Forum in die Breite. Vorgenommene Änderungen habe ich soweit beschrieben.

Mit freundlichen Grüßen

FredHermann


#8

Hallo FredHermann, betreffend Regex Syntax und "non-marking grouping" bzw. "non-capturing" siehe dort ...
http://www.boost.org/doc/libs/1_52_0/libs/...html/index.html
http://www.regular-expressions.info/refadv.html

Folgend ein paar Anmerkungen.

Den Teilausdruck ...
P(?:ar)?t.?
... kann man vielleicht auch so übersichtlich schreiben ...
Part|Pt.

Wenn du eine Aktionengruppe anlegst, dann kannst du den Bandwurmausdruck vermeiden, indem du anfangs oder wenn erforderlich Zwischenergebnisse berechnest und diese in temporären Tag-Feldern ablegs, um danach den Inhalt der temporären Tag-Felder in einfachen Skriptausdrücken wieder zu verwenden.
Am Ende entfernst du die temporären Tag-Felder.
Das erhöht die Übersichtlichkeit, die Nachvollziehbarkeit und die Änderbarkeit der Programmierung.

Erster Buchstabe von ARTIST entnehmen und gegebenenfalls ersetzen ...

$replace($upper($left(%ARTIST%,1)),'Ä','A','Ö','O','Ü','U')

Auch so etwas kann man machen ...

$replace($upper($left(%ARTIST%,1)),'Ä','A','Ö','O','Ü','U','!','#','0','#','1','#','2','#','3','#','4','#','5','#','6','#','7','#','8','#','9','#')

... wobei die Methode mit $isdigit eleganter erscheint ...
... aber ein regulärer Ausdruck für die Ziffern tut's auch ...

$regexp($left(%ARTIST%,1),'[0-9!]','#')

Artist befreien von " feat. ..." oder " vs. ..." ...

$regexp(%ARTIST%,'^(.+?)\s+(?:feat|vs)\.?\s+.*$','$1')

Am Ende des Bandwurmausdrucks ...
... \
$if2(%album%,)
$if($and(%album%,%discnumber%),CD $num(%discnumber%,),)\
...
... kann ein fehlerhafter Pfadname erzeugt werden, der zwei oder drei direkt aufeinander folgende Backslashes enthält.
Mp3tag wird das vermutlich reparieren, aber unsauber ist es doch.

DD.20121231.1653.CET


#9

Wenn man die Aufgabe einmal ganz anders aufschreibt, dann könnte es so aussehen ...

Anfang Aktionengruppe Test_2012#20121231.FredHermann

Aktion #1
Aktionstyp 5: Tagfeld formatieren
Feld _______: TMP_ARTIST
Formatstring: $if2(%ALBUMARTIST%,%ARTIST%)

Aktion #2
Aktionstyp 5: Tagfeld formatieren
Feld _______: TMP_ARTIST
Formatstring: $regexp(%TMP_ARTIST%,'^(.+?)\s+(?:feat|vs).?\s+.*$','$1')

Aktion #3
Aktionstyp 5: Tagfeld formatieren
Feld _______: TMP_INDEX
Formatstring: $left(%TMP_ARTIST%,1)

Aktion #4
Aktionstyp 5: Tagfeld formatieren
Feld _______: TMP_INDEX
Formatstring: $if($isdigit(%TMP_INDEX%),$regexp(%TMP_INDEX%,'[0-9]','#'),$replace($upper(%TMP_INDEX%),'Ä','A','Ö','O','Ü','U','!','#'))

Aktion #5
Aktionstyp 5: Tagfeld formatieren
Feld _______: TMP_FOLDER1
Formatstring: $if($eql(%ALBUMARTIST%,'Various Artists'),'_Compilations',%TMP_INDEX%)

Aktion #6
Aktionstyp 5: Tagfeld formatieren
Feld _______: TMP_FOLDER2
Formatstring: $if($eql(%ALBUMARTIST%,'Various Artists'),'.',%TMP_ARTIST%)

Aktion #7
Aktionstyp 5: Tagfeld formatieren
Feld _______: TMP_FOLDER3
Formatstring: $if2(%ALBUM%,'.')

Aktion #8
Aktionstyp 5: Tagfeld formatieren
Feld _______: TMP_FOLDER4
Formatstring: $if($and(%ALBUM%,%DISCNUMBER%),'CD '$num(%DISCNUMBER%,1),'.')

Aktion #9
Aktionstyp 5: Tagfeld formatieren
Feld _______: TMP_FILENAME
Formatstring: $if($and(%ALBUM%,%TRACK%),$num(%TRACK%,2)' - ',)%ARTIST%' - '%TITLE%

Aktion #10
Aktionstyp 5: Tagfeld formatieren
Feld _______: TMP_DRIVE
Formatstring: 'X:'

Aktion #11
Aktionstyp 5: Tagfeld formatieren
Feld _______: TMP_FOLDER0
Formatstring: 'TEST\FRED'

Aktion #12
Aktionstyp 5: Tagfeld formatieren
Feld _______: TMP_PATH
Formatstring: %TMP_DRIVE%'<!--colorc-->'%TMP_FOLDER0%'<!--colorc-->'%TMP_FOLDER1%'<!--colorc-->'%TMP_FOLDER2%'<!--colorc-->'%TMP_FOLDER3%'<!--colorc-->'%TMP_FOLDER4%'<!--colorc-->'%TMP_FILENAME%

Achtung:
Die Aktionen #13 und #14 erst dann ausführen, wenn die Aktionen zuvor korrekte Werte geliefert haben.
Kontrolle der Tag-Felder im Dialog "Erweiterte Tags...".

Aktion #13
Aktionstyp 5: Tagfeld formatieren
Feld _______: _FILENAME
Formatstring: %TMP_PATH%

Aktion #14
Aktionstyp 9: Tagfelder entfernen
Folgende Tagfelder entfernen (mit Semikolon getrennt): TMP_ARTIST;TMP_INDEX;TMP_DRIVE;TMP_FOLDER0;TMP_FOLDER1;TMP_FOLDER2;TMP_FOLDER3;T
MP_FOLDER4;TMP_PATH;TMP_FILENAME

Ende Aktionengruppe Test_2012#20121231.FredHermann (14 Aktionen)

DD.20121231.2300.CET


CD Nummer wenn größer 1
#10

Es gibt dazu von deiner Seite auch bestimmt eine/mehrere Aktionen *.mta für den Verschiebevorgang.
Würde an dieser Stelle gerne mal reinschauen/anwenden.
Bist du gewillt auch diese Aktion/en reinzustellen zum dl.

Gruß DJ Mucke


#11

@ DetlevD
Also über temporäre Tag-Felder habe ich ja noch gar nicht nachgedacht. Und wenn ich das richtig verstanden habe, speicherst du die kleinen Zwischenwerte aus meinem riesigen Quellcode in dafür angelegte Felder und benutzt diese Felder, um Schritt für Schritt den Dateipfad zu erstellen. Sehr interessant. Ich werde das mal demnächst ausprobieren. Das Ganze geht dann aber nur über Aktionen wenn ich das richtig sehe und nicht mehr über die TAG --> Dateiname Funktion

Vielen Dank schon mal für die Mühe, die du dir gemacht hast. Da habe ich ja noch einiges zu tun.

@ DJ Mucke
Ich weiß nicht genau, was für einen Verschiebevorgang du meinst. Der riesige Code verschiebt ja die Musikdateien sofort in mein Netzlaufwerk, da habe ich nichts weiter. Ich habe nur meine Standard-Aktion, die ich ja bereits hochgeladen habe. Und wenn ich da raufklicke, dann sollen die Tags mit einem Rutsch alle so sein, wie ich sie haben will. Ansonsten habe ich nur noch 2 Aktionen um die Cover in den Tag zu laden.

Mit freundlichen Grüßen

FredHermann


#12

Genau das meinte ich ja. Wo hast du den eingeschoben: Aktion - Tag-Feld formatieren?
:music: bitte um Erläuterung :wink:


#13

Na dieses Teil habe ich bei der Tag zu Dateiname Funktion reinkopiert. Das Symbol mit dem roten Punkt und dem Pfeil zu dem weißen Blatt. Tastenkombination ist Alt+1. Aber ich werde das jetzt viel eleganter nach DetlevD's Vorschlag machen. :laughing: Das ist ja auch wesentlich übersichtlicher und lässt sich besser bearbeiten. Wenn ich das fertig habe, werde ich es ebenfalls hochladen.

Vielen Dank nochmal dafür Detlev.

Mit freundlichen Grüßen

FredHermann

EDIT:
Anbei befindet sich die Aktionsliste für die Ordnerstruktur. Ähnlich wie DetlevD das aufgezeigt hat. Dafür müssen die Tagfelder

  • %tmp_artist%
  • %tmp_drive%
  • %tmp_alphabet%
  • %tmp_artist_folder%
  • %tmp_album_folder%
  • %tmp_cd_folder%
  • %tmp_filename%
  • %tmp_path%
erzeugt werden. Wenn dann der %tmp_path% richtig ist und es keine Probleme gab, brauch man bei Tag --> Dateiname (Tastenkombi: Alt+1) einfach nur noch %tmp_path% eingeben und die Daten werden in diese Ordnerstruktur eingefügt. Zum Schluss können dann die temporären Tags wieder gelöscht werden.

Ordnerstruktur.mta (940 Bytes)

Tempor__re_Tags_l__schen.mta (134 Bytes)