Filter als Aktion

Hallo

Ich habe verschiedene Wege geprüft, um CD-Playlisten von einem Album separat zu extrahieren - und das automatisch.
Sprich ich habe ein Album, in dem ich 101 - Track 1 von Discnumber 1 habe - sowie 201 - Track 1 von Discnumber 2.
Mit einem Script kann ich alle pro Discnumber 1 extrahieren - und dann mit einem anderen Script diejenigen von Discnumber 2.
Wenn es aber Albums hat, welche keine Discnumber 2 haben, dann wird trotzdem eine leere m3u Playlist für Disc 2 erstellt.
Mein Script ist wie folgt für Discnumber 1:
$filename(%_folderpath%100 - %albumartist% - %origalbum%.m3u,ansi)
#EXTM3U $char(13)$char(10)$loop(%discnumber%)$loop(%track%)$if($eql(%discnumber%,1),'#EXTINF:'%_length_seconds%','%artist%' - '%title%$char(13)$char(10)%_filename_rel%$char(13)$char(10),)$loopend()$loopend()

Also muss ich zuerst alle filtern nach Discnumber 1, Exportscript von Playlist 1 - dann filtern nach discnumber 2, Exportscript von Playlist 2

An dieser Stelle ist mir aufgefallen, dass das Setting "One File per Directory" nicht gesetzt wird, wenn man über Action Export geht - obwohl es in den Settings als Default geflagt ist.

Was ich mir nun wünschen würde, um obiges zu automatisieren, ist folgendes:
Ein Action Type, welcher die Datensätze filtert - mit Angabe eines Filters und Möglichkeit, gleich alle markieren / selektieren Ja/Nein.
Dann kann man obiges automatisieren - sofern der Export Action Type dann auch das Flag übernimmt mit "Nur ein File pro Directory".

Was meinst Du dazu?
Gruss Roger

Generell kennt MP3tag nur die aktuelle Datei, um Aktionen auszuführen. Es findet kein Vergleich statt zwischen der vorigen oder nächsten Datei und der aktuellen.
Würde also ein Filter per Aktion möglich sein, würde der Filter auf die aktuelle Datei angewendet werden ... was wenig sinnvoll ist, meiner Ansicht nach: denn entweder ist es die aktuelle Datei oder nicht. Und wenn der Filter dazu führt, dass die aktuelle Datei plötzlich verschwindet, müsste die Ausführung der Aktionen abbrechen oder irgendwas in der Richtung.

So lange es keine Konzeptänderung gibt, wird es keinen Filter, keine Duplikatsuche, keinen Track-Nummern-Assistenten per Aktion geben.

Hallo
Die Aktion könnte ja analog dem Export ein Filtertemplate ausführen, welches auf alle vorhandenen Dateien angewendet warden kann.
Somit könnte man ein Filter setzen und dann gleich eine Export Funktion auslösen.
Das wäre sehr hilfreich.
Gruss Roger

Da Filter auch mit $if() und $regexp() (und etlichen anderen Skripting-Funktionen) nachgebildet werden können, müsste in einem Export-Skript dies sehr wohl angewandt werden können.
Das macht so ein Export-Skript natürlich recht unflexibel, würde ich meinen.
Es bleibt allerdings dabei, dass es Filter als Aktion nicht gibt.

Und: wenn du einen Export anlegst, der eine $loop() Konstruktion hat, du aber das per Aktion aufrufst, wird doch der Loop überhaupt nicht benötigt: es gibt doch dann nur genau eine Datei, die durch die Schleife gejagt werden kann.

Wenn du das Export-Script allerdings für eine Menge Dateien (ohne Aktion) nimmst, ist $loop vermutlich sinnvoll - aber dann kannst du auch einen entsprechenden Filter formulieren.

Ich komme zurück auf ein altes Thema - ok, Filter gibt es nicht in den Aktionen.
Ich tue mich noch schwer mit den Scripten.
Was ich eigentlich will ist, dass ich am Schluss eine Playliste für jede Discnummer habe.
Heute erstelle ich manuell ein Filter mit "%discnumber% IS 1 ", dann führe ich die Aktion "Export Playlist CD 1" aus:
$filename(%_folderpath%100 - %albumartist% - %origalbum%.m3u,ansi)
#EXTM3U $char(13)$char(10)
$loop(%discnumber%)
$loop(%track%)
$if($eql(%discnumber%,1),'#EXTINF:'%_length_seconds%','%artist%' - '%title%$char(13)$char(10)%_filename_rel%$char(13)$char(10),)
$loopend()
$loopend()

Das kann man natürlich für 1-50 Discs machen, aber wenn es keine Disc 3-50 hat, dann werden doch leere Files erstellt.

Wie kann ich im Script angeben, dass das File nur dann erstellt werden soll, wenn es auch eine entsprechende Disc hat?

Du könntest den Filter
%discnumber% PRESENT
verwenden, um nur Titel mit DISCNUMBER zu kriegen.
Ist das Script dann nicht universell genug, um für jede DISCNUMBER eine Datei erstellen zu können?

Danke für die superschnelle Antwort.
Meinst du sowas hier?
$filename(%_folderpath%%discnumber%00 - %albumartist% - %origalbum%.m3u,ansi)
#EXTM3U $char(13)$char(10)$loop(%discnumber%)$loop(%track%)$if(%discnumber%,'#EXTINF:'%_length_seconds%','%artist%' - '%title%$char(13)$char(10)%_filename_rel%$char(13)$char(10),)$loopend()$loopend()

Ich habe in einem Folder alle Files, jeweils die Discnumber noch im Filenamen vorhanden (1xx / 2xx - Filename).
Die Aktion "Export" habe ich ohne Hacken bei "one file per directory" erstellt.

Wenn ich das so laufen lasse, dann kriege ich ein File - alle Files von 1xx und 2xx drin. Das 3mu file heisst dann auch 100....
Also ich kriege kein 200'er M3u File hin.

Ich verstehe die Erklärung, warum der Filer auf Aktion keinen Sinn macht, weil die Aktion immer pro File durchläuft.
Aber wie wäre es, wenn eine Aktion (Filter) die Liste beeinflusst - so wie man die Liste ja auch manuell Filtern kann. Sprich eine Aktion, die den Filter unten setzt. Nichts anderes. Habe im Forum gesehen, dass es noch andere gibt, welche diesen Wunsch geäussert haben.

Das muss nichts heißen.
Also: eine Aktion muss eigentlich pro Datei einen Sinn ergeben.
Aber hier willst du doch etwas Übergreifendes erstellen, so dass am Ende ein Sammelergebnis entsteht.

Ich bezweifele, dass im Dateinamen ein Vorwärtsschräger zu finden ist. Meiner Ansicht nach würde 1xx / 2xx zu 1xx2xx.

Wie man eine Playliste teilt:

Ich habe verstanden, dass eine Aktion für eine Datei Sinn machen muss.
Leider habe ich mich oben nicht klar ausgedrückt. Meine Filestruktur sieht wie folgt aus, wenn es verschiedene Disks hat:
\Artist\Album\101 - File 1 Disk 1.MP3
\Artist\Album\102 - File 2 Disk 1.MP3
...
\Artist\Album\201 - File 1 Disk 2.MP3
\Artist\Album\202 - File 2 Disk 2.MP3
...

Was ich haben möchte ist, dass ich zwei Playlists bekomme:
100 - Artist Album - Disk 1.m3u
Inhalt:
101 - File 1 Disk 1.MP3
102 - File 2 Disk 1.MP3

200 - Artist Album - Disk 2.m3u
Inhalt:
201 - File 1 Disk 2.MP3
202 - File 2 Disk 2.MP3

Scheinbar muss als erstes einer Export Configurations Datei .mte der Filename spezifiziert werden.
Soviel ich verstehe, sind die Loops dann nur "sortierungs möglichkeiten". Korrekt?

Mit folgender Configuration
$filename(%_folderpath%%discnumber%00 - %albumartist% - %origalbum%.m3u,ansi)$loop(%discnumber%)$if(%discnumber%,#EXTM3U $char(13)$char(10)$loop(%discnumber%)$loop(%track%)'#EXTINF:'%_length_seconds%','%artist%' - '%title%$char(13)$char(10)%_filename_rel%$char(13)$char(10)$loopend()$loopend(),)$loopend()

Erhalte ich folgendes Format in der m3u Datei:
100 - Album Artist.m3u
Inhalt:
#EXTM3U
#EXTINF:317,File 1 Disk 1
101 - File 1 Disk 1.MP3
#EXTINF:267,File 2 Disk 1.MP3
102 - File 2 Disk 1.MP3
#EXTM3U
#EXTINF:285,File 1 - Disk 2
201 - File 1 - Disk 2.mp3
#EXTINF:245,File 2 - Disk 2
202 - File 2 - Disk 2.mp3

Ich befürchte, dass die Limitation bei der Export Konfiguration liegt, dass man da nur anhacken kann "1 File per Directory". Diese Option lässt nicht zu, dass ich pro Directory pro Disc ein File generieren kann.

Oder wie siehst Du das?

Verstehe nicht, wieso das eine Limitation sein soll.
Davon ab: der Auslöser für das alles hier war, dass Filter als Aktion möglich sein sollten.
Jetzt aber geht es um die Export-Funktion und nicht mehr um den Filter, oder? Das Verhalten der Export-Funktion mit 1 Datei pro Verzeichnis würde sich doch vermutlich nicht ändern, auch wenn man einen Filter per Aktion anwenden könnte.

Vielleicht hilft dir dieser Thread weiter:

Es liegt an dir, für deinen spezifischen Anwendungsfall einen Export zu erstellen, der dich an dein Ziel bringt.
Ich schlage (erneut?) vor, nicht direkt die Wiedergabelisten erzeugen zu wollen, sondern eine Batch-Datei, die dann die Daten in die gewünschte Menge Wiedergabelisten überträgt.
Hier wäre ein Beispiel für ein Export-Script, das pro Titel eine Wiedergabeliste erzeugen lässt: