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

MusicBrainz WebAPI

目前Musicbrainz提供两种WebAPI:

XML Web Service

JSON Web Service (Beta)

Rate Limiting

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

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

格式如下:

User-Agent: / ( contact-email )

or

User-Agent: / ( 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版本也很好用。

查询格式:

http://musicbrainz.org/ws/2//?query=: AND :&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

关于XML解析

Python:

xmltodict

lxml

xpat

...

经过试用,目前尚未找到能“正确”解析的工具,总是出现一些问题。

MusicBrainz JSON API (Beta)

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参数

当你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引擎的算法。

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

php 音乐歌词xml,一篇文章玩转全网音乐信息库MusicBrainz API相关推荐

  1. 一篇文章玩转全网音乐信息库MusicBrainz API

    MusicBrainz 没有/没有/没有 复杂的OAuth认证,直接访问即可! MusicBrainz WebAPI 目前Musicbrainz提供两种WebAPI: XML Web Service ...

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

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

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

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

  4. Android漂亮的音乐歌词控件,仿网易云音乐滑动效果

    前言: 项目有个音乐播发器功能,实现音乐在线播放,同时需要带有歌词显示功能.网上也找过,在github找到勉强能用的控件,只是效果还是差强人意,不是特别好.于是趁有空的时间,参考了网上的部分demo, ...

  5. html js音乐歌词滚动,如何用html+js实现音乐歌词同步播放器

    html> 随便听听 var playlist=[]; var bglist=[ "http://img04.taobaocdn.com/imgextra/i4/1655943686/ ...

  6. python爬取网易云音乐评论分析_Python爬取网易云音乐评论(附加密算法)

    网易云音乐,里面汇聚了哲学家,小说家,story-teller,皮皮虾等各种人才,某些评论非常值得收藏(甚至开了一个歌单专门收藏它们).竟然这么好玩,何不尝试把他们爬取下来呢? 前置需求 可选:fid ...

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

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

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

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

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

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

  10. 一篇文章教会你使用Python网络爬虫下载酷狗音乐

    [一.项目背景] 现在的听歌软件动不动就是各种付费,要下载软件才能听,当你下载了之后,你会惊奇的发现这首歌还收费,这就让一向喜欢白嫖的小编感到很伤心了.于是,小编冥思苦想,终于让我发现了其中的奥秘,一 ...

最新文章

  1. Vue API(directives) 自定义指令
  2. Android Material Design :LinearLayoutCompat添加分割线divider
  3. 技术交底软件_【干货分享】软件类产品如何进行专利挖掘与技术交底书撰写?...
  4. 在Github上搭建你的博客
  5. 【Python-3.5】变量命名规范
  6. .vue文件 转换成html,在vue中把含有html标签转为html渲染页面的实例
  7. linux执行jmeter脚本解决响应数据为空
  8. php构造方法什么时候使用,php:构造方法的说明详解
  9. 电脑连接Wifi,只能上QQ不能上网。关键字:无Internet访问权限。
  10. 从三个方面理解ARM嵌入式系统
  11. 电流转电压的multisim仿真电路图
  12. 谷歌火狐浏览器被360浏览器劫持的解决办法
  13. 有关String类与StringBuffer类
  14. 如何使用visual studio将你的程序打包成安装包
  15. php图片指纹获取,指纹识别是通过什么等物理传感器获取指纹图像
  16. < mapreduce >论文学习笔记
  17. 高难度c语言编程题,高难度脑筋急转弯题目合集带答案
  18. ubuntu 主分区扩容
  19. arclist调用附加字段addfields的使用
  20. 特殊数字符号大全,word 数学符号

热门文章

  1. 线性代数学习笔记8-1:复数矩阵与共轭转置、Hermite矩阵、酉矩阵、傅里叶矩阵和快速傅里叶变换FFT
  2. openwrt路由器完美破解成信宿舍校园网
  3. RecycleView获取所有的ViewHolder
  4. sketchup生成面域插件_适用于Revit / SketchUp / Rhino / ArchiCAD插件最新版
  5. 2019111 控制台上实现极乐净土(有图有背景音乐)
  6. 【CVX】SDP and conic form problems
  7. c语言表达式优先级最高的是,C语言运算符优先级表
  8. Tomcat9的安装和配置
  9. 通达OA2017 工作流设计中“退回”功能的升级测试(图文)
  10. 基于MATLAB的有源三相滤波器的设计,基于MATLAB的有源滤波器的设计与仿真