MusicBrainz 沒有/沒有/沒有 複雜的OAuth認證,直接訪問便可!
目前Musicbrainz提供兩種WebAPI:python
MusicBrainz 的API通常都無用戶權限認證,容許任何匿名訪問,直接打開瀏覽器訪問便可。git
可是,若是爲了增長訪問限制的數量,官方建議在request請求的頭部加上user-agent
。github
格式以下:sql
User-Agent: <AppName>/<version> ( contact-email ) or User-Agent: <AppName>/<version> ( contact-url ) etc., User-Agent: MyAwesomeTagger/1.2.0 ( http://myawesometagger.example.com ) User-Agent: MyAwesomeTagger/1.2.0 ( me@example.com )
根據user-agent
的種類,限制狀況以下:數據庫
python-musicbrainz/0.7.3
庫訪問:限制50次/秒。其它訪問:json
Musicbrainz的WebAPI是XML格式的。目前v1版本正準備被淘汰,v2版本也很好用。api
參考官方:Development / XML Web Service / Version 2瀏覽器
查詢格式:服務器
http://musicbrainz.org/ws/2/<資源>/?query=<屬性1>:<值> AND <屬性2>:<值>&limit=<顯示數> 如,搜索artist: http://musicbrainz.org/ws/2/artist/?query=name:bigbang%20AND%20country:NO&limit=10 如,搜索album: http://musicbrainz.org/ws/2/release/?query=name:edendale 如,搜索track: http://musicbrainz.org/ws/2/recording/?query=name:pristine
具體查詢詳細參考:Development / XML Web Service / Version 2 / Search
Python:
通過試用,目前還沒有找到能「正確」解析的工具,老是出現一些問題。
參考官方:Development/JSON Web Service
Musicbrainz提供了一個正在beta開發中的JSON API,要遠方便與XML。由於XML的解析實在是太麻煩了。
具體的方法是:在v2版本的API上加上一個fmt
參數便可。
格式爲:..&fmt=json
示例:
http://musicbrainz.org/ws/2/artist/?query=name:bigbang&fmt=json
注意:目前JSON API正在開發中,因此是unstable的。
參考:inc - Development / XML Web Service / Version 2
當你request API的時候,默認返回的數據不少都是不全的。MusicBrainz可讓你有選擇性的增長返回的數據。須要用到的就是url裏的inc
參數。
格式爲...&inc=AAA+BBB+CCC
示例:
http://musicbrainz.org/ws/2/recording/?query=bigbang&inc=artist-credits+isrcs+releases&fmt=json
在咱們請求WebAPI搜索的時候,每一個返回的搜索結果都會有一個score
屬性。這個是匹配度
的值,100分,99分,65分等等。若是搜索的信息徹底匹配,則爲100。
這個搜索算法,是Lucene
引擎的算法。
參考:More information on the 「Score」 attribute in the search of musicbrainz
參考:Lucene scoring not accurate
注意:目前
python-musicbrainz
項目是調用的v1版本API,顯示的數據不是很全。
參考官方Github:alastair/python-musicbrainzngs
參考官方API文檔:musicbrainzngs 0.6 documentation »
參考官方示例:Usage
安裝:
pip install musicbrainzngs
登陸:
import musicbrainzngs as mb # 登陸 mb.auth("用戶名", "密碼") # 隨便寫個app信息 mb.set_useragent("Example music app", "0.1", "http://example.com/music") # [可選] 指定查詢服務器 mb.set_hostname("beta.musicbrainz.org")
就是這麼簡單,沒有複雜的Oauth驗證。
經常使用操做:
# 搜索一個artist artists = mb.search_artists(artist="big bang", type="group", country="Norway")
MusicBrainz的數據庫是徹底免費公開下載使用的。
參考官方說明:MusicBrainz Database
參考官方說明:MusicBrainz Database/Download
參考官方說明:MusicBrainz Database / Schema
MusicBrainz數據庫結構圖(關係型):
使用方法有不少種:
下載數據庫的方式有http、ftp、rsync等,其中最方便的是http。
下載地址通常爲:
http://ftp.musicbrainz.org/pu...
要查看最新日期爲何,能夠直接到http://ftp.musicbrainz.org/pub/musicbrainz/data/fullexport
查看下面的子目錄有哪些。
Postgresql數據庫下載使用:
# 下載最新日期的數據庫文件 "mbdump.tar.bz2" 大約2.7GB wget http://ftp.eu.metabrainz.org/pub/musicbrainz/data/fullexport/20181205-001547/mbdump.tar.bz2 tar -xjvf mbdump.tar.bz2 cd mbdump/ mkdir ../finished # 建立空數據庫 createdb -U postgres --owner=postgres --encoding=UNICODE db_musicbrainz # 登陸數據庫 psql -U postgres db_musicbrainz \i admin/sql/CreateTables.sql BEGIN \q # 導入數據 for FILE in * ; do cmd="\\copy $FILE from ./$FILE" echo $cmd | psql -U postgres db_musicbrainz && mv $FILE ../finished/ done echo `date` Done cd ..