IPB

Welcome Guest ( Log In | Register )

> Hinweise!

Bitte vor dem erstellen eines Beitrag unbedingt den Beitrag Aktuelle Hinweise! lesen.

Lesen Sie auch die allgemeinen Nutzungsbestimmungen dieses Forums.

 
Reply to this topicStart new topic
> Scripting: mehrere Tagfelder in einer Aktion
MatthiasM
post Nov 17 2017, 09:18
Post #1


Member


Group: Full Members
Posts: 17
Joined: 19-November 09
From: Bodensee
Member No.: 11322
Mp3tag Version: 2.48



Aktuell lassen sich in den Aktionen (z.B. in der "Ersetzen"-Aktion) unter "Feld" immer nur ein Name angeben, auf das die Aktion durchgeführt wird.

Ich hätte gerne, dass dort auch mehrere (durch ';' getrennt) angegeben werden können und dann die Aktion auf alle angegebenen Felder angewendet wird - quasi in einer Schleife...

Wenn ich aktuell die gleiche Ersetzung auf mehreren Feldern durchführen möchte, muss ich das ganze immer mehrmals kopieren und für jedes Feld eine eigene Aktion machen.
Bei Änderungen an der Ersetzung dann wieder alle ändern...
...das würde stark vereinfacht, wenn man mehr wie ein Feld angeben könnte!

Das eben für alle Aktionen, bei denen es Sinn mach (Ersetzen, Regulärer Ausdruck, Tag-Feld formatieren, ...)

Ergänzend wäre es dann noch gut, wenn innerhalb der Aktion das "Pseudo"-Variable "_CURRENT" zur Verfügung stünde, das den Inhalt des aktuellen Felds zur Verfügung stellt.
Wenn dann z.B. in der Aktion "Tag-Feld formatieren" als Felder "ALBUM;ARTIST;TITLE" gesetzt sind, könne man im Formatstring z.B. "$trim(%_CURRENT%)" schreiben.

Ich habe zwar keine Ahnung von der Programmstruktur, ich denke aber das sollte relativ einfach zu implementieren sein und auch so machbar sein, dass es zu den bisherigen Scripten kompatibel ist - was meinst Du, Florian? biggrin.gif

This post has been edited by MatthiasM: Nov 17 2017, 09:19
Go to the top of the page
 
+Quote Post
DetlevD
post Nov 17 2017, 09:53
Post #2


Member


Group: Full Members
Posts: 6718
Joined: 26-May 06
From: Wuppertal, Germany, Planet Earth
Member No.: 3194
Mp3tag Version: 2.85



QUOTE (MatthiasM @ Nov 17 2017, 09:18) *
Aktuell lassen sich in den Aktionen (z.B. in der "Ersetzen"-Aktion) unter "Feld" immer nur ein Name angeben, auf das die Aktion durchgeführt wird. ...

Zunächst erst einmal eine Frage: kennst du das Mp3tag Prinzip "Aktionengruppe" und benutzt du es schon?

Noch eine Frage: Meinst du mit englisch "current" das deutsche Wort "Strom" oder das deutsche Wort "aktuell"?

DD.20171117.0959.CET

This post has been edited by DetlevD: Nov 17 2017, 09:59


--------------------
* Beyond that, don't ask, when you don't know what to do with the answer. *
♥ home is where the heart is ♥
Go to the top of the page
 
+Quote Post
MatthiasM
post Nov 17 2017, 18:55
Post #3


Member


Group: Full Members
Posts: 17
Joined: 19-November 09
From: Bodensee
Member No.: 11322
Mp3tag Version: 2.48



ZITAT(DetlevD @ Nov 17 2017, 09:53) *
Zunächst erst einmal eine Frage: kennst du das Mp3tag Prinzip "Aktionengruppe" und benutzt du es schon?
Ja natürlich - aber da kann ich doch "nur" Aktionen hintereinander reihen und unter einem Namen gemeinsam ausführen?!
Ich kann bei einer Aktionsgruppe doch keine Felder vorgeben, für die die gelten soll? Oder doch?
Wenn ich z.B. sowohl bei den Feldern ALBUM, ARTIST und TITLE das gleiche ersetzen möchte, muss ich in der Gruppe drei gleiche Aktionen anlegen - oder geht das anders?
Ich bin durch Deine Frage etwas verwirrt?! unsure.gif

