Redundanzen in Tags (Titelbezeichnungen) entfernen

Begonnen von AldiMp3, 08. Oktober 2011, 19:10:08

Vorheriges Thema - Nächstes Thema

AldiMp3

Gibt es eine Funktion, ein Tool oder einen Trick, um alle Texte (Titel) zu finden/löschen, die bestimmte Bedingungen erfüllen?

Ich habe viele Tracks mit Bezeichnungen wie

Titel xyz (Album Version) [Album Version]
Titel xyz [Album Version] [Album Version]
Titel xyz (Album Version) (Album Version)
Titel xyz (Album Version) [Album Version]
Titel xyz (Album LP Version) [Album LP Version]
...

Also zusätzliche Hinweise, die doppelt in unterschiedlichen Klammern/Reihenfolgen angebracht sind, wobei der Text in den Klammern unterschiedlich lang und inhaltsschwer sein kann. Gern würde ich mit hohem Automatisierungsgrad Redundanzen entfernen.

Wer kann mir helfen? Teile davon zu finden traue ich mir zu. Jeweils gleiche Klammerausdrucke könnte ich auch mit OpenOffice teilen und in unterschiedliche Spalten legen bzw. nach Foobar spaltenweise zurück kopieren. Aber sicher kennt hier jemand bessere Wege.

Danke und Gruß
Uwe

stefle

#1
Versuch mal über 'Format from other fields...':

$substr(%title%,1,$add($strstr(%title%,') ['),$strstr(%title%,'] ['),$strstr(%title%,') ('),$strstr(%title%,'] (')))

Hier wird einfach nach einem Zusammentreffen von schließender und öffnender Klammer gesucht - also nach allen Kombinationen der Art ") (" - und das Feld entsprechend gekürzt.

Hier das gleiche, allerdings werden zusätzlich alle eckigen gegen runde Klammern ersetzt:

$puts(A,$replace(%title%,'[','(',']',')'))$substr($get(A),1,$strstr($get(A),') ('))

Beide Lösungen können aber auch Schaden anrichten, wenn du z.B. sowas hast:
The Beatles - You Know My Name (Look Up The Number) (Album Version)

Um das zu vermeiden, könntest du im Code

') ('

gegen

') (Album'

etc. ersetzen. (Ich hoffe, das ist jetzt verständlich.)

----
EDIT 1 Code gekürzt
EDIT 2 nochmal gekürzt

qwert73

Der "Automatically fill values ..." Dialog:

Als Quelle: %title% nehmen und als Pattern: %title% (%%) [%%]

Irgendwie einfacher, oder?

stefle

@qwert73

Deine Lösung führt zu einem anderem Ergebnis: Der eingeklammerte Zusatz (Album Version) wird ganz entfernt. Außerdem funktioniert's nicht, wenn die erste Klammerung eckig ist.

stefle

#4
Vielleicht eine Alternative:

$puts(A,$replace(%title%,'[','(',']',')'))$substr($get(A),1,$sub($strrchr($get(A),'('),2))

Zunächst werden alle Klammern in runde gewandelt, dann die letzte Klammerung abgeschnitten.

Hat aber den Nachteil, dass es auch einzelne Klammerungen rauswirft. Man müsste also vorher nach mehrfachen Klammerungen filtern: z.B. eine Playlist Column anlegen mit:
$add($strstr(%title%,') ['),$strstr(%title%,'] ['),$strstr(%title%,') ('),$strstr(%title%,'] ('))
und damit die Playlist sortieren.

Das würde jedenfalls keinen Mist bauen bei drei Klammern:
You Know My Name (Look Up The Number) (Album Version) [Album Version]

Meine Vorschläge weiter oben würden den Titel abschneiden beim ersten Auftreten von ") (".

Lässt sich dort aber auch anders verhindern, nämlich durch Ersetzen von

') ('

gegen

') (Album'

... was wiederum weniger flexibel wäre.

stefle

#5
Rundum-sorglos-Paket:

$puts(A,$replace(%title%,'[','(',']',')'))$ifgreater($strrchr($get(A),'('),$strstr($get(A),$substr($get(A),$strrchr($get(A),'('),$len($get(A)))),$substr($get(A),1,$sub($strrchr($get(A),'('),2)),%title%)

macht:

Titel xyz (Album Version)
Titel xyz (Album Version)
Titel xyz (Album Version)
Titel xyz (Album Version)
Titel xyz (Album Version)
Titel xyz (Live)
Titel xyz (χψω) (Maxi Version)
Titel xyz (χψω) (maxi version)

aus:

Titel xyz (Album Version)
Titel xyz (Album Version) (Album Version)
Titel xyz (Album Version) [Album Version]
Titel xyz [Album Version] [Album Version]
Titel xyz [Album Version] (Album Version)
Titel xyz (Live) [Live]
Titel xyz (χψω) (Maxi Version) (Maxi Version)
Titel xyz (χψω) (maxi version) [maxi version]

Funzt nicht bei: Titel xyz (Album Version) (album version)


EDIT Code korrigiert

qwert73

#6
@ stefle

Ach so, jetzt weiß ich was genau erwünscht ist! Macht aber nichts: ich würde es weiterhin genauso machen, dann ein zweites mal das "Automatically fill values ..." Fenster öffnen, um auch die übriggebliebenen  Zusätze zu entfernen, und dann letztendlich ein drittes mal , um mit %title% (album version) den vorher weggekürzten Anhang wieder dranzupappen. Die jeweiligen Änderungen müssen nicht in die Tags geschrieben werden, um beim erneuten Öffnen des "Automatically fill values ..." Fensters übernommen zu werden - ein Feature, das vielen nicht bekannt ist oder einfach nur nicht genutzt wird.

Ich mache mir gar nicht erst die Mühe, hochkomplexe Snippets zu kreieren, die den Anspruch vergeblich versuchen umzusetzen, alle, aber auch alle Eventualitäten zu berücksichtigen. Bei sowas werde ich einfach nur verückt und bevorzuge die einfache Methode. Und wenn dann noch ein paar Stücke bleiben, die händisch umgetaggt werden sollen (auch das geht im "Automatically fill values ..." Dialog!!), dann ist das so! So kann ich mir 100% sicher sein, nichts zu zerschießen, und komm genau so schnell, wenn nicht schneller zum Ziel.

AldiMp3

#7
Erstmal Dank an Euch beide. Werde mal probieren, was ich davon umsetzen kann. Denke aber das solche willkürlich herausgezogenen Datensätze weiter Probleme in der Automatik machen:

Is This Time Goodbye (I Gotta Move On) ((Original Mix)) [feat. Trey Lorenz] [(Original Mix)]
Senora ((Kuduro Remix) (Feat. Yakarta)) [(Kuduro Remix) (Feat. Yakarta)]
I'm In The House (Sharam Love Fest Remix) [feat. [[[ZUPER BLAHQ]]]] [Sharam Love Fest Remix]
Senora (Feat. Yakarta) ((Cubaton Kuduro Remix)) [El Chacal] [(Cubaton Kuduro Remix)]

...die Redundanzen sind schon sehr unterschiedlich angebracht ;-)

Als wirklich hilfreich erkenne ich zur Zeit nur eine Lösung, die nicht darauf abstellt, welche Klammer wo und wie häufig angeordnet sind, sondern nur noch darauf abzielt, zu erkennen, ob Ausdrücke innerhalb von Klammern textliche Wiederholungen haben.

stefle

#8
Hier kannst du sehen, was mein Rundumn-sorglos-Paket aus deinen Beispielen macht:

Is This Time Goodbye (I Gotta Move On) ((Original Mix)) [feat. Trey Lorenz] [(Original Mix)]
Is This Time Goodbye (I Gotta Move On) ((Original Mix)) (feat. Trey Lorenz)

Senora ((Kuduro Remix) (Feat. Yakarta)) [(Kuduro Remix) (Feat. Yakarta)]
Senora ((Kuduro Remix) (Feat. Yakarta)) ((Kuduro Remix)

I'm In The House (Sharam Love Fest Remix) [feat. [[[ZUPER BLAHQ]]]] [Sharam Love Fest Remix]
I'm In The House (Sharam Love Fest Remix) (feat. (((ZUPER BLAHQ))))

Senora (Feat. Yakarta) ((Cubaton Kuduro Remix)) [El Chacal] [(Cubaton Kuduro Remix)]
Senora (Feat. Yakarta) ((Cubaton Kuduro Remix)) (El Chacal)


Das zweite Beispiel ist ***, bessert sich aber, wenn man "meinen Algorithmus" zweimal laufen lässt.



stefle

#9
P.S.: Ich nehme mal an, du weißt, wie man die verbleibenden Doppelklammern wegbekommt.

(((ZUPER BLAHQ))) solltest du vorher durch [[[ZUPER BLAHQ]]]] ersetzen.

qwert73

Auf die Gefahr hin, dass der nächste Vorschlag als unpassend empfunden wird:

Brutal alle Tags löschen und mit Discogs neue Metadaten runterladen - Discogs deswegen, weil gerade die obige Art von Musik exzellent gut abgedeckt ist.

By the way: wer um Himmels willen, schreibt denn so was alles in den Titel-Tag?

AldiMp3

@stefle,

danke ich habe es mit Deiner Hilfe wirklich toll automatisiert.

@qwert73,

ich habe viele Alben, wo die Filterbedingung %Title% HAS  "[" AND %Title% HAS  "(" gelten. Da wäre Discogs wohl eher ein Wochen-/Monatsprogramm. Natürlich habe ich mir diesen "Beispiel-Müll" zur Demonstration selbst in die Tags geschrieben, aber man findet auch bei den gängigen Portalen viele ähnliche Beispiele und eben auch Redundanzen.