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 ..