我有两个包含〜20 GB音乐文件(主要是mp3,一些ogg)的目录,我想检测所有重复的歌曲。有两个复杂因素:检测重复的音乐文件
- 歌曲在两个目录中可能有不同的文件名。
- 包含同一首歌曲的两个文件可能具有不同的ID3标签,因此具有不同的校验和。
解决此问题的好方法是什么?
我有两个包含〜20 GB音乐文件(主要是mp3,一些ogg)的目录,我想检测所有重复的歌曲。有两个复杂因素:检测重复的音乐文件
解决此问题的好方法是什么?
我在过去走了关于这个问题的方法是使用来自音乐IP genpuids。封闭源代码软件,无论格式创建一个文件的音频指纹,ID3,校验等
更多信息,可以发现here。
这将确保最积极的金额重复的匹配,并尽量减少误报。它也可以正确地标记不正确的ID3标签。
ID3/OGG-equiv艺术家和歌曲元标签是否准确?如果他们是,你可以使用这些。
编辑:如果他们不是,也许他们可能会成为...如果你只处理整个专辑,有几个工具,将获得所有的标签数据根据轨道数量和他们的长度。
如果您正在处理专辑和单个文件的混合,它会变得更加复杂。
也许,但我不认为我可以依靠他们。 – JesperE 2008-10-21 19:39:33
如果您有一个可以解析文件的库,您可以在音频数据上运行哈希。如果这首歌是不同的翻唱或重新压缩/转码/等等,这不会对你有所帮助。
在处理前端会有点怪异...只是获得大量的ID3需要一个年龄,但在顶部散列音频数据? Eeek! – Oli 2008-10-21 19:45:59
也许Last.fm API将是有用的。它包含一个track.getInfo调用,该调用返回XML,包括曲目长度,艺术家姓名,曲目编号等。您可以比较曲目并查看它们是否具有多于N个的字段,如果是,则假定它们是相同的曲目。
不过,我不知道他们是否可以提交40GB音乐的API请求。
该API基于首先拥有半正确的数据...而且,是的,我认为他们会在前100个速射请求中禁止你的IP ..不错的想法虽然.. – Oli 2008-10-21 19:44:21
类似这样的事情:找到一个库来获取mp3的长度以及一个指向音频数据的指针(看起来像有一些库可以做到这一点),做一个基于歌曲长度,以及具有匹配长度的歌曲校验他们的音频数据。类似于script for finding duplicate files/images。
这里就是我会做(或以前做过)...
...瞧! (或者如果你阅读digg:“......利润!“)
/MP
我确定那里有更优雅的解决方案 - 但是如果音频数据是相同的,那么剥离ID3标签和散列应该会有效。散列之后,如果你喜欢,你可以放回ID3标签。
ffTES的一些改编对我来说非常类似的任务。
这与Ron Jeffries/Chet Hendriksen车间问题完全相同!你真的有这个问题吗?或者你想完成车间代码? – tvanfosson 2008-10-21 19:38:34
我真的有这个问题。我将所有音乐导入iTunes,所以现在我有了旧的音乐目录和iTunes目录。基本上我想知道我的旧音乐目录中的哪些文件没有进入iTunes ... – JesperE 2008-10-21 20:56:11
为什么不发送Ron或Chet一个音符并询问他们如何解决它?我记得,我的解决方案与名称格式有关。 http://www.xprogramming.com/或http://www.hendricksonxp.com/ – tvanfosson 2008-10-22 01:05:57