Autor Beitrag
godworx
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 27



BeitragVerfasst: Fr 10.02.06 14:49 
Folgendes Problem: ich möchte zur Verwaltung meiner MP3s gleiche Dateinamen verwenden. Ich brauche also einen Algorithmus, der Dateien auf Stringgleichheit überprüft und den Namen dann wenn nötig anpasst. Also zb. Datei1 "The Beatles - Yellow Submarine" und Datei2 "Beatles - Obladi Oblada". Datei2 soll nun noch das The angefügt werden. Hoffe das war einigermaßen verständlich ??;)
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Fr 10.02.06 16:15 
Einen allgemeinen Algorithmus dafür dürfte es kaum geben. Einfaches Arbeiten mit Pos und Stringreplace scheidet direkt aus - sonst wird aus "REM" ganz schnell "In Extremo" Auch eine Suche nach ganzen Wörtern scheidet aus, wenn auch nicht so häufig: "Pink - Pink Floyd", "Prince - Prince Ital Joe", "Alexander (der aus DSDS) - Peter Alexander", "Nana - Nana Mouskouri". Von den ganzen "feat. Sowieso" mal ganz abgesehen.

Da wird wohl nichts anderes übrig bleiben, als eine Ersetzungs-Liste aufzustellen, in der jeweil drin steht, was gesucht werden soll, und wodurch das gefundene ersetzt werden soll (es sei denn, das ersetzende ist schon enthalten, sonst würde aus "The Beatles" später "The The Beatles").

_________________
We are, we were and will not be.
godworx Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 27



BeitragVerfasst: Fr 10.02.06 17:51 
Könnte man die Strings vielleicht splitten in Interpret und Titel und dann für den Interpret einen prozentsatz berechnen, wie gleich die Strings sind, also prozentual gesehen? oder gibts da ein problem? also mal wieder meine beatles "the beatles" und "beatles" wäre die übereinstimmugn ja recht hoch. "dick brave & the backbeats" würde ja auch "beat" enthalten, aber die prozentuale übereinstimmung wär doch recht klein?!
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Fr 10.02.06 18:08 
Klar kann man den Namen in Interpret und Titel splitten. Voraussetzung dafür ist, dass das Programm erkennen kann, wo der Artist aufhört und der Titel anfängt. Das widerum setzt eine "normierte" Namensgebung voraus, die bei dir ja nicht gegeben ist.
Ein Maß für die "Ähnlichkeit" zwischen zwei Strings ist die Levenstein-Distanz. Ich hatte hier mal eine modifizierte Version davon geschrieben. Für deine Zwecke ist das aber nicht sinnvoll - weil du den Artist aus dem Dateinamen nicht extrahieren kannst, ohne eine einheitliche Namensgebung voraussetzen zu können, die du mit deinem Programm erzeugen möchtest...Du drehst dich im Kreis ;-)

Alternativ kannst du natürlich die Längen vom Suchstring und Gesamtstring vergleichen. Aber...naja, du weißt schon ;-)

_________________
We are, we were and will not be.
godworx Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 27



BeitragVerfasst: Fr 10.02.06 18:49 
Na ich seh schon, das wird schwierig...

Ich mach mich einfach mal dran... mal sehn wie weit ich komme ;D