簡體   English   中英

通過PHP腳本查詢MusicBrainz搜索API

[英]Querying MusicBrainz search API via PHP script

我正在嘗試使用服務器上的PHP腳本從MusicBrainz數據庫中檢索發行信息。 我有一個歌曲列表,帶有歌曲名稱和歌手姓名,我正在嘗試檢索該歌曲首次發行的日期,以及有關該發行版本的其他信息。

我意識到搜索不一定總是100%准確,但是列表中包含相當罕見且獨特的歌曲,因此至少應該使我步入正軌。

我的腳本已經走得很遠了,它可以返回結果和所有內容,但是我不確定如何准確地編寫查詢。 該文檔非常混亂,並且沒有以搜索歌曲標題和歌手的示例為例。

這是我的代碼:

// this info is normally fetched from my DB, but just as a simple example (as it is returned):
$artist = "ZZTop"; 
$song_title = "It's only Love";

// I'm having trouble with this part:
$mb_query = 'http://www.musicbrainz.org/ws/2/recording?query=' . $song_title .' ANDartist:' . $artist ;

$xml = simplexml_load_file($mb_query);

$releasedate = $xml->{'recording-list'}->recording[0]->{'release-list'}->release[0]->date;

最初,我嘗試將$artist$song_title都設置為rawurlencode() ,但很有趣的是,它沒有返回任何結果,因此我認為我將其保留為純字符串。 該查詢返回結果,但是它們確實關閉了,我感覺只有部分查詢被拾取(例如,只有歌曲標題而不是藝術家)。

有人知道這樣做的正確方法嗎?

您的示例代碼創建的查詢是這樣的: http : //musicbrainz.org/ws/2/recording? query= It%27s%20only%20Love%20ANDartist : ZZTop

問題是:

  • ANDartist:應該是AND artist:
  • ZZTop應該為"ZZ Top" ,否則找不到藝術家。 如果您確實認為別名是ZZTop,則可以添加別名ZZTop
  • 您可能想要使用短語( "..." )搜索完整標題。 否則,MB會搜索標題(包括“ It's or only or Love “ artist:“ ZZ TOP”。 但是,包含所有單詞的結果獲得更高的評分,並顯示在頂部。 因此,這是可選的。

因此,要使用的正確/精確查詢將是: http : //musicbrainz.org/ws/2/recording? query=% 22It%27s%20only%20Love%22%20AND%20artist :% 22ZZ%20Top%22 (2結果)

更有效的模糊查詢是: http : //musicbrainz.org/ws/2/recording? query= It % 27s % 20only % 20Love % 20AND % 20artist :% 28ZZ % 20Top % 29 (80個結果,使用artist:(ZZ Top)搜索ZZTop藝術家。

有關詳細信息,請參見MusicBrainz搜索文檔Lucene搜索語法

這段代碼對我有效(在PHP 5.5.13上)而不是您的代碼行:

$mb_query = 'http://www.musicbrainz.org/ws/2/recording?query="'.$song_title.'"'
            .' AND artist:"'.$artist.'"';

PHP文檔說您只需要在PHP 5.1.0之前使用rawurlencode()

另外,您可能希望使用預制的庫更輕松地與MusicBrainz Web服務一起使用。 MB文檔上列出了WS / 2PHP庫 我自己還沒有嘗試過。


獎金

如果由於錄制人的拼寫不同而在查找錄音時遇到問題,則可以先搜索該歌手(包括別名),然后使用該歌手的ID進行錄制搜索。 請注意,您不能在錄音搜索中直接使用別名。

這個查詢將搜索ZZTop :在藝術家的名字,藝術家的別名和藝術家sortname http://musicbrainz.org/ws/2/artist?query=%22ZZTop%22 (見藝術家搜索字段的文檔 )。

通過該搜索,您可以獲得唯一的ID: a81259a0-a2f5-464b-866e-71220f2739f1 請注意,您可能會獲得多個結果,因此您可能想要保存一個具有高分結果的列表,並在下一步找不到記錄時嘗試其他條目。

現在,您可以在記錄搜索中使用ID代替名稱: http : //musicbrainz.org/ws/2/recording?query=%22I%27ts%20only%20Love%22%20AND%20arid : a81259a0-a2f5- 464b-866e-71220f2739f1

當您獲得針對藝術家的查詢的多個結果時,也可以使用arid:(... OR ...)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM