Genre bereinigen

Sory, ich weiß ihr werdet sagen das ist einfahch. Ich komme aber mit den Aktionen noch nicht ganz klar. Ich benötige einen Denkanstoß. Ich habe auch schon die Suchfunktion im Forum ergebnislos bemüht.

Ich möchte den Genre-Tag bereinigen. Verschiedenne Schreibweisen der Genres sollen einheitliche Genres im ID3v2 erzeugen.

Beispiel:

vorher Genre: Deutsch; Pop; Rock; Reggae; german; Easy; Charts; Germany; Kraut; Punk
nachher Genre: Deutsch; Pop; Rock; Reggae; Easy; Charts; Punk

Die Wörter Deutsch; german; Germany; Kraut sollen als Ergebnis nur Deutsch in den Genre-Tag schreiben. Die anderen Tags sollen jeweils unverändert bleiben.

Wie kann ich bei der Abfrage Wildcarts und Joker verwenden? z.B. german. Das zu ersetzende Genre enthält den String german.

Ich habe schon etwas mit dem Ersetzen rumgespielt, aber habe noch kein Ergebnis erzielt.

Ich werde aus der Aufgabe nicht schlau - soll jetzt "german" gelöscht werden oder durch "Deutsch" ersetzt werden? Denn dann stünde ja 2x "Deutsch" in der Liste.

Und dann: was hast du denn gespielt? Es ist zum Denkanstoßgeben leichter, wenn man sehen kann, was schon mal gedacht wurde.

Ansonsten: du kannst Dateien filtern - was die Menge der angezeigten Dateien reduziert in Abhängigkeit des angegebenen Filterbegriffs und du kannst dann die (gefilterten) Dateien per Aktion (oder anderen Funktionen) bearbeiten lassen.
Ein Suchen/Ersetzen wie im Textverarbeiter gibt es in dem Sinne nicht.

Wenn du also " german;" löschen möchtest, filtere die Dateien mit
%genre% HAS german
Und dann baue ein Aktion vom Typ "Ersetzen" für TITLE.
Gib als Such-String " german;" (ohne Anführungsstriche aber mit führendem Blank) ein
Gib als Ersetzen-String nichts ein. Das löscht.

Eigentlich soll das Ergebnis Deutsch dann nur einmal im Genre-Tag stehen.
2x Deutsch in der Liste ist nicht so schlimm, da ich dannach die doppelten gleichen Genres löschen lassen könnte

Ich habe mich an der Aktion
Regulärer Ausdruck "Genre" versucht mit \b(german|deut|kraut)\b
Treffer ersetzen durch Deutsch.

Leider komme ich mit dem Syntax überhaupt nicht klar.

Irgendwie muss doch das Bearbeiten der Genres über Suchen und Ersetzen gehen. Für jedes zu ändernde Genre würde ich dann eine Aktion mit den zu suchenden ähnlichen Ausdrücken anlegen.

Diese Lösung erscheint mir sehr umständlich. Ich möchte ja mehrere, ähnliche, in der Schreibweise unterschiedliche, Genres vereinen.

Wenn du "Wildcard und Joker" benötigst, dann benutze einen Regulären Ausdruck.
Vielleicht kannst du das Problem auch mit "in einer Tabelle suchen und ersetzen" lösen.

Siehe ähnliche Vorhaben dort ...
/t/4458/1
/t/5660/1
... und vielleicht auch dort ...
Vorhandene MP3-Sammlung automatisch mit Daten aus eigener Text-Datei ergänzen
Add composer if title matches from text file?
Extract multiple IDs from different URLs with regexp
[WS] Last.fm

Das Prinzip beruht auf einer Tabelle mit zwei Spalten ...
Spalte 1: der Suchtext
Spalte 2: der Ersatztext

=============+============== Hier suchen | Ersetzen mit =============+============== Deutsch | Deutsch german | Deutsch Germany | Deutsch Kraut | Deutsch =============+==============

So etwas kann man in einer Textdatei vorbereiten, diese dann in ein Hilfs-Tag-Feld importieren und mit einem Mp3tag Skriptausdruck in der "vertikalen Liste" suchen und den Treffer finden und den Ersatztext herausnehmen.

So etwas kann man mit einer Reihe von Aktionen "Ersetzen" oder "Ersetzen mit regulärem Ausdruck" lösen, für jedes Wort einzeln oder ähnliche Wörter (mit "Wildcard").

So etwas kann man mit $regexp und mit zwei "horizontalen Listen" lösen.

Liste 1: |1=Deutsch|2=german|3=Germany|4=Kraut| Liste 2: |1=Deutsch|2=Deutsch|3=Deutsch|4=Deutsch| ... in Liste 1 den Text suchen, wenn gefunden, dann Nummer merken zum Suchen in Liste 2, ... in Liste 2 die Nummer suchen, wenn gefunden, den Text merken zum Ersetzen.

So etwas kann man mit $regexp oder $strstr und Mathematik mit einer "horizontalen Liste" lösen.

Liste: |Deutsch=Deutsch|german=Deutsch|Germany=Deutsch|Kraut=Deutsch| ... in Liste den Suchtext finden, wenn gefunden, dann Ersatztext herausnehmen.

Soweit erst 'mal ein paar Denkanstöße.

DD.20130108.1856.CET

Ja, Danke. Das werde ich erst mal durcharbeiten. Das kann etwas dauern.

Ich habe mir die Links angeschaut. Leider verstehe ich nur Bahnhof. Ich kann auch kein englisch, Schade.

Diese Links gehen nicht. Es kommt die Fehlermeldung: Der Link, der Dich zu dieser Seite geführt hat, scheint beschädigt oder nicht mehr aktuell zu sein.

Das wäre für die Lösung mein Favorit. Leider weiß ich nicht wie die Aktionengruppe dazu aussehen soll.

Ich bin soweit gekommen

Feld: Genre
Regulärer Ausdruck: \s(?deutsch?|deutsch.rock|german?|kraut?)
Ersetzen durch: Deutsch

Leider funktioniert das nicht wirklich. Es wird zwar was ersetzt, aber nicht richtig.

Genre vorher: Deutsch; Pop; Rock; Reggae; german; Easy; Charts; Germany; Kraut; Punk;deutsch; german; Kraut rock; deutsche schlager

Genre nacher: Deutsch; Deutsch; Pop; Rock; Reggae; Deutsch; Easy; Charts; Deutschy; Kraut; Punk;deutsch; Deutsch; Kraut rock;Deutsche schlager

Feld: Genre
Regulärer Ausdruck: (^| |;)(deutsch.rock|deutsch|germany|german|kraut)(?=;|$)
Ersetzen durch: $1Deutsch

Sorry, Kopierfehler, wird sogleich korrigiert.

Verwende Dano's Vorschlag, das ist im Moment die Lösung, die du nachvollziehen kannst und sofort Erfolg verspricht.

DD.20130109.1859.CET

Super. Ich bin beeindruckt.
Das mit dem Wildcard (.) habe ich begriffen. Wie sieht es aber mit Jokern aus? Ich möchte auch alle Generes die den String z.B. german enthalten eliminieren und mit Deutsch ersetzen. Oder aber auch welche die mit deutsc beginnen.

Das mit Wildcards ist hier nicht so einfach da die verschiedenen Genres praktisch ein String sind und nur durch ; abgegrenzt. Hier muss man sich extra darum kümmern dass die Genre als einzelne erkannt werden.

Leichter ginge es du würdest temporär aus dem Genre Feld ein Multi-value Feld machen:
Aktion Tagfeld aufteilen, Trennzeichen ;

Dann hast du mehrere Genre Felder
Genre=Deutsch
Genre=Pop
Genre= Rock
Genre= Reggae
...

Nun kannst du z.B. alles was mit Deutsch anfängt so erfassen:
^Deutsch.*

oder irgendwo soll German stehen:
.German.

Danach kannst du aus all dem wieder ein Feld machen (Aktion Doppelte Tag-Felder zusammenfassen)

Und schau auch in die Hilfe wo die regulären Ausdrücke erklärt werden.
Es gibt nur ein Wildcard Symbol, der Punkt. Dafür kann man dahinter einen Wiederholungsmarkierung setzen, wie oft etwas vorkommen soll
. = jedes Zeichen
.* = jedes Zeichen keinmal, einmal oder mehrfach
. = jedes Zeichen einmal oder mehrfach