Album, AlbumArtist, Discnumber aus Ordnern

Hi,
    Ich habe eine penible Ordnerstruktur nach dem Muster X:\[...]\<!--coloro:#8B0000--><span style="color:#8B0000"><!--/coloro-->ARTIST<!--colorc--></span><!--/colorc-->\<!--coloro:#008000--><span style="color:#008000"><!--/coloro-->ALBUM<!--colorc--></span><!--/colorc-->(\<!--coloro:#0000FF--><span style="color:#0000FF"><!--/coloro-->CD xx<!--colorc--></span><!--/colorc-->).
    <!--sizeo:1--><span style="font-size:8pt;line-height:100%"><!--/sizeo--><b>(Der/Die Ordner "<!--coloro:#0000FF--><span style="color:#0000FF"><!--/coloro-->CD xx<!--colorc--></span><!--/colorc-->" existieren natürlich nur, wenn das Album mehrere CDs hat.)</b><!--sizec--></span><!--/sizec-->
    
    "Daraus lassen sich doch Aktionen bauen, die mir das Leben in Mp3tag leichter machen.", dachte ich und so sieht das Ergebnis also aus:
    
    <!--sizeo:4--><span style="font-size:14pt;line-height:100%"><!--/sizeo-->Was es (bisher) kann:<!--sizec--></span><!--/sizec-->
    <ul><li><!--coloro:#8B0000--><span style="color:#8B0000"><!--/coloro-->ALBUMARTIST<!--colorc--></span><!--/colorc-->-tag füllen</li><li><!--coloro:#008000--><span style="color:#008000"><!--/coloro-->ALBUM<!--colorc--></span><!--/colorc-->-tag füllen</li><li><!--coloro:#0000FF--><span style="color:#0000FF"><!--/coloro-->DISCNUMBER<!--colorc--></span><!--/colorc-->-tag füllen (wenn es mehrere CDs gibt)</li><li><!--coloro:#8B0000--><span style="color:#8B0000"><!--/coloro-->ARTIST<!--colorc--></span><!--/colorc-->\<!--coloro:#008000--><span style="color:#008000"><!--/coloro-->ALBUM<!--colorc--></span><!--/colorc-->(\<!--coloro:#0000FF--><span style="color:#0000FF"><!--/coloro-->CD xx<!--colorc--></span><!--/colorc-->) werden automatisch erkannt, egal ob "CD xx" vorhanden ist, oder nicht.
    Weiterhin funktioniert das taggen auch, wenn du dich in <!--coloro:#8B0000--><span style="color:#8B0000"><!--/coloro-->ARTIST<!--colorc--></span><!--/colorc-->\<!--coloro:#008000--><span style="color:#008000"><!--/coloro-->ALBUM<!--colorc--></span><!--/colorc--> befindest. Die CD's werden trotzdem korrekt zugeordnet. Da <!--coloro:#008000--><span style="color:#008000"><!--/coloro-->ALBUM<!--colorc--></span><!--/colorc-->, <!--coloro:#FF0000--><span style="color:#FF0000"><!--/coloro-->ALBUMARTIST <!--colorc--></span><!--/colorc-->und evtl. <!--coloro:#0000FF--><span style="color:#0000FF"><!--/coloro-->DISCNUMBER <!--colorc--></span><!--/colorc-->aus dem Pfad jeder Datei gelesen werden, könntest du damit theoretisch deine ganze Sammlung mit einem Mal taggen. (Die richtige und saubere Ordnerstruktur natürlich vorausgesetzt.)</li></ul>
    
    <!--sizeo:4--><span style="font-size:14pt;line-height:100%"><!--/sizeo-->Wie es das macht:<!--sizec--></span><!--/sizec-->
    Wer sich nicht für die Details der einzelnen Scripte interessiert, kann das hier überspringen.
    
    Die Aktionsgruppen repräsentieren Teilaufgaben; die Programmierer unter euch stellen
    sich die Gesamtheit der Aktionsgruppen am besten als Klasse vor:
    Constructor:
     - iq6t9_01prepare
    Methoden:
     - iq6t9_02getAlbum
     - iq6t9_03getAlbumArtist			 
     - iq6t9_04getDiscnumber
     - iq6t9_05standard conversions
    Destructor:
     - iq6t9_06dispose
    <ul><li><!--sizeo:3--><span style="font-size:12pt;line-height:100%"><!--/sizeo-->iq6t9_01prepare<!--sizec--></span><!--/sizec-->
    <!--sizeo:1--><span style="font-size:8pt;line-height:100%"><!--/sizeo--><b>(Bereitet getAlbumArtist,getAlbum,getDiscNumber vor; hat den Vorteil, dass
    das hier nur so oft wie nötig abgearbeitet wird - nämlich genau 1 mal am Anfang!)</b><!--sizec--></span><!--/sizec-->
    
    Action #1:
    <!--sizeo:1--><span style="font-size:8pt;line-height:100%"><!--/sizeo--><b>(%_folderpath%-Wert (ála X:\artis\album; ohne Dateinamen!)
    in MY_FOLDERPATH speichern.)</b><!--sizec--></span><!--/sizec-->
    
    <blockquote><i>Aktionstyp:</i> <b><!--coloro:green--><span style="color:green"><!--/coloro-->Tag-Felder formatieren<!--colorc--></span><!--/colorc--></b>
    <i>Feld:</i> <b>MY_FOLDERPATH</b>
    <i>Formatstring:</i> <b>%_folderpath%</b></blockquote>
    
    Action #2:
    <!--sizeo:1--><span style="font-size:8pt;line-height:100%"><!--/sizeo--><b>(MY_FOLDERPATH zum Metadatenfeld erweitern; durch split
    des %_folderpath% bei "\".)</b><!--sizec--></span><!--/sizec-->
    
    <blockquote><i>Aktionstyp:</i> <b><!--coloro:green--><span style="color:green"><!--/coloro-->Tag-Felder aufteilen<!--colorc--></span><!--/colorc--></b>
    <i>Feld:</i> <b>MY_FOLDERPATH</b>
    <i>Trennzeichen:</i> <b>\</b></blockquote></li></ul>
    
    <ul><li><!--sizeo:3--><span style="font-size:12pt;line-height:100%"><!--/sizeo-->iq6t9_02getAlbum<!--sizec--></span><!--/sizec-->
    <!--sizeo:1--><span style="font-size:8pt;line-height:100%"><!--/sizeo--><b>(Album ermitteln und speichern. Die Schwierigkeit hier ist, dass
    ein möglicher, weiterer Ordner "CD xx" vorhanden sein kann.
    Das wird hier mit geprüft.)</b><!--sizec--></span><!--/sizec-->
    
    <blockquote><i>Aktionstyp:</i> <b><!--coloro:green--><span style="color:green"><!--/coloro-->Tag-Felder formatieren<!--colorc--></span><!--/colorc--></b>
    <i>Feld:</i> <b>ALBUM</b>
    <i>Formatstring:</i>
        $if($eql($left($meta(MY_FOLDERPATH,$folderdepth(%_folderpath%)),2),CD),
    $meta(MY_FOLDERPATH,$sub($folderdepth(%_folderpath%),1)),
    $meta(MY_FOLDERPATH,$folderdepth(%_folderpath%)))</blockquote></li></ul>
    
    <ul><li><!--sizeo:3--><span style="font-size:12pt;line-height:100%"><!--/sizeo-->iq6t9_03getAlbumArtist<!--sizec--></span><!--/sizec-->
    <!--sizeo:1--><span style="font-size:8pt;line-height:100%"><!--/sizeo--><b>(AlbumArtist ermitteln und speichern. Die Schwierigkeit hier ist, dass ein möglicher, weiterer Ordner "CD xx"
    vorhanden sein kann. Das wird hier mit geprüft.)</b><!--sizec--></span><!--/sizec-->
    
    <blockquote><i>Aktionstyp:</i> <b><!--coloro:green--><span style="color:green"><!--/coloro-->Tag-Felder formatieren<!--colorc--></span><!--/colorc--></b>
    <i>Feld:</i> <b>ALBUMARTIST</b>
    <i>Formatstring:</i>
        $if($eql($left($meta(MY_FOLDERPATH,$folderdepth(%_folderpath%)),2),CD),
    $meta(MY_FOLDERPATH,$sub($folderdepth(%_folderpath%),2)),
    $meta(MY_FOLDERPATH,$sub($folderdepth(%_folderpath%),1)))</blockquote></li></ul>
    
    <ul><li><!--sizeo:3--><span style="font-size:12pt;line-height:100%"><!--/sizeo-->iq6t9_04getDiscnumber<!--sizec--></span><!--/sizec-->
    <!--sizeo:1--><span style="font-size:8pt;line-height:100%"><!--/sizeo--><b>(Wenn es einen Ordner "CD xx" gibt, dann in DISCNUMBER speichern; erreicht durch simples
    $right(x,2), vorausgesetzt es reichen CD01 bis CD99...)</b><!--sizec--></span><!--/sizec-->
    
    <blockquote><i>Aktionstyp:</i> <b><!--coloro:green--><span style="color:green"><!--/coloro-->Tag-Felder formatieren<!--colorc--></span><!--/colorc--></b>
    <i>Feld:</i> <b>DISCNUMBER</b>
    <i>Formatstring:</i>
        $if($eql($left($meta(MY_FOLDERPATH,$folderdepth(%_folderpath%)),2),CD),
    $right($meta(MY_FOLDERPATH,$sub($folderdepth(%_folderpath%),0)),2),)</blockquote></li></ul>

    <ul><li><!--sizeo:3--><span style="font-size:12pt;line-height:100%"><!--/sizeo-->iq6t9_05standard conversions<!--sizec--></span><!--/sizec-->
    <!--sizeo:1--><span style="font-size:8pt;line-height:100%"><!--/sizeo--><b>(Das sind ein paar Konvertierungs-Aktionen, die ich schon
    lange für die Form der TAGs und Dateinamen verwende.)</b><!--sizec--></span><!--/sizec-->

    Action #1:
    <!--sizeo:1--><span style="font-size:8pt;line-height:100%"><!--/sizeo--><b>("Feat." -> "feat."; sieht einfach besser aus ~g~)</b><!--sizec--></span><!--/sizec-->
    
    <blockquote><i>Aktionstyp:</i> <b><!--coloro:green--><span style="color:green"><!--/coloro-->Ersetzen:<!--colorc--></span><!--/colorc--></b>
    <i>Feld:</i> <b>_ALL</b>
    <i>Original:</i> <b>Feat.</b>
    <i>Ersetzen durch:</i> <b>feat.</b>
    <!--coloro:darkblue--><span style="color:darkblue"><!--/coloro-->[ ] Nur als Wort ersetzen
    [x] Groß-/Kleinschreibung berücksichtigen<!--colorc--></span><!--/colorc--></blockquote>
    
    Action #2:
    <!--sizeo:1--><span style="font-size:8pt;line-height:100%"><!--/sizeo--><b>(TRACK immer zweistellig; 1-9 wird also zu 01-09)</b><!--sizec--></span><!--/sizec-->
    
    <blockquote><i>Aktionstyp:</i> <b><!--coloro:green--><span style="color:green"><!--/coloro-->Tag-Felder formatieren<!--colorc--></span><!--/colorc--></b>
    <i>Feld:</i> <b>TRACK</b>
    <i>Formatstring:</i> <b>$num(%track%,2)</b></blockquote>
    
    Action #3:
    <!--sizeo:1--><span style="font-size:8pt;line-height:100%"><!--/sizeo--><b>(Kommentare löschen)</b><!--sizec--></span><!--/sizec-->
    
    <blockquote><i>Aktionstyp:</i> <b><!--coloro:green--><span style="color:green"><!--/coloro-->Tag-Felder entfernen<!--colorc--></span><!--/colorc--></b>
    <i>Folgende Tag-Felder entfernen (getrennt durch Semikolon):</i> <b>comment</b></blockquote></li></ul>
Wie es läuft:
    <ul><li>Lade dir die .zip-Datei aus dem Anhang herunter und entpacke sie;
    <!--sizeo:1--><span style="font-size:8pt;line-height:100%"><!--/sizeo-->(mit WinRAR z.B. einfach *Rechtsklick->extract here. Ordner ist mit drin.)<!--sizec--></span><!--/sizec--></li><li>Den Inhalt des Ordners (5x .mta; 1x .mtg) kopierst du jetzt nach [%APPDATA%\Mp3tag\data\actions].
    <!--sizeo:1--><span style="font-size:8pt;line-height:100%"><!--/sizeo-->Die Dateinamen habe ich so gewählt, dass sie eindeutig sind, aber dennoch Obacht, dass du jetzt nichts überschreibst, was du noch vermissen könntest ;].<!--sizec--></span><!--/sizec--></li><li>Wenn du die Dateien umbenennen möchtest, achte später bei der Reihenfolge der Aktionsgruppen darauf, dass [iq6t9_01prepare] IMMER vor den anderen ausgeführt wird.</li></ul>
    
    Sollte nun noch etwas unklar sein, gibt es <a href="http://www.youtube.com/watch?v=I9yxjYoDMhk" target="_blank">hier</a> ein Video mit den ersten Schritten und Beispielen zur Anwendung/Vorschau der Funktionen.
    
    <!--sizeo:4--><span style="font-size:14pt;line-height:100%"><!--/sizeo-->Idee? Anregung? Fehler gefunden?<!--sizec--></span><!--/sizec-->
    Das ist ein Forum, oder?  <img src="/uploads/default/original/1X/f15ee73c0fd9ec3b0db7481f0558638f8ee224ce.gif" width="20" height="20" alt=":huh:" title=":huh:"/> :laughing: 
    
    MfG
    r.beer
    
    P.S.
    Ich bin mir nicht sicher, ob das hier in das Forum passt. Konnte es nirgends zuordnen.

Spoilertest

iq6t9_mp3tag_actions.zip (1.65 KB)

Hallo r.beer

Gute Arbeit Danke,
Habe mal deine Arbeit auf eine Playlist los gelassen (ca.3000 mp3's) ist auch glatt durchgelaufen!

Nun mein Anliegen:
Vorausgesetzt es ist alles gut getagt und ebenso abgespeichert in die entsprechenden Ordner
Dann passiert ja nichts weiter, alle Dateien bleiben in ihrem Zustand erhalten es wird weder ein Verzeichnis geändert noch irgend ein Tag.

Aber und jetzt kommt es, wenn ich mir schon Aktionen angelegt habe zum Bleistift "Mac'Sowieso" dann haut der letzte Script Befehl alles wieder zurück auf null!!!

Schreibweise normal:
_ALL
Wortanfang Groß zweiter Buchstabe klein

darauf sollte hingewiesen werden sonst ist die bereits gemachte Arbeit für die "Katz!" oder Elefant :astonished:

Ein neuer Tag wird erstellt:

My Folderpath der dann bei mehrfach CDs so aus sieht
X:\Musik\Mein Super Album\Cd 1 ... usw. also auch hier greift der _ALL schreibweise Befehl
den Befehl habe ich gelöscht den bei bestehenden und bereits gut getaggten mp3's hätten wir wieder "Schönheitsfehler" drin.

Ich bin gespannt wie ein Regenschirm :laughing: auf weitere folgen.

Das habe ich doch tatsächlich übersehen, danke foo_peter! :rolleyes:

Habe die Aktion komplett entfernt.

Hallo r.beer!

Da viele ja sicher eine Dateibennenung der Art "TRACK - ARTIST - TITLE.mp3" (bzw. Variationen davon mit Unterstrichen statt Leerzeichen, DISCNUMBER als erstes Zeichen u.s.w.) haben, ließen sich hieraus eventuell auch noch jene drei Felder mit Deinem Script füllen?

Gruß vom Fireengineer