如何在py-musicbrainz2的发布结果中找出光盘编号?

时间:2012-09-21 20:10:36

标签: python musicbrainz

Python musicbrainz2库的文档告诉我,这是我通过光盘ID搜索发布的方式:

>>> import musicbrainz2.webservice as ws
>>> q = ws.Query()
>>> filter = ws.ReleaseFilter(discId='8jJklE258v6GofIqDIrE.c5ejBE-')
>>> results = q.getReleases(filter=filter)
>>> results[0].score
100
>>> results[0].release.title
u'Under the Pink'

但是对于双CD而言,我得到相同的版本(应该是这样)但是当我搜索两张CD的光盘ID时会有不同的曲目。这也是应该的,但我没有看到从查询结果中获取光盘编号的方法。它在某处吗?我认为它存在于XML中,作为“媒介”。

1 个答案:

答案 0 :(得分:2)

musicbrainz2软件包,尽管它的名称,似乎只支持Web服务架构的弃用版本1,据我所知,它不提供媒体信息。

解决方案似乎是使用musicbrainzngs包,它支持MusicBrainz NGS Web服务(版本2)。然后你只需要执行以下操作(基于包源中提供的示例):

>>> from pprint import pprint
>>> import musicbrainzngs
>>> musicbrainzngs.set_useragent("application", "0.01", "http://example.com")
>>> pprint(musicbrainzngs.get_release_by_id("e94757ff-2655-4690-b369-4012beba6114",["media"]))
{'release': {'barcode': '9421021463277',
             'country': 'NZ',
             'date': '2008-07-04',
             'id': 'e94757ff-2655-4690-b369-4012beba6114',
             'medium-list': [{'format': 'CD',
                              'position': '1',
                              'track-list': []}],
             'quality': 'normal',
             'status': 'Official',
             'text-representation': {'language': 'eng', 'script': 'Latn'},
             'title': 'Affordable Pop Music'}}

并且可以获得medium-list信息!