音乐文件哈希器
mp3hash的Python项目详细描述
mp3hash
哈希音乐文件忽略元数据。
用于检测不同标记文件中的同一首歌曲。
支持以下元数据标准:
id3v1, id3v1 extended, id3v2.2, id3v2.3 and id3v.24
哈维尔·桑塔克鲁兹(2012-2013)
命令行用法
类似于sha1sum或md5sum,它接受一个或多个文件并 以这种方式返回散列:
$ ./mp3hash *.mp3 6611bc5b01a2fc6a6386a871e8c51f86e1f12b33 13_Hotel-California-(Gipsy-Kings).mp3 6611bc5b01a2fc6a6386a871e8c51f86e1f12b33 14_Hotel-California-(Gipsy-Kings).mp3
它返回相同的散列号,即使标记不同,并且 所以他们的常规散列:
$ sha1sum *.mp3 6a1d5f8317add10e205ae30174630b47645fb5b4 13_Hotel-California-(Gipsy-Kings).mp3 c28d6976114d31df3366d9935eb0bedd36cf1f0b 14_Hotel-California-(Gipsy-Kings).mp3
它严格使用文件中的音乐数据,通过 计算标记大小并忽略它们。
默认的散列算法是sha-1,但是任何算法都可以是 只要python的hashlib模块支持,就可以使用它。一个 所有可用哈希算法的完整列表可以通过 使用--list-algorithms调用程序。
$ ./mp3hash --list-algorithms md5 sha1 sha224 sha256 sha384 sha512 ./mp3hash --algorithm md5 ac0fdd89454528d3fbdb19942a2e6653 13_Hotel-California-(Gipsy-Kings).mp3 ac0fdd89454528d3fbdb19942a2e6653 14_Hotel-California-(Gipsy-Kings).mp3
安装
除了python2.7+,它没有任何依赖项。为了 访问mp3hash脚本时,应安装包。
python setup.py install
并且mp3hash命令应该在path中可用。
API
主要组件是mp3hash函数和taggedfile类。
mp3hash将计算 给定路径中的文件。
from mp3hash import mp3hash mp3hash(‘/path/to/song.mp3’) Out: 6611bc5b01a2fc6a6386a871e8c51f86e1f12b33
taggedfile类采用支持seek和 seek为负值,将解析 存储在其中的元数据。
from mp3hash import TaggedFile with open(‘/path/to/song.mp3’) as file: TaggedFile(file).has_id3v2 Out: True
开发商,开发商,开发商!
测试环境
建议您使用virtualenv
$ virtualenv --python python2 --distribute env $ . env/bin/activate
一旦进入virtualenv,安装包并测试 家属。
$(env) python setup.py develop $(env) pip install -r dev-reqs.txt
为了执行测试,请从 项目(setup.py的同一目录)。
$ nosetests
关于id3v1
- ID3v1在文件末尾是128字节,以“tag”开头
- 扩展的id3v1比常规的id3v1标记早227字节 “标签+”
总大小:128+(如果扩展,则为227)
id3v1在文件末尾是128字节,以“tag”id3v1开头 扩展是在常规ID3v1标记之前227字节,以“tag+”开头
总大小:128+(如果扩展,则为227)
关于id3v2
id3v2在文件开头有一个10字节的头。字节5保持 旗帜。第4位表示在v2.4字节中有页脚6-10是 标签大小(不包括页眉)
总大小:页眉+标记大小+页脚(如果有)
基于id3v1维基百科文档:http://en.wikipedia.org/wiki/ID3基于 ID3v2文档: