内容简介:目前Musicbrainz提供两种WebAPI:
MusicBrainz 没有/没有/没有 复杂的OAuth认证,直接访问即可!
MusicBrainz WebAPI
目前Musicbrainz提供两种WebAPI:
- XML Web Service
- JSON Web Service (Beta)
Rate Limiting
MusicBrainz 的API一般都无用户权限认证,允许任何匿名访问,直接打开浏览器访问即可。
但是,如果为了增加访问限制的数量,官方建议在request请求的头部加上 user-agent 。
格式如下:
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次/秒。 - 完全匿名访问:限制50次/秒。
-
其它访问:
- Source IP address:取决于访问速率,一旦过高,将被完全限制,直到速度降为到1次/秒。
- Global: 300次/秒。
MusicBrainz XML API
Musicbrainz的WebAPI是XML格式的。目前v1版本正准备被淘汰,v2版本也很好用。
参考官方: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
关于XML解析
Python:
- xmltodict
- lxml
- xpat
- ...
经过试用,目前尚未找到能“正确”解析的工具,总是出现一些问题。
MusicBrainz JSON API (Beta)
参考官方: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参数
参考: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
score属性
在我们请求WebAPI搜索的时候,每个返回的搜索结果都会有一个 score 属性。这个是 匹配度 的值,100分,99分,65分等等。如果搜索的信息完全匹配,则为100。
这个搜索算法,是 Lucene 引擎的算法。
参考:More information on the “Score” attribute in the search of musicbrainz
参考:Lucene scoring not accurateMusicBrainz Python SDK
注意:目前 python-musicbrainz 项目是调用的v1版本API,显示的数据不是很全。
安装:
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 Database 数据库下载使用
MusicBrainz的数据库是完全免费公开下载使用的。
MusicBrainz数据库结构图(关系型):
使用方法有很多种:
- Virtual Machine 虚拟机
- JSON文件
- Postgresql数据库
安装Postgresql数据库
要查看最新日期为什么,可以直接到 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 ..
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 李飞飞团队新作:一种补全视觉信息库的半监督方法
- 全网最全 Dalvik 指令集解析 !
- 全网最全 | MySQL EXPLAIN 完全解读
- 全网最全Flutter常用工具类
- 全网最通透的 Java 8 版本特性讲解
- 全网首发!Laravel 远程代码执行漏洞 POC
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
High Performance Python
Micha Gorelick、Ian Ozsvald / O'Reilly Media / 2014-9-10 / USD 39.99
If you're an experienced Python programmer, High Performance Python will guide you through the various routes of code optimization. You'll learn how to use smarter algorithms and leverage peripheral t......一起来看看 《High Performance Python》 这本书的介绍吧!