内容简介:目前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
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
移动交互设计精髓
班格 (Cameron Banga)、温霍尔德 (Josh Weinhold) / 傅小贞、张颖鋆 / 电子工业出版社 / 2015-4-1 / CNY 89.00
越来越多的人正涌入移动应用领域,而设计和体验将是移动应用成败的关键。作者通过上百款应用的设计实践,系统化地梳理了移动应用的设计方法论,在理解用户、跨平台和适配设计、移动组件应用、界面视觉感染力、简约设计等方面都进行了深入阐述。此外,作者还介绍了一些非常实用的移动设计工具,分享了设计师该如何与开发工程师协同工作,以及如何收集用户反馈、甄别版本迭代的更新需求等。 《移动交互设计精髓——设计完美的......一起来看看 《移动交互设计精髓》 这本书的介绍吧!