我有两个包含~20 GB音乐文件的目录(主要是mp3,一些ogg),我想检测所有重复的歌曲。有两个复杂因素:

  1. 一首歌可能在两个目录中有不同的文件名。
  2. 包含相同歌曲的两个文件可能具有不同的ID3标签,因此具有不同的校验和。
  3. 解决这个问题的好方法是什么?

有帮助吗?

解决方案

我过去的方式是使用来自Music IP的genpuids。无论格式,id3,校验和等,闭源软件都会创建文件的音频指纹。

可以在此处找到更多信息。

这应该确保最大量的正重复匹配并最小化误报。它还可以正确标记不正确的id3标签。

其他提示

这是我将要做的(或以前做过的)......

  1. 将所有歌曲加载到iTunes上(跟我一起) (注意,如果你可以在这里使用itunes,那么停止......我认为你的欺骗列表很长且无法管理)
  2. 删除所有歌曲,将它们发送到垃圾桶,这样就可以摆脱目录结构
  3. 显然,不要“清空垃圾”。将歌曲救援到桌面上的文件夹
  4. 使用 mediamonkey 等软件, dupe eliminato r甚至 itunes 本身可以识别重复项。 Dupe消除器的优点在于它可以根据不同的因素,艺术家,长度,文件大小和诸如此类的因素进行检查,并猜测什么是欺骗,什么不是。)
  5. 重新加载到Itunes,这一次检查“自动安排歌曲”,这将把你的新的,无懈可击的列表放到一个漂亮的艺术家的专辑安排
  6. ...瞧! (或者如果您阅读digg:“... profit!”)

    / MP

如果您有一个可以解析文件的库,则可以对音频数据运行哈希。如果这首歌是不同的节奏或者已经过重新压缩/转码/等等,这对你没有帮助。

ID3 / OGG-equiv艺术家和歌曲元标准是否准确?如果是,你可以使用它们。

编辑:如果他们不是,也许他们可以成为...如果你只处理整个专辑,有几个工具将根据曲目的数量及其他人获得所有标签数据长度。

如果你正在处理专辑和单个文件的混合,那就会变得更加复杂。

我确信那里有更优雅的解决方案 - 但如果音频数据相同,那么剥离ID3标签和散列应该可以解决问题。散列后,您可以根据需要放回ID3标签。

也许 Last.fm API 会很有用。它包含一个track.getInfo调用,它返回XML,包括曲目的长度,艺术家姓名,曲目编号等。您可以比较曲目并查看它们是否有超过N个等于的字段,如果是,则假设它们是相同的曲目。 / p>

我不知道他们是否可以提交40gb音乐的API请求。

这样的事情:找到一个库来获取mp3的长度以及指向音频数据的指针(看起来有几个库可以做到这一点),做一个基于歌曲的第一个过滤器长度,以及具有匹配长度的歌曲校验和他们的音频数据。与此相似用于查找重复文件/图像的脚本

ffTES 的一些改编对我来说非常有用,非常类似。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top