ZITAT(DetlevD @ Nov 17 2017, 09:53) *
Noch eine Frage: Meinst du mit englisch "current" das deutsche Wort "Strom" oder das deutsche Wort "aktuell"?
Ich meinte es in der Bedeutung von "aktuelles Feld", d.h. wenn dann intern durch die angeg. Liste der Felder gegangen wird und die Aktion für jedes Feld ausgeführt wird - kam das in meinem "trim"-Beispiel nicht richtig rüber?
So wie "_ALL" für alle vorhandenen Felder steht, eben "_CURRENT" für das aktuelle...

This post has been edited by MatthiasM: Nov 17 2017, 18:56
Go to the top of the page
 
+Quote Post
ohrenkino
post Nov 17 2017, 19:47
Post #4


Member


Group: Full Members
Posts: 9239
Joined: 9-December 09
From: Norddeutschland / Northern Germany
Member No.: 11458
Mp3tag Version: 2.85



Ich weiß nicht, ob das wirklich so ein riesiger Schritt nach vorne wäre.
Gerade die von dir angesprochenen Funktionen zum Ersetzen und auch "Formatieren" ließen sich mit Script-Funktionen und der Aktion "Tag-Feld importieren" für mehrere Felder anwenden:

Nehmen wir an, du möchtest die Daten in ARTIST und TITLE in Kleinbuchstaben verwandeln, dafür aber nur 1 Aktion schreiben, dann ginge das wie folgt:
Aktion vom Typ "Tag-Felder importieren"
Quelle: $lower(%artist%==%title%)
Format string: %artist%==%title%

Oder für die Aufgabe mit $trim:
Quelle: $trim(%artist%)==$trim(%title%)
Format String: %artist%==%title%

Das == ist übrigens kein Zwang für diese Variante des Datenimports, es dient nur als eindeutiges Trennzeichen zwischen den Datenbereichen für die zu importierenden Felder.

Ist ein bisschen sehr durch die Brust ins Auge, zugegeben - aber es geht schon jetzt.

Die Funktionen zum Ersetzen als Aktion sind die dialoggeführte Variante der $Replace()-Funktion, die vielleicht mehr an die von anderen Programmen bekannte Suche-und-Ersetzen-Funktion erinnert als eine Zeichenkette wie $replace(%artist%,The,).
Für $trim() gibt es die dialoggeführte Variante übrigens nicht.


--------------------
42 - wie war die Frage / what was the question / quelle était la question
Go to the top of the page
 
+Quote Post
MatthiasM
post Nov 19 2017, 18:34
Post #5


Member


Group: Full Members
Posts: 17
Joined: 19-November 09
From: Bodensee
Member No.: 11322
Mp3tag Version: 2.48



ZITAT(ohrenkino @ Nov 17 2017, 19:47) *
Ich weiß nicht, ob das wirklich so ein riesiger Schritt nach vorne wäre.
Es wäre (für mich) einfach nur logisch, dass man in das obere Feld bei den feldbezogenen Aktionen mehrere, durch Strichpunkt getrennte Feldnamen angeben kann.
Die gesamte Funktionalität würde keine Kompatibilität brechen (weder in der Funktionalität noch in der Syntax innerhalb der .mta-Dateien) und wäre (ohne Kenntnis der Internas) nach meiner Einschätzung auch relativ einfach zu implementieren...
Und für mich (wieder einmal wink.gif ) wäre es eine starke Erleichterung und würde v.a. das fehlerträchtige "ich habe das jetzt in einer Aktion geändert und muss das jetzt nach 'zig anderen Aktionen kopieren" weg rationalisieren!

Warum also nicht? Muss alles immer ein "riesiger Schritt" nach vorne sein?
Auch mit kleinen Schritten kommt man voran - oft auch gleichmäßiger als mit riesigen Umwälzungen... laugh.gif

Ich muss gestehen, dass mir die von Dir geschilderte Möglichkeit, das umzusetzen unbekannt war - ich finde es aber sehr "von hinten durchs Knie"; und ich bin auch nicht sicher, ob das mit allen (teilweise sehr komplizierten) Aktionen funktioniert - insbesondere mit regulären Ausdrücken, bei denen in der Ersetzung dann die $1, $2, etc. vorkommen...

ZITAT(ohrenkino @ Nov 17 2017, 19:47) *
Die Funktionen zum Ersetzen als Aktion sind die dialoggeführte Variante der $Replace()-Funktion, die vielleicht mehr an die von anderen Programmen bekannte Suche-und-Ersetzen-Funktion erinnert als eine Zeichenkette wie $replace(%artist%,The,).
Für $trim() gibt es die dialoggeführte Variante übrigens nicht.
Sorry, da bin ich nicht ganz mitgekommen, was Du meinst blink.gif
Wieso sind Funktionen in Aktionen "dialoggeführt"?


Ich komme aus der Programmiererecke und finde es total genial, was man mit mp3tag und seinen Aktionen/Aktionsgruppen machen kann - allerdings sehr unübersichtlich und oft auch umständlich; da würde ich mir mehr eine "Programmierumgebung" und Elemente einer Programmiersprache wünschen...
...aber das ist wohl ein anderes (komplexeres) Thema biggrin.gif
Go to the top of the page
 
+Quote Post
ohrenkino
post Nov 19 2017, 19:26
Post #6


Member


Group: Full Members
Posts: 9239
Joined: 9-December 09
From: Norddeutschland / Northern Germany
Member No.: 11458
Mp3tag Version: 2.85



ZITAT(MatthiasM @ Nov 19 2017, 18:34) *
...und ich bin auch nicht sicher, ob das mit allen (teilweise sehr komplizierten) Aktionen funktioniert - insbesondere mit regulären Ausdrücken, bei denen in der Ersetzung dann die $1, $2, etc. vorkommen...

Ich kann mir, ehrlich gesagt, nicht vorstellen, dass du in mehreren Feldern die gleichen Muster hast, die mit regulären Ausdrücken bearbeitet werden können.
ZITAT(MatthiasM @ Nov 19 2017, 18:34) *
Sorry, da bin ich nicht ganz mitgekommen, was Du meinst blink.gif
Wieso sind Funktionen in Aktionen "dialoggeführt"?

Es gibt Aktionen, die auch mit Scripting-Funktionen abgebildet werden können:
Ersetzen ->$replace()
Ersetzen mit regulärem Ausdruck -> $regexp()
Schreibweise -> $caps(), $caps2(), $caps3(), $upper(), $lower()
mehr fallen mir nicht ein aus der Liste der Aktionen:

Album-Cover aus Datei importieren
Album-Cover exportieren
Codepage konvertieren
Doppelte Tag-Felder entfernen
Doppelte Tag-Felder zusammenfassen
Ersetzen
Ersetzen mit regulärem Ausdruck
Export
Schreibweise
Tag-Feld aufteilen
Tag-Feld formatieren
Tag-Felder entfernen
Tag-Felder entfernen außer
Tag-Felder importieren
Text-Datei importieren

Um die "Dialogführung" zu verdeutlichen am Beispiel für das Aktions-Äquivalent für $replace(), fragt der Dialog ab:
Feld
Suchen-String
Ersetzen-String
In der Funktion $replace() sind dies $replace(string,from,to) oder $replace(string,from1,to1,from2,to2,...)
Aktion und Funktion sind, zugegeben, nicht deckungsgleich.

Die vielleicht mächtigste Aktion "Tag-Feld formatieren", in der man Format-Strings angeben kann, die aus dem vollen Vorrat der Scripting-Funktionen schöpfen, ist vielleicht die einzige Funktion, in der häufig mehrere Felder adressiert werden. Aber für genau diesen Fall kannst du die Feld-Liste in einer Aktion vom Typ "Tag-Felder importieren" nachbilden, so wie ich es beschrieben habe.

Zeig doch mal ein konkretes, am besten komplexes Beispiel, wo eine Aktion auf mehrere Felder angewendet wird.


--------------------
42 - wie war die Frage / what was the question / quelle était la question
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 



RSS Lo-Fi Version Time is now: 23rd November 2017 - 19:36