使用Python访问MP3音乐数据

时间:2010-07-14 21:29:27

标签: python mp3

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

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

3 个答案:

答案 0 :(得分:4)

尝试使用id3-pymutagen删除所有标记(ID3v1和ID3v2,它们都可以位于同一文件中),然后计算结果上的MD5。

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

答案 1 :(得分:1)

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

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

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

如果音频数据完全相同,指纹将完全相同。如果音频数据相似,则类似。如果您不想仅仅检查相等性,请参阅AcoustId homepage以获取有关如何计算相似性的更多信息。

答案 2 :(得分:0)

这实际上是你要问的非常先进的模糊逻辑类型的东西。

这不是一个答案,但请看一下本文中的讨论:Detect duplicate MP3 files with different bitrates and/or different ID3 tags?(它实际上可能有资格作为欺骗......它甚至是特定于Python的。)