代码之家  ›  专栏  ›  技术社区  ›  Jack M.

使用python访问MP3音乐数据

  •  5
  • Jack M.  · 技术社区  · 14 年前

    我正在尝试编写一个python脚本,用歌曲的数据作为比较的基础来搜索重复的mp3/4文件。我的情况涉及许多具有相似文件名的MP3/4文件,但不同的ID3标记。起初,我尝试循环使用MD5查找重复的文件(忽略文件名)。当然,当ID3标签不匹配时,这不起作用。

    因此,我正在寻找一种仅从MP3/4中提取音乐数据的方法,以便通过MD5运行它并查找任何重复数据。最好的方法是什么?

    3 回复  |  直到 12 年前
        1
  •  4
  •   Nick T twasbrillig    14 年前

    试用使用 id3-py mutagen 要除去所有标记(ID3v1和ID3v2,它们都可以在同一个文件中),然后计算结果的MD5。

    假设iTunes没有操作超出标签的文件,那么它们应该是相同的。转码显然会使这种方法无效。

        2
  •  1
  •   Albert    12 年前

    使用一些指纹算法。你可能知道 MusicBrainz . 他们列出了 here 一些指纹算法。他们现在使用的是声学,这可能也是你应该使用的东西(它很好,而且是免费的)。有 Chromaprint 可以生成这样一个指纹的库。

    我写了一篇 Python module ffmpeg 它通过ffmpeg进行解码,并提供了一个简单的函数来计算声学指纹(使用彩色指纹)。 Here 是一个小的演示(它甚至查询MusicBrainz的歌曲)。

    应该可以很容易地用它构建一些工具来查找所有重复项。

    如果音频数据完全相同,指纹将完全相同。如果音频数据相似,则类似。见 AcoustId homepage 如果您不想检查是否相等,请进一步了解如何计算相似性。

        3
  •  0
  •   Community CDub    7 年前

    这实际上是相当先进的,模糊逻辑类型的东西,你问的。

    这不是答案,但请看本文中的讨论: Detect duplicate MP3 files with different bitrates and/or different ID3 tags? (事实上,这可能是个骗局……它甚至是特定于python的。)