网易云音乐的常用API(搜索,歌词,mp3下载) 您所在的位置:网站首页 网易云歌手提成 网易云音乐的常用API(搜索,歌词,mp3下载)

网易云音乐的常用API(搜索,歌词,mp3下载)

2024-07-09 17:16| 来源: 网络整理| 查看: 265

timg (2).jpeg最近正好用到,记录一下。本文为一个流程,通过歌曲名,来下载歌曲以及歌词。如果你用Python等进行数据采集,记得添加User-Agent,不然它会返回错误:Cheater。

搜索歌曲获取ID

URL:http://music.163.com/api/search/pc提交方式:POST

参数s:歌曲名offset:偏移量limit:获取歌曲数type:类型(歌曲:1、专辑:10、歌手:100、歌单:1000、用户:1002、mv:1004)

例如,通过歌曲名抓取歌曲信息。

POST http://music.163.com/api/search/pc BODY s:PAPISM offset:0 limit:1 type:1

返回JSON:

{ "result": { "songs": [{ "name": "PAPISM", "id": 34367845, "artists": [{ "name": "小澤亜李", "id": 999479, "picId": 0, "img1v1Id": 0, "briefDesc": "", "picUrl": "http://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg", "img1v1Url": "http://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg", "albumSize": 0, "alias": [], "trans": "", "musicSize": 0 }], "album": { "name": "モンスター娘のいる日常 キャラクターソング Vol.2", "id": 3279418, "type": "EP/Single", "size": 5, "picId": 7987951978099954, "blurPicUrl": "http://p1.music.126.net/SAsjIzWilXO4S2HWBGrfVw==/7987951978099954.jpg", "companyId": 0, "pic": 7987951978099954, "picUrl": "http://p1.music.126.net/SAsjIzWilXO4S2HWBGrfVw==/7987951978099954.jpg" }, "mvid": 0, "rtype": 0, "rurl": null, "mp3Url": "http://m2.music.126.net/cl94aFtBzASxULxpDyv00Q==/7962663210671608.mp3" }], "songCount": 3 }, "code": 200 }

其中name是歌曲名,id是歌曲名对应的网易云音乐ID,http://music.163.com/#/song?id=34367845,可以直接访问听歌。artists是歌手们的信息,id对应歌手id,picUrl是歌手头像图。album是唱片信息,name是唱片名,blurPicUrl是唱片封面图,url后面添加?param=130y130参数可以获取130x130尺寸的图片,修改数字也可获取其他尺寸。songs内最后一个字段存放了歌曲url,但是现在已经失效,不过现在还有其他很方便就能获取的办法。

通过这个API能获得歌曲ID,唱片图,唱片名,歌手和歌曲信息。

通过歌曲ID下载歌曲

通过这个的链接可以直接下载歌曲:

http://music.163.com/song/media/outer/url?id=34367845.mp3

此URL的HTTP头里添加了location跳转,会直接跳转到下载链接,链接不是固定的,获取方法也很简单,以Python为例:

import requests url = 'http://music.163.com/song/media/outer/urlid=34367845.mp3' headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36(KHTML, like Gecko) Chrome/35.0.1916.138 Safari/537.36'} location = requests.head(url, headers, allow_redirects=False).headers['location'] print location

执行后会输出下载链接,不过要注意的是,如果你使用国外的服务器,或身处国外,location会返回http://music.163.com/404,建议使用国内服务器,或者修改服务器hosts,或者使用国内服务器转发。这个hosts目前还可正常使用。

158.69.209.100 music.163.com 14.215.100.225 m1.music.126.net 14.215.100.225 m2.music.126.net 14.215.100.225 m3.music.126.net 14.215.100.225 m4.music.126.net 14.215.100.225 m5.music.126.net 14.215.100.225 m6.music.126.net 14.215.100.225 m7.music.126.net 14.215.100.225 m8.music.126.net 14.215.100.225 m9.music.126.net 14.215.100.225 m10.music.126.net

linux的hosts文件在etc/hosts里,修改后重启networking服务即可生效。

通过歌曲ID下载歌词

URL:http://music.163.com/api/song/media提交方式:GET参数:id

例如,通过歌曲ID获取歌词json:

http://music.163.com/api/song/media?id=34367845

返回结果:

{ "songStatus": 0, "lyricVersion": 2, "lyric": "[by:上划解锁]\n[ti:PAPISM]\r\n[ar:パピ(CV:小澤亜李)]……省略", "code": 200 }

lyricVersion是歌词版本号,lyric就是歌词了。如果歌曲没有歌词的话,也就没有lyric字段。获取lyric字段内容,存储为.lrc文件即可,以python为例:

import urllib2 import requests import json import codecs lrc_url = 'http://music.163.com/api/song/media?id=34367845' lrc_headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36' } lrc_req = urllib2.Request(url=lrc_url, headers=lrc_headers) # 获取页面内容 html = urllib2.urlopen(lrc_req).read() # 转为json lrc_json_dict = json.loads(html) # 如果有lyric字段,保存为.lrc文件 if 'lyric' in lrc_json_dict: file = codecs.open('/lrc_save_file/34367845.lrc', 'w', 'utf-8') file.write(lrc_json_dict['lyric']) file.close()

这样,通过一个歌曲名,获得歌曲ID,我们就可以得到歌曲的详细信息、下载歌曲、下载歌词、下载封面。注意:本文仅供学习交流使用。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有