使用python检索MusicBrainz指纹

时间:2019-03-11 21:01:19

标签: python audio-fingerprinting musicbrainz

我努力寻找一种从给定歌曲中检索音频指纹数据的方法。我以前用MusicBrainz标记了这些歌曲,现在我想直接从音频文件中读取它们。我在musicbrainzngs中发现的唯一方法是在MusicBrainz库中搜索(musicbrainzngs.search_artists())歌曲,以查找指纹数据,由于我的文件中已经有数据,因此效率很低。

有没有可以从任何给定音频文件中读取它的库?

1 个答案:

答案 0 :(得分:1)

AcoustID fingerprint存储在音频文件中,可以,如果您使用MusicBrainz Picard标记了文件。哪个标签完全取决于音频文件:

  • MP3 / ID3V2:TXXX:Acoustid Fingerprint
  • Vorbis(FLAC,ogg)和APE:ACOUSTID_FINGERPRINT
  • iTunes MP4:----:com.apple.iTunes:Acoustid Fingerprint

请参见Musicbrainz tag mapping overview

您可以使用mutagen project来读取音频文件标签,这也是Picard所使用的:

import mutagen

tagnames = {
    'audio/mp3': 'TXXX:Acoustid Fingerprint',
    'audio/vorbis': 'ACOUSTID_FINGERPRINT',
    'audio/mp4': '----:com.apple.iTunes:Acoustid Fingerprint'
}

mfile = mutagen.File(musicfile_filename)
if mfile and mfile.mime[0] in tagnames:
    fingerprint = mfile.get(tagnames[mfile.mime[0]])
    if fingerprint is not None:
        try:
            # ID3v2 tag
            fingerprint = fingerprint.text[0]
        except AttributeError:
            # Vorbis
            fingerprint = fingerprint[0]