Scripting-Funktion zum Löschen doppelter Einträge

Im Nachgang zum Problem aus diesem Thread:

Ich wäre für die Ergänzung der Scripting-Funktionen um eine, die aus einer gegebenen Liste mit definiertem Trennzeichen die Duplikate löscht.
Der derzeitige Umweg entweder für das Verwenden von Multi-value-Feldern mit anschließendem Löschen von Feldern mit gleichem Namen und Inhalt funktioniert nicht per scripting.
Der immer wieder zitierte reguläre Ausdruck aus

ist fast nicht zu warten für Anfänger.
Also ein Befehl wie $dedup(x,s[,c]) mit String x und Separator s und C für case-sensitive wäre meiner Ansicht nach ein schöne Ergänzung.

Ich hatte kurz vor der Veröffentlichung der v3.31 schon damit angefangen eine solche Funktion zu implementieren, konnte dann aber nicht mehr ausgiebig genug testen.

Du könntest also schon jetzt diese Funktion (abgesehen von C für case-sensitive) ausprobieren :smiling_face_with_sunglasses:

Es sind damit dann auch Dinge wie $dedup($meta_sep(field,\\),\\) möglich.

Zuerst mal: wow!
Derzeit scheint es wirklich auf die Schreibweise anzukommen.
Nimmt man die Liste

AfRICA; Africa; Natural World; Nature Study; Nature; Drama Adventure; Drama World; Percussion; Instruments Solo Percussion; Wildlife Movement; Drama Adventure; Africa; Film Styles Ancient Rome; Africa; NAture; NaturE;

dann ist das sortierte Ergebnis (fast erwartungsgemäß)

"AfRICA; Africa; Drama Adventure; Drama World; Film Styles Ancient Rome; Instruments Solo Percussion; Natural World; Nature; NAture; NaturE; Nature Study; Percussion; Wildlife Movement

(richtig nett: $sort() und $dedup() in geschachtelter Anwendung ... man muss nur aufpassen, dass die Trennzeichen jeweils richtig angegeben werden)

$sort($dedup('AfRICA; Africa; Natural World; Nature Study; Nature; Drama Adventure; Drama World; Percussion; Instruments Solo Percussion; Wildlife Movement; Drama Adventure; Africa; Film Styles Ancient Rome; Africa; NAture; NaturE; ',;),;)

Führt zu

 ; Africa; Drama Adventure; Drama World; Film Styles Ancient Rome; Instruments Solo Percussion; Natural World; Nature; NAture; NaturE; Nature Study; Percussion; Wildlife Movement;AfRICA

Sehr schöne Sache, die neue Funktion zum Löschen doppelter Einträge!
Bevor ich allerdings Änderungen an den Dateien vornehme, möchte ich immer erst mal wissen, wo doppelte Einträge sind und welche Dateien somit betroffen sind. Und auch das lässt sich mit Hilfe der neuen Funktion leicht herausfinden. Dazu dient mir der folgende Filter (F3), der im Tagfeld composer nach doppelten Namen sucht. Als Trennzeichen der Namen verwende ich hier ein Komma mit einem Leerzeichen dahinter.

"$if($strcmp($dedup(%composer%,', '),%composer%),yes,no)" IS no

Dann kann ich mich separat um die einzelnen Fundstellen kümmern und muss nicht tausende Dateien unnötig bearbeiten.

Der optionale Parameter C für case-sensitive ist nun mit Mp3tag v3.31b verfügbar (default ist case-sensitive).