首先,你想要的是添加元數據到MP3,這是人們最常見的使用場景。 「正常」的方式是使用Musicbrainz Tagger,在那裏打開這些文件並使用界面來附加正確的元數據。 建議(gui)工具是Musicbrain Picard
我還想聲明Perl模塊正在使用MusicBrainz的現在已棄用的Web Service Version 1。 該Web服務有一些問題,因爲它是針對另一個數據庫方案製作的,而不是現在在MusicBrainz上使用的方案。
但是,目前的Web Service Version 2只有一個python庫可用:python-musicbrainzngs。
你仍然可以使用Perl模塊,但是如果遇到「奇怪」的問題,這可能是原因。
這是Web服務一般是如何工作的(以及它如何應該直接申請Perl模塊,作爲該Web服務的包裝): 你的搜索給出了這樣的:
http://musicbrainz.org/ws/1/track/?artist=%22Ryan%20Adams%22&title=%22when%20the%20stars%20go%20blue%22
您會看到該曲目的錄音列表。這些重新編碼發生在多個版本(ReleaseList)上。 你可以忽略這些,因爲它們是「編譯」類型。你可能想要「專輯」發行。
您可能會問自己爲什麼在列表中有多個具有相同名稱的專輯發行。 這是因爲MusicBrainz上的「發行版」是發行事件和一些媒介的組合。 您可能有美國版本和德國豪華版等等。 所有這些版本都在一個「發佈組」中。
您可能需要此「發佈組」的名稱,該發佈組通常也是此組中每個發佈的名稱。
您可能想了解一下MusicBrainz Database的結構。
這只是當然的基本用例。 您可能會在藝術家/標題,多個或丟失的相冊發佈組和其他內容中遇到拼寫錯誤。 然而,總的來說,它應該工作,你可以將「問題」案例放在一個特殊的目錄中,並在Picard中使用它們。 皮卡德還具有識別每個 「音樂分析」(PUIDs,Acoustids)
編輯文件的其他方式:
my @tracklist = $response->track_list();
foreach my $track (@tracklist) {
print $track->title(), " - ", $track->artist()->name(), "\n";
my @releaselist = $track->release_list();
foreach my $release (@releaselist) {
print " ", $release->title(), " - ", $release->type();
}
}
一般應工作,但事實並非如此。它爲您提供了所有響應的跟蹤,但不知何故它無法從release_list()中提取發佈。可能是因爲架構發生了變化或者perl模塊被破壞了。
但是目前我對獲取mp3的封面藝術並不感興趣。 – ronnie