MP3 Duplikate finden/löschen anhand des Inhalts...

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Kennt jemand ein Python Modul mit dem man Musik nach Inhalt und nicht Byte für Byte vergleichen kann?

Interessant wäre das, um MP3 Duplikate zu finden und nicht einfach Dateiname, Dateigröße und/oder MP3-Tags zu vergleichen.

Ich hab mal gesucht und nur ein Freeware Programm gefunden, was genau das kann: http://www.music-similarity.com/

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Das Feststellen von Ähnlichkeiten ist eben nicht gerade trivial. Da gibts zig verschiedene Ansätze, die sicherlich auch je nach Anwendungs-Domäne verschieden gut sind.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
frabron
User
Beiträge: 306
Registriert: Dienstag 31. März 2009, 14:36

Da gibt es doch musicbrainz, was mp3s anhand eines fingerabdrucks erkennen kann. Funktioniert nach meinen Tests zu 65% recht zuverlässig. Vllt. haben die ja ne API oder sowas
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

65% ist jetzt nicht so sonderlich viel. Gerade wenn man Duplikate löschen will :)

Aber ja, das gibt es was für Python: http://musicbrainz.org/doc/PythonMusicbrainz

Aber kann es sein, das es bei musicbrainz ehr darum geht, einen Fingerabdruck einer CD zu erhalten? Also nicht von einem Lied?

EDIT: Auch das Tagging Programm http://musicbrainz.org/doc/MusicBrainz_Picard ist in Python geschrieben.

EDIT2: Zum Thema "Audio fingerprint" gibt es bei musicbrainz eine Menge Info's:
http://musicbrainz.org/doc/Audio_Fingerprint
http://musicbrainz.org/doc/PUID
http://musicbrainz.org/doc/How_PUIDs_Work
http://musicbrainz.org/doc/libofa

Demnach, kann man mit libofa einen Fingerprint für ein Lied erhalten. Zu libofa gibt es u.a. diese Python Anbindung: http://furius.ca/pyofa/


Theoretisch könnte man es so machen:
  • Alle MP3's mit os.walk() abarbeiten
    Fingerprint mit libofa/pyofa erzeugen (wenn noch nicht in MP3 Tags existiert)
    Fingerprint + pfad zur MP3 Datei zwischenspeichern (evtl. in SQlite Datenbank)
    evtl. Fingerprint in MP3 Tags einfügen (z.B. mit http://pypi.python.org/pypi/eyeD3/ )
    Duplikate anhand des Fingerprints identifizieren und löschen oder dem Anwender zur auswahl stellen.

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
noisefloor
User
Beiträge: 3843
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

das Problem ist (bei mir) auch immer, dass das gleiche Stück von 2 verschiedenen CDs (z.B. einmal vom Original, einmal von einer Compilation) nicht unbedingt also identisch erkannt werden, weil das eine Stück z.B. 0,5 Sekunden mehr "Stille" am Anfang hat. Ähnliches hat man auch immer, wenn man das gleiche Stück 1x von CD und einmal von Platte aufgenommen hat. Dann laufen i.d.R. alle Checksummenprogramme ins Leere laufen...

Gruß, noisefloor
BlackJack

@noisefloor: Die Programme von denen hier die Rede ist versuchen die Struktur der Audiodaten zu erkennen und erstellen keine einfachen Prüfsummen über die Bytes. Da sind also durchaus grössere Abweichungen in den Bytewerten erlaubt, so lange die Stücke für den Algorithmus ähnlich genug "klingen".
frabron
User
Beiträge: 306
Registriert: Dienstag 31. März 2009, 14:36

jens hat geschrieben:65% ist jetzt nicht so sonderlich viel. Gerade wenn man Duplikate löschen will :)
Das ist eigentlich nicht schlecht, je nach Quellenlage und je nach dem, was noch an Störgeräuschen in den zu vergleichenden mp3s drin ist. Ich hab das immer benutzt, um mit Streamripper aufgenommene mp3s zu taggen. Das ging erstaunlich gut. Jedoch gibt es manchmal einfach Ausfälle, auch bei regulär gerippten CDs, die für mich nicht nachvollziehbar sind. Denn wenn man dann die Suchparameter nur ein wenig verändert, kommt man doch zum Ziel - was das Programm immer ein wenig unvorhersehbar macht. Und es müssen natürlich schon Vergleiche in der Musicbrainz Datenbank liegen, zumindest wenn es ums Taggen geht ...
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Die 65% sind also ehr auf das finden der richtigen Taggs bezogen? Mir geht es ja um das vergleichen...

Ich hab ein wenig gesucht, denn ich kann mir nicht vorstellen, das es nicht schon ein Programm gibt, welches dubletten löschen kann... Aber viel mehr als dieses similarity hab ich nicht gefunden.

Kennt jemand einen dubsfinder auf libofa Basis?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten