我正在尝试学习Python,并认为我应该通过编写一些我实际使用的东西来学习。所以我正试着写一个小脚本来翻录一些音乐CD。
我使用的是musicbrainzngs包。我想要这张CD的曲目清单。我目前的代码:
#! /usr/bin/env python
import argparse
import musicbrainzngs
import discid
musicbrainzngs.set_useragent("Audacious", "0.1", "https://github.com/jonnybarnes/audacious")
parser = argparse.ArgumentParser()
parser.add_argument("--cdrom", help="provide the source of the cd", default="/dev/cdrom")
args = parser.parse_args()
device = args.cdrom
print("device: %s" % device)
disc = discid.read(device)
print("id: %s" % disc.id)
try:
result = musicbrainzngs.get_releases_by_discid(disc.id, includes=["artists"])
except musicbrainzngs.ResponseError:
print("disc not found or bad response")
else:
if result.get("disc"):
print("artist:\t%s" %
result["disc"]["release-list"][0]["artist-credit-phrase"])
print("title:\t%s" % result["disc"]["release-list"][0]["title"])
elif result.get("cdstub"):
print("artist:\t" % result["cdstub"]["artist"])
print("title:\t" % result["cdstub"]["title"])我如何获取曲目列表,查看返回的完整结果有一个track-list属性,但无论我尝试哪张CD,结果总是空的
发布于 2013-07-05 04:35:16
在earlier on that page中列出了release is a lookup及其“支持的‘inc=’参数与发布版本的查找请求相同”。要获得一个非空的曲目列表,您只需添加"recordings“,包括:
result = musicbrainzngs.get_releases_by_discid(disc.id, includes=["artists", "recordings"])发布于 2020-11-04 05:26:49
这是一个使用musicbrainzngs获取专辑曲目列表的示例脚本
#!/usr/bin/python3
from __future__ import print_function
from __future__ import unicode_literals
import musicbrainzngs
import sys
musicbrainzngs.set_useragent(
"python-musicbrainzngs-example",
"0.1",
"https://github.com/alastair/python-musicbrainzngs/",
)
def get_tracklist(artist, album):
result = musicbrainzngs.search_releases(artist=artist, release=album, limit=1)
id = result["release-list"][0]["id"]
#### get tracklist
new_result = musicbrainzngs.get_release_by_id(id, includes=["recordings"])
t = (new_result["release"]["medium-list"][0]["track-list"])
for x in range(len(t)):
line = (t[x])
print(f'{line["number"]}. {line["recording"]["title"]}')
if __name__ == '__main__':
### get first release
if len(sys.argv) > 1:
artist, album = [sys.argv[1], sys.argv[2]]
get_tracklist(artist, album)
else:
artist = input("Artist: ")
album = input("Album: ")
if not artist == "" and not album == "":
get_tracklist(artist, album)
else:
print("Artist or Album missing")用法:
python3 album_get_tracklist.py《滚石》《乞儿宴》
或
python3 album_get_tracklist.py
它将要求艺术家和专辑
https://stackoverflow.com/questions/17470059
复制相似问题