# Genre bereinigen

**URL:** https://community.mp3tag.de/t/genre-bereinigen/14332
**Category:** Allgemein
**Created:** [January 8, 2013, 3:21pm UTC](https://community.mp3tag.de/t/genre-bereinigen/14332 "2013-01-08T15:21:36Z")
**Posts on this page:** 10
**Page:** 1

<div class="post-metadata">

### Author: ![muehli](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/m/8491ac/32.png) [@muehli](https://community.mp3tag.de/u/muehli)
#### Post date: [January 8, 2013, 3:21pm UTC](https://community.mp3tag.de/t/genre-bereinigen/14332/1 "2013-01-08T15:21:36Z")

</div>

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.

---

<div class="post-metadata">

### Author: ![ohrenkino](https://community.mp3tag.de/user_avatar/community.mp3tag.de/ohrenkino/32/4843_2.png) [@ohrenkino](https://community.mp3tag.de/u/ohrenkino)
#### Post date: [January 8, 2013, 3:38pm UTC](https://community.mp3tag.de/t/genre-bereinigen/14332/2 "2013-01-08T15:38:12Z")

</div>

> [@muehli](#):
>
> ...  
> 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.......  
> 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.

---

<div class="post-metadata">

### Author: ![muehli](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/m/8491ac/32.png) [@muehli](https://community.mp3tag.de/u/muehli)
#### Post date: [January 8, 2013, 4:01pm UTC](https://community.mp3tag.de/t/genre-bereinigen/14332/3 "2013-01-08T16:01:24Z")

</div>

> [@ohrenkino](#):
>
> 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.

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

> [@ohrenkino](#):
>
> Und dann: was hast du denn gespielt? Es ist zum Denkanstoßgeben leichter, wenn man sehen kann, was schon mal gedacht wurde.

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.

> [@ohrenkino](#):
>
> 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.

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.

> [@ohrenkino](#):
>
> 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.

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

---

<div class="post-metadata">

### Author: ![DetlevD](https://community.mp3tag.de/user_avatar/community.mp3tag.de/detlevd/32/123_2.png) [@DetlevD](https://community.mp3tag.de/u/DetlevD)
#### Post date: [January 8, 2013, 4:50pm UTC](https://community.mp3tag.de/t/genre-bereinigen/14332/4 "2013-01-08T16:50:33Z")

</div>

> [@muehli](#):
>
> ... 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. ...  
> Die Wörter Deutsch; german; Germany; Kraut sollen als Ergebnis nur Deutsch in den Genre-Tag schreiben.  
> ... Wie kann ich bei der Abfrage Wildcarts und Joker verwenden? z.B. _german_. ...

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](https://community.mp3tag.de/t/4458/1)  
[/t/5660/1](https://community.mp3tag.de/t/5660/1)  
... und vielleicht auch dort ...  
[Vorhandene MP3-Sammlung automatisch mit Daten aus eigener Text-Datei ergänzen](https://community.mp3tag.de/t/11714/1)  
[Add composer if title matches from text file?](https://community.mp3tag.de/t/5660/1)  
[Extract multiple IDs from different URLs with regexp](https://community.mp3tag.de/t/10846/1)  
[[WS] Last.fm](https://community.mp3tag.de/t/5717/17)

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

---

<div class="post-metadata">

### Author: ![muehli](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/m/8491ac/32.png) [@muehli](https://community.mp3tag.de/u/muehli)
#### Post date: [January 8, 2013, 9:16pm UTC](https://community.mp3tag.de/t/genre-bereinigen/14332/5 "2013-01-08T21:16:42Z")

</div>

> [@DetlevD](#):
>
> Soweit erst 'mal ein paar Denkanstöße.
> 
> DD.20130108.1856.CET

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

---

<div class="post-metadata">

### Author: ![muehli](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/m/8491ac/32.png) [@muehli](https://community.mp3tag.de/u/muehli)
#### Post date: [January 9, 2013, 3:41pm UTC](https://community.mp3tag.de/t/genre-bereinigen/14332/6 "2013-01-09T15:41:45Z")

</div>

> [@DetlevD](#):
>
> Siehe ähnliche Vorhaben dort ...  
> [/t/4458/1](https://community.mp3tag.de/t/4458/1)  
> [/t/5660/1](https://community.mp3tag.de/t/5660/1)

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

> [@DetlevD](#):
>
> ... und vielleicht auch dort ...  
> /  
> /  
> /  
> /

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.

> [@DetlevD](#):
>
> 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.**

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

---

<div class="post-metadata">

### Author: ![dano](https://community.mp3tag.de/user_avatar/community.mp3tag.de/dano/32/6_2.png) [@dano](https://community.mp3tag.de/u/dano)
#### Post date: [January 9, 2013, 4:35pm UTC](https://community.mp3tag.de/t/genre-bereinigen/14332/7 "2013-01-09T16:35:54Z")

</div>

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

---

<div class="post-metadata">

### Author: ![DetlevD](https://community.mp3tag.de/user_avatar/community.mp3tag.de/detlevd/32/123_2.png) [@DetlevD](https://community.mp3tag.de/u/DetlevD)
#### Post date: [January 9, 2013, 5:04pm UTC](https://community.mp3tag.de/t/genre-bereinigen/14332/8 "2013-01-09T17:04:14Z")

</div>

> [@muehli](#):
>
> ... 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. ...

Sorry, Kopierfehler, wird sogleich korrigiert.

> [@muehli](#):
>
> ... Das wäre für die Lösung mein Favorit. Leider weiß ich nicht wie die Aktionengruppe dazu aussehen soll. ...

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

DD.20130109.1859.CET

---

<div class="post-metadata">

### Author: ![muehli](https://community.mp3tag.de/letter_avatar_proxy/v4/letter/m/8491ac/32.png) [@muehli](https://community.mp3tag.de/u/muehli)
#### Post date: [January 9, 2013, 5:16pm UTC](https://community.mp3tag.de/t/genre-bereinigen/14332/9 "2013-01-09T17:16:34Z")

</div>

> [@dano](#):
>
> Feld: Genre  
> Regulärer Ausdruck: (^| |:wink:(deutsch.rock|deutsch|germany|german|kraut)(?=;|$)  
> Ersetzen durch: $1Deutsch

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.

---

<div class="post-metadata">

### Author: ![dano](https://community.mp3tag.de/user_avatar/community.mp3tag.de/dano/32/6_2.png) [@dano](https://community.mp3tag.de/u/dano)
#### Post date: [January 9, 2013, 6:15pm UTC](https://community.mp3tag.de/t/genre-bereinigen/14332/10 "2013-01-09T18:15:05Z")

</div>

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
