网易云音乐Python版API
前言
在Github上搜索网易云音乐你就会发现很多炫酷的“第三方”


现在机会来了,这里有一个NeteaseCloudMusic_PythonSDK的项目,它把上述的Node接口项目封装到了python中,也支同步了包括登录接口在内原项目的200多个接口。使用方法很简单,仓库已近被打包且发布到了PyPi包名叫做NeteaseCloudMusic
安装
pip install NeteaseCloudMusic
简单使用
from NeteaseCloudMusic import NeteaseCloudMusicApi, api_help, api_list
import os
netease_cloud_music_api = NeteaseCloudMusicApi() # 初始化API
netease_cloud_music_api.cookie = "你的cookie" # 设置cookie, 如果没有cookie需要先登录
# request(self, name, query=None) 的第一个参数为API名称
# 第二个参数为API参数,name支持/song/url/v1和song_url_v1两种写法。
response = netease_cloud_music_api.request("song_url_v1", {"id": 33894312, "level": "exhigh"}) # 调用API
# 获取帮助
print(api_help())
print(api_help('song_url_v1'))
# 获取API列表
print(api_list())
接口名和参数查看API文档NeteaseCloudMusicApi文档
更完整一些的小例子
"""
description: 网易云音乐API使用示例,这个示例引导你进行登录操作,然后下载一首歌曲
author: LuTong
date: 2020-10-07 10:00
"""
from pprint import pprint
import requests
from NeteaseCloudMusic import NeteaseCloudMusicApi, api_help, api_list
netease_cloud_music_api = NeteaseCloudMusicApi() # 初始化API
version_result = netease_cloud_music_api.request("inner_version")
print(
f'当前使用NeteaseCloudMusicApi版本号:{version_result["NeteaseCloudMusicApi"]}\n当前使用NeteaseCloudMusicApi_V8版本号:{version_result["NeteaseCloudMusicApi_V8"]}') # 退出登录
def captcha_sent(_phone):
response = netease_cloud_music_api.request("/captcha/sent", {"phone": f"{_phone}"})
return response
def login_cellphone(_phone, _captcha):
response = netease_cloud_music_api.request("/login/cellphone", {"phone": f"{_phone}", "captcha": f"{_captcha}"})
return response
def song_url_v1(song_id):
# 获取歌曲mp3地址
response = netease_cloud_music_api.request("song_url_v1", {"id": song_id, "level": "exhigh"})
return response
def song_detail(song_id):
# 获取歌曲详情
response = netease_cloud_music_api.request("song_detail", {"ids": str(song_id)})
# 这里记得传一个字符串,其实所有参数都传字符串就行,需要数字的话内部会自己转换的,但是它默认你传入的时候是字符串,所以你传数字他不会自动转字符串,
# 这时如果遇到操作字符串的方法就会报错,所以最好都传字符串,避免出现意外
return response
def login_status():
response = netease_cloud_music_api.request("/login/status")
return response
# 登录
if not netease_cloud_music_api.cookie:
print("请设置cookie")
phone = input("请输入手机号:")
result = captcha_sent(phone)
print(result)
if result.get("code") == 200:
print("验证码已发送,请查收")
captcha = input("请输入验证码:")
result = login_cellphone(phone, captcha)
if result.get("code") == 200:
print("登录成功")
if netease_cloud_music_api.cookie:
print("cookie已自动设置")
else:
print("登录失败")
"""
调用登录接口后,会自动设置cookie,如果cookie失效,需要重新登录,登录过后api会在你的当前工作目录下创建cookie_storage文件保存你的cookie
在下次调用运行程序时,他会判断cookie是否过期,没有过期就自动读取cookie_storage文件中的cookie。
总的来说你不需要手动管理cookie,只需要调用登录接口,然后调用其他接口即可,cookie会自动设置,如果cookie过期,再次调用登录接口就好。
更好的办法是,在cookie还没有失效之前使用refresh_login接口刷新cookie,这样就不需要重新登录了(建议在你每次启动软件时都刷新,当然频繁重启调试的时候另算)
如果你想判断当前是否已经登录,if not netease_cloud_music_api.cookie 就可以了,或者调用/login/status接口
"""
# 获取登录状态
login_status_result = login_status()
# pprint(login_status_result)
if login_status_result['data']['data']["code"] == 200:
print(f'当前登录账号:{login_status_result["data"]["data"]["profile"]["nickname"]}')
version_result = netease_cloud_music_api.request("inner_version")
print(
f'当前使用NeteaseCloudMusicApi版本号:{version_result["NeteaseCloudMusicApi"]}\n当前使用NeteaseCloudMusicApi_V8版本号:{version_result["NeteaseCloudMusicApi_V8"]}') # 退出登录
# 获取歌曲mp3地址
song_url_result = song_url_v1(33894312)
if song_url_result.get("code") == 200:
song_url = song_url_result['data']["data"][0]['url']
else:
print("获取歌曲mp3地址失败")
exit(1)
# 获取歌曲详情
song_detail_result = song_detail(33894312)
if song_detail_result.get("code") == 200:
song_name = song_detail_result['data']['songs'][0]['name']
song_artist = song_detail_result['data']['songs'][0]['ar'][0]['name']
else:
print("获取歌曲详情失败")
exit(1)
# 下载歌曲mp3
print(f"正在下载歌曲:{song_name} - {song_artist}")
result = requests.get(song_url)
with open(f"{song_name} - {song_artist}.mp3", "wb") as f:
f.write(result.content)
print("下载完成")
"""
示例程序结束,如果你运行成功了,那么你的执行目录下应该有一个cookie_storage文件,里面保存了你的cookie,还有一个mp3文件,就是你下载的歌曲
有关其他API的使用方法请参考:https://docs.neteasecloudmusicapi.binaryify.com/
再次注明一下,我之前也想过要不要将登录状态管理和cookie刷新等等封装到NeteaseCloudMusicApi类中,
但最后我想的是,这毕竟这是一个api接口类,就让他保持最原始简洁的状态就好,其他的留给大家去自由发挥吧!
友情提示:单个账户每天发送验证码的次数有限制,千万别一直调试登录接口。
"""
总结
上面只是简单介绍了这个库的一些用法,具体还需要大家自己探索。由于项目创建时间较短,短期内或许有较大更新,博文内容就会滞后。获取最新的信息,大家可以关注项目的Github仓库NeteaseCloudMusic_PythonSDK。同时项目如果对你有所帮助,随手“一颗星“就是给作者最大的支持。
最后给出项目接口的支持列表(有那么几个还没有实现,具体详见改进)
登录
刷新登录
发送验证码
校验验证码
注册(修改密码)
获取用户信息 , 歌单,收藏,mv, dj 数量
获取用户歌单
获取用户电台
获取用户关注列表
获取用户粉丝列表
获取用户动态
获取用户播放记录
获取精品歌单
获取歌单详情
搜索
搜索建议
获取歌词
歌曲评论
收藏单曲到歌单
专辑评论
歌单评论
mv 评论
电台节目评论
banner
获取歌曲详情
获取专辑内容
获取歌手单曲
获取歌手 mv
获取歌手专辑
获取歌手描述
获取相似歌手
获取相似歌单
相似 mv
获取相似音乐
获取最近 5 个听了这首歌的用户
获取每日推荐歌单
获取每日推荐歌曲
私人 FM
签到
喜欢音乐
垃圾桶
歌单 ( 网友精选碟 )
新碟上架
热门歌手
最新 mv
推荐 mv
推荐歌单
推荐新音乐
推荐电台
推荐节目
独家放送
mv 排行
获取 mv 数据
播放 mv/视频
排行榜
歌手榜
云盘
电台 - 推荐
电台 - 分类
电台 - 分类推荐
电台 - 订阅
电台 - 详情
电台 - 节目
给评论点赞
获取动态
热搜列表(简略)
发送私信
发送私信歌单
新建歌单
收藏/取消收藏歌单
歌单分类
收藏的歌手列表
订阅的电台列表
相关歌单推荐
付费精选接口
音乐是否可用检查接口
登录状态
获取视频播放地址
发送/删除评论
热门评论
视频评论
退出登录
所有榜单
所有榜单内容摘要
收藏视频
收藏 MV
视频详情
相关视频
关注用户
新歌速递
喜欢音乐列表(无序)
收藏的 MV 列表
获取最新专辑
听歌打卡
获取视频标签/分类下的视频
已收藏专辑列表
获取动态评论
歌单收藏者列表
云盘歌曲删除
热门话题
电台 - 推荐类型
电台 - 非热门类型
电台 - 今日优选
心动模式/智能播放
转发动态
删除动态
分享歌曲、歌单、mv、电台、电台节目到动态
通知-私信
通知-评论
通知-@我
通知-通知
设置
云盘数据详情
私信内容
我的数字专辑
batch批量请求接口
获取视频标签列表
全部mv
网易出品mv
收藏/取消收藏专辑
专辑动态信息
热搜列表(详细)
更换绑定手机
检测手机号码是否已注册
初始化昵称
更新歌单描述
更新歌单名
更新歌单标签
默认搜索关键词
删除歌单
电台banner
用户电台
热门电台
电台 - 节目详情
电台 - 节目榜
电台 - 新晋电台榜/热门电台榜
类别热门电台
云村热评
电台24小时节目榜
电台24小时主播榜
电台最热主播榜
电台主播新人榜
电台付费精品榜
歌手热门50首歌曲
购买数字专辑
获取 mv 点赞转发评论数数据
获取视频点赞转发评论数数据
调整歌单顺序
调整歌曲顺序
独家放送列表
获取推荐视频
获取视频分类列表
获取全部视频列表接口
获取历史日推可用日期列表
获取历史日推详细数据
国家编码列表
首页-发现
首页-发现-圆形图标入口列表
数字专辑-全部新碟
数字专辑-热门新碟
数字专辑&数字单曲-榜单
数字专辑-语种风格馆
数字专辑详情
更新头像
歌单封面上传
楼层评论
歌手全部歌曲
精品歌单标签列表
用户等级信息
电台个性推荐
用户绑定信息
用户绑定手机
新版评论
点赞过的视频
收藏视频到视频歌单
删除视频歌单里的视频
最近播放的视频
音乐日历
电台订阅者列表
云贝签到信息
云贝签到
云贝所有任务
云贝todo任务
云贝今日签到信息
云贝完成任务
云贝收入
云贝支出
云贝账户信息
账号信息
最近联系人
私信音乐
抱一抱评论
评论抱一抱列表
收藏的专栏
关注歌手新歌
关注歌手新MV
歌手详情
云盘上传
二维码登录
话题详情
话题详情热门动态
歌单详情动态
绑定手机
一起听状态
用户历史评论
云盘歌曲信息匹配纠正
云贝推歌
云贝推歌历史记录
已购单曲
获取mlog播放地址
将mlog id转为视频id
vip成长值
vip成长值获取记录
vip任务
领取vip成长值
歌手粉丝
数字专辑详情
数字专辑销量
音乐人数据概况
音乐人播放趋势
音乐人任务
账号云豆数
领取云豆
获取 VIP 信息
音乐人签到
发送文本动态
获取客户端歌曲下载 url
获取歌单所有歌曲
乐签信息
最近播放-歌曲
最近播放-视频
最近播放-声音
最近播放-歌单
最近播放-专辑
最近播放-播客
签到进度
重复昵称检测
歌手粉丝数量
音乐人任务(新)
内部版本接口
歌单更新播放量
黑胶时光机
音乐百科 - 简要信息
乐谱列表
乐谱内容
曲风列表
曲风偏好
曲风详情
曲风-歌曲
曲风-专辑
曲风-歌单
曲风-歌手
私信和通知接口
回忆坐标
播客搜索
播客声音上传
验证接口-二维码生成
验证接口-二维码检测
听歌识曲
根据nickname获取userid接口
播客声音列表
专辑简要百科信息
歌曲简要百科信息
歌手简要百科信息
mv简要百科信息
搜索歌手
用户贡献内容
用户贡献条目、积分、云贝数量
年度听歌报告
播客声音搜索