MusicBrainz 没有/没有/没有 复杂的OAuth认证,直接访问即可!

MusicBrainz WebAPI

目前Musicbrainz提供两种WebAPI:

  • XML Web Service
  • JSON Web Service (Beta)

Rate Limiting

MusicBrainz 的API一般都无用户权限认证,允许任何匿名访问,直接打开浏览器访问即可。

但是,如果为了增加访问限制的数量,官方建议在request请求的头部加上user-agent

参考:Rate Limiting

格式如下:

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 accurate

MusicBrainz Python SDK

注意:目前 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 Database 数据库下载使用

MusicBrainz的数据库是完全免费公开下载使用的。

参考官方说明:MusicBrainz Database
参考官方说明:MusicBrainz Database/Download
参考官方说明:MusicBrainz Database / Schema

MusicBrainz数据库结构图(关系型):

使用方法有很多种:

  • Virtual Machine 虚拟机
  • JSON文件
  • Postgresql数据库

安装Postgresql数据库

参考官方:Database Installation

下载数据库的方式有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 ..

一篇文章玩转全网音乐信息库MusicBrainz API相关推荐

  1. java黄油刀_一篇文章玩转ButterKnife,让代码更简洁

    前言 话说,Android开发的兄弟们都知道,每次初始化控件,设置相应的事件,写的那点过程多而且恶心.我们先一块回顾下不堪的曾经~那些年,我们是这样初始化控件: // 每次的习惯上来写一个initVi ...

  2. 一篇文章玩转 RNN 网络 原理

    1. RNN的网络结构(展开) 图 1 RNN网络的基本运算单元 RNN 网络是由一个个的 cell 组成的,每一个 cell 都五脏俱全: 可以看出,沿着时间轴 t 每一个RNN的单元内都有一个输入 ...

  3. 借重新装系统之际,一篇文章带你玩透Windows 10从系统安装到软件选择

    系统安装所需软件 Rufus 一个制作USB-ISO的免费软件,比微软官方工具好的地方在于除了可以制作windows 系统U盘,还可以制作linux 以及安卓X86的系统安装光盘. 借重新装系统之际, ...

  4. 五年程序员是如何玩转闲鱼无货源的,只看这一篇文章就够了

    今天的内容方向主要是基础篇-进阶篇 ,优化了一下操作方法,尽量细化,让你看完这篇内容之后从入门到大神. 基础篇: 注册这些基础的之前说过,这次就不说了,这次说下如何养号. 完善个人资料(头像.昵称.简 ...

  5. Jetpack新成员,一篇文章带你玩转Hilt和依赖注入

    本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭霖 即可关注,每个工作日都有文章更新. 各位小伙伴们大家早上好. 终于要写这样一篇我自己都比较怕的文章了. 虽然今年的Google ...

  6. 8问8答,一篇文章读懂空间音效

    近日,第一届网易集团创新奖评选落下帷幕,网易智企"逼近人耳极限-音频通话"项目从众多参赛作品中脱颖而出,荣获"0-1创新奖"三等奖. 此次获奖的项目诞生于网易智 ...

  7. ElasticSearch8.x.x 【一篇文章精通系列】【ES的基本操作,ES安装,ES head + Kibana】

    ElasticSearch8.x.x [一篇文章精通系列][ES的基本操作,ES安装,ES head + Kibana] 一.ElasticSearch的安装 1.解压安装ES 2.熟悉目录 3.启动 ...

  8. 【区块链】周鸿祎:写区块链最好的一篇文章;曾鸣:大部分关于区块链未来伟大前景的讨论还只是猜想而已

    区块链就是未来,也是一种回到互联网本来意义的方式. 文 | 机器之能 注:奇虎360创始人周鸿祎说,这是了解区块链最深入浅出的一篇文章. 以下正文: 这组词序并没有任何意义,真正让它们有价值的地方在于 ...

  9. 全面了解苹果WWDC2020,一篇文章足矣

    WWDC2020已经落下帷幕,如果你想要了解昨夜究竟发生了什么,那么看这一篇文章就足够了!WWDC是苹果公司年度的开发者大会,从公司战略的层面来讲,其战略意义远胜于苹果秋季新品发布会.苹果的电子产品之 ...

最新文章

  1. 随机改变颜色返回#+...样式的值
  2. 【Android NDK 开发】JNI 方法解析 ( JNIEXPORT 与 JNICALL 宏定义作用 )
  3. 校招 | 第四范式 Plan1956 招募计划正式开启!
  4. 《大数据分析原理与实践》一一第3章 关联分析模型
  5. 转: 微博的多机房部署的实践(from infoq)
  6. 重构——解决过长参数列表(long parameter list)
  7. sqllite能连接mysql_SQLLite 可以通过SQL语言来访问的文件型SQL数据库
  8. php对象转换为字符串,php – 类的对象..无法转换为字符串
  9. Webappbuilder自定义widget模板
  10. 华为机试-字符串通配符
  11. c语言getch函数_在C / C ++中使用getch()函数
  12. rsem比对_基于二代测序的肿瘤新生抗原检测方法、装置和存储介质与流程
  13. The Expressive Power of Neural Networks: A View from the Width
  14. qt开源项目: tiled 瓦片 游戏地图编辑器
  15. win10商店的应用下载移植 注:.appx文件最好在win10使用 附win10商店UWP的安装包
  16. 计算机开不了机反复重启,电脑一直重启就是开不了机怎么样解决
  17. win10发现网络计算机,Win10如何启用网络发现?Win10启用网络发现的方法
  18. 国内网页设计网站网址大全[问题点数:0分,结帖人:beijin2008]
  19. 亚马逊婴儿围栏CPC认证标准要求
  20. 异构计算给我们带来了哪些思考?

热门文章

  1. on-premise-application是什么意思
  2. 电脑按ctrl+alt+del键没反应?
  3. 被裁员之后的Java面经分享,10年经验,已投简历 130+
  4. 超高频RFID工业洗衣标签,在RFID服装管理上的应用
  5. 程序员生存定律[七] 表达背后的力量
  6. 苹果App Store认栽,应用商店一本万利时代终结?
  7. 大厂前端面试题总结(浏览器)
  8. 华为交换机堆叠连线方法
  9. ArcMap客户端——功能区绘制步骤
  10. linux点阵ascii像素字体,点阵字体显示系列之一:ASCII码字库的显示