用于解析网易云音乐的歌曲、歌手、专辑等信息的 API/SDK.
灵感来源: Netease_url
示例 API: https://ebnr.xiyang6666.top
Important
示例 API 不支持 VIP 歌曲的解析.
如需解析 VIP 歌曲, 请按照下文教程自行部署项目, 并使用有 VIP 的网易云音乐账号的 Cookie 配置项目.
- 克隆项目并安装依赖.
- 在
data
目录下创建cookie.json
文件或运行一次项目以自动生成改文件, 使用浏览器登录网易云音乐获取 Cookie 并填入该文件. (可选) - 使用
pdm run start
或python -m ebnr
或uvicorn ebnr:app --host 0.0.0.0
启动项目.
使用 docker-compose
services:
ebnr:
image: xiyang6666/ebnr:dev
container_name: ebnr
restart: always
network_mode: bridge
environment:
- TZ=Asia/Shanghai
- EBNR_BASE_URL=https://example.com
volumes:
- ./data:/app/data
ports:
- 8000:8000
一键部署
配置文件在项目根目录下的 config.toml
中, 可以使用环境变量覆盖配置.
配置项 | 默认值 | 注释 |
---|---|---|
EBNR_BASE_URL | http://127.0.0.1:8000 | API 根路径, 用于 meting-api 正确处理返回值 |
EBNR_API_CACHE | true | 是否缓存上游网易云 API 返回值 |
EBNR_AUDIO_CACHE_TIMEOUT | 3600 | 音频链接缓存时长, 为 0 则不缓存 |
EBNR_AUDIO_CACHE_TYPE | optimistic | 音频链接缓存策略,EBNR_AUDIO_CACHE_TIMEOUT 为 0 时无效 |
访问 https://ebnr.xiyang6666.top/docs 以获取 OpenAPI 文档.
支持的网易云链接格式为 [http://|https://][y.]music.163.com[/m]/<song|album|playlist></<id>|?id=<id>>
根路径, 显示欢迎信息与 VIP 状态.
支持拼接网易云分享链接, 会自动根据链接类型重定向至正确的路径.
meting-api 兼容接口, 详见 meting-api
获取歌曲信息, 同时支持 GET 与 POST, POST 请求参数为 JSON 格式.
支持拼接网易云分享链接, 相当于传入单个 id.
示例:
https://ebnr.xiyang6666.top/info/https://music.163.com/song?id=557579321
请求参数:
参数 | 必填 | GET | POST | 类型 | 注释 |
---|---|---|---|---|---|
ids |
❌ | ❌ | ✅ | int[] | 歌曲 ID 列表, 如果传入则返回 SongInfo[] |
id |
❌ | ✅ | ✅ | int | 歌曲 ID, GET 请求可传入多个, 传入单个时返回 SongInfo , 传入多个时返回 SongInfo[] |
links |
❌ | ❌ | ✅ | string[] | 歌曲分享链接列表,如果传入则返回 SongInfo[] |
link |
❌ | ✅ | ✅ | string | 歌曲分享链接, GET 请求可传入多个, 传入单个时返回 SongInfo , 传入多个时返回 SongInfo[] |
ids
, id
, links
, link
至少应传入一种, 传入多个时优先级从前往后.
获取歌曲音频, 同时支持 GET 与 POST, POST 请求参数为 JSON 格式.
支持拼接网易云分享链接, 相当于传入单个 id.
示例
https://ebnr.xiyang6666.top/audio/https://music.163.com/song?id=557581315
请求参数:
参数 | 必填 | GET | POST | 类型 | 注释 |
---|---|---|---|---|---|
ids |
❌ | ❌ | ✅ | int[] | 歌曲 ID 列表, 如果传入则返回 AudioInfo[] |
id |
❌ | ✅ | ✅ | int | 歌曲 ID, GET 请求可传入多个, 传入单个时返回 AudioInfo , 传入多个时返回 AudioInfo[] |
links |
❌ | ❌ | ✅ | string[] | 歌曲分享链接列表,如果传入则返回 AudioInfo[] |
link |
❌ | ✅ | ✅ | string | 歌曲分享链接, GET 请求可传入多个, 传入单个时返回 AudioInfo , 传入多个时返回 AudioInfo[] |
quality |
❌ | ✅ | ✅ | string | 音频质量, 可选 standard (默认), higher , exhigh , lossless , hires , jyeffect , sky , jymaster |
ids
, id
, links
, link
至少应传入一种, 传入多个时优先级从前往后.
解析歌曲音频, 同时支持 GET 与 POST, POST 请求参数为 JSON 格式.
与 /audio
不同, 该接口会直接重定向至歌曲的音频地址.
仅支持拼接网易云分享链接.
示例
https://ebnr.xiyang6666.top/resolve/https://music.163.com/song?id=1357953770
获取歌单信息, 同时支持 GET 与 POST, POST 请求参数为 JSON 格式.
支持拼接网易云分享链接, 相当于传入单个 id.
示例
https://ebnr.xiyang6666.top/playlist/https://music.163.com/playlist?id=13317821430
请求参数:
参数 | 必填 | GET | POST | 类型 | 注释 |
---|---|---|---|---|---|
id |
❌ | ✅ | ✅ | int | 歌曲 ID |
link |
❌ | ✅ | ✅ | string | 歌曲分享链接 |
id
(可选): 歌单 IDlink
(可选): 歌单分享链接
id
, link
至少应传入一种, 传入多个时优先级从前往后.
获取专辑信息, 同时支持 GET 与 POST, POST 请求参数为 JSON 格式.
支持拼接网易云分享链接, 相当于传入单个 id.
示例
https://ebnr.xiyang6666.top/album/https://music.163.com/album?id=38591089
请求参数:
参数 | 必填 | GET | POST | 类型 | 注释 |
---|---|---|---|---|---|
id |
❌ | ✅ | ✅ | int | 歌曲 ID |
link |
❌ | ✅ | ✅ | string | 歌曲分享链接 |
id
, link
至少应传入一种, 传入多个时优先级从前往后.
/info
接口无法获取jyeffect
,sky
以及jymaster
的音频信息, 暂时未找到对应功能的参考代码./playlist
接口无法获取歌单 1000 首之后的歌.