2013-07-04 28 views
1

我想學習Python,並認爲我會通過編寫實際使用的東西來學習。所以我試圖寫一些腳本來翻錄一些音樂CD。從MusicBrainz獲取曲目列表

我正在使用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我嘗試的結果總是空

回答

3

過得去盤標識符is a lookup發佈並且其支持的''inc ='參數與發佈的查找請求相同「,其中列出了earlier on that page。爲了讓您只需添加「錄製」非空專輯曲目包括:

result = musicbrainzngs.get_releases_by_discid(disc.id, includes=["artists", "recordings"]) 
+0

謝謝,這工作就像一個魅力:) –

+0

纔有可能得到軌道列表/錄音在搜索,而不是擡頭?類似於musicbrainzngs.search_releases(release = release,包括['recordings']) – user937284

+0

恐怕這是不可能的,因爲(afaik)搜索服務器允許您添加任何包含以指定要檢索的信息。 – Wieland