尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

只需四个PHP文件,跑通四大平台的音乐播放地址接口

只需四个PHP文件,跑通四大平台的音乐播放地址接口 只需四个PHP文件跑通四大平台的音乐播放地址接口【免费下载链接】music-apiMusic API项目地址: https://gitcode.com/gh_mirrors/mu/music-api这篇文章从一个开发者的真实工作场景切入介绍 music-api 这个纯 PHP 编写的音乐播放地址接口项目。你不必读懂源码也能在十分钟内搞清楚它能做什么、怎么最快跑起来、会遇到哪些坑以及什么时候不该用它。周三下午一个正在发愁的前端工程师周三下午两点半北京一家软件公司的工位上前端工程师小林接到一个新需求给客户的点歌页面提供音乐播放地址接口需要同时覆盖网易云、QQ音乐、酷狗、酷我四个平台。他翻遍手头资料也没理出头绪——连一个平台的播放地址怎么拿他都不清楚更别说四个。直到同事推给他一个叫music-api的开源项目四个 PHP 文件正好对应四个平台。小林把它们放进熟悉的运行环境几分钟后看到了第一份搜索结果。接下来要讲的就是小林走过的这条路。你不需要比小林懂更多只需要一台能跑 PHP 的电脑。一页纸看懂它能做什么、不能做什么一句话概括music-api 由四个相互独立的 PHP 文件组成帮你把搜索歌曲和获取播放地址这两件重复劳动封装好统一以 JSON 形式返回。四个文件的职责可以收进一张表平台文件能做的事网易云音乐netease.php歌曲搜索、按歌单 ID 解析歌单、随机返回歌单内歌曲、按歌曲 ID 获取地址QQ音乐qq.php歌曲搜索、按歌曲 mid 获取播放地址酷狗音乐kugou.php歌曲搜索、MV 搜索与地址解析、按 hash 获取歌曲或 MV酷我音乐kuwo.php歌曲搜索、MV 搜索与地址解析、按 rid/mid 获取歌曲或 MV同时也把不能做什么说在前面免得后面踩空不保证付费歌曲能拿到下载地址部分平台会返回空值或明确提示不负责版权问题播放地址是否有效由平台决定不附带歌词、封面、音质切换这类能力它只给你播放地址不内置频率控制调用太频繁可能导致 IP 被平台限制。边界先划清楚用起来才踏实。作为一个多平台音乐解析接口它的定位非常收敛只解决拿到地址这一件事。用最短的代码跑通第一次搜索第一步把代码拿到本地git clone https://gitcode.com/gh_mirrors/mu/music-api仓库里就是五个文件四个 PHP 文件加一个 README.md没有依赖包没有构建步骤。第二步准备一个最小的 PHP 环境如果你的电脑上装了 PHP需要带 curl 扩展可以不用配任何 Web 服务器直接起一个内置的开发服务器cd music-api php -S 127.0.0.1:8080这行命令启动后music-api 就已经在本地跑起来了。第三步发起第一次请求打开浏览器访问下面这个地址http://127.0.0.1:8080/netease.php?msg晴天n0msg是搜索的歌名n0表示取搜索结果里第一首歌的播放地址。你会看到类似这样的返回{ code: 200, text: 解析成功, type: 歌曲解析, data: { id: 186016, name: 晴天, singername: 周杰伦, song_url: http://m701.music.126.net/xxx.mp3 } }如果你在写服务端代码也可以用一行 curl 验证curl http://127.0.0.1:8080/netease.php?msg晴天n0从拿到代码到拿到第一首真实可播放的地址全程不超过五分钟。而且你会发现换到 qq.php、kugou.php、kuwo.php参数风格几乎一模一样——这是这个项目最舒服的地方。它到底是怎么做到的两步接力与翻译官你可能好奇既然四个平台的接口、认证方式都不一样为什么每个文件都只有两三百行答案藏在两步接力的结构里。以网易云为例你看 netease.php 的代码会发现它内部其实是两个动作先调平台的搜索接口拿到歌曲的唯一编号id再用这个编号去换取真实播放地址。$song_url http://music.163.com/song/media/outer/url?id.$song_info[id]; $song_url get_redirect_url($song_url); // 跟随重定向拿到真实音频地址上面两行就是整个解析过程的核心。网易云提供了一条转跳链接跟随它就能落到真实的音频文件代码里这个get_redirect_url干的就是这件事。至于四个文件你可以把它们理解成四个翻译官每个翻译官只精通一个平台的方言。酷我音乐的接口需要固定的Secret请求头和 cookiekuwo.php 就把这些细节藏在了文件开头QQ音乐的搜索接口要构造一段复杂的 JSON 参数qq.php 帮你拼好了酷狗和酷我还能解析 MV无非是换一个搜索接口、再走一遍同样的两步接力。所以对你来说调用方永远是简单的传msg告诉它要哪一条n它返回song_url或mv_url。复杂的那部分被翻译官消化在了内部。什么时候不该用它先说清边界坦诚地讲这个项目并不适合所有场景。下面几种情况我建议你谨慎使用1. 你的业务需要稳定的服务承诺。四个文件调用的是平台公开接口平台侧一调整解析就可能失效。它适合能接受偶尔维护的项目不适合当作签了 SLA 的核心依赖。2. 你需要音质选择、歌词、会员试听。这个项目只返回一个播放地址不区分标准/高品/无损也没有歌词。如果你的产品围绕这些能力展开需要另做方案。3. 你想拿它做下载站或规避版权。这不合适。项目本身的定位是方便开发者快速获得播放地址付费歌曲也拿不到请尊重平台规则。4. 完全没有 PHP 环境也不想接触 PHP。虽然可以直接浏览器访问但部署和改造都离不开 PHP 基础。把这几条想清楚再决定要不要用反而能让你用得更安心。完整走查一个点歌页面的两个真实功能回到小林的需求。他的点歌页面需要两个功能一个网易云热歌榜随机推荐一个酷狗 MV 点播。我们跟着他完整走一遍。功能一把热歌榜变成随机推荐网易云接口里内置了一个random类型配合歌单 ID 使用。热歌榜的歌单 ID 是3778678http://127.0.0.1:8080/netease.php?typerandomid3778678如果id留空它会默认解析热歌榜。返回结果里带着歌单名、随机选中的歌曲 ID 和播放地址{ code: 200, text: 解析成功, type: 歌单随机歌曲, data: { album_name: 热歌榜, song_id: 509136987, song_url: http://m701.music.126.net/xxx.mp3 } }这个接口相当于帮你完成了取歌单 → 随机抽一首 → 拿到地址三步前端每次刷新页面都能换一首。功能二酷狗 MV 点播酷狗接口里MV 解析是独立的一种类型先搜索 MV 列表http://127.0.0.1:8080/kugou.php?typemvmsg周杰伦确认目标在列表里的序号比如n0http://127.0.0.1:8080/kugou.php?typemvmsg周杰伦n0返回的data里包含mv_url、封面图、时长、文件大小甚至播放量和点赞数。酷狗MV地址解析这一步对前端来说依然是取一个字段而已。两处需要你自己补的细节接口文件里已经带了Access-Control-Allow-Origin: *浏览器直接跨域调用可行但生产环境建议由你的服务端转发一层便于统一加缓存和限流播放地址可能过期比较稳妥的做法是服务端存一份缓存失效后再重新解析。新手最常问的五个问题Q1需要装什么环境A只需要 PHP 和 curl 扩展没有第三方依赖。本地用php -S就能跑部署到支持 PHP 的服务器目录即可。Q2拿到播放地址后能一直用吗A不一定。地址可能过一段时间就失效建议服务端缓存失效时重新解析。Q3付费歌曲能解析吗A部分不行。代码里已经做了判断QQ音乐会标注[付费歌曲]酷狗和酷我会返回付费歌曲暂时无法获取歌曲下载链接。Q4网易云的歌单解析接口支持任意歌单吗A支持把任意歌单 ID 传给id参数即可代码注释里还列了几个官方榜单的 ID 方便测试。Q5哪天接口突然失效了怎么办A平台接口变动是常态。先看返回内容判断是哪一步断了再对照平台最新的公开接口更新对应文件里的请求地址和参数即可。收尾一份可以勾选的行动清单如果你决定试一试下面这几步可以在一个下午内完成克隆仓库用php -S在本地跑起来用netease.php?msg歌名完成第一次搜索观察返回结构加上n0拿到第一条结果的真实播放地址并确认能播放换到第二个平台对比两个文件的参数差异把某个真实场景比如热歌榜随机推荐接进你的项目小林最后只花了一个下午就把四个平台的接入点都跑通了。这个项目本身很小但它把和四个平台打交道这件事压缩成了四个可以随时替换的文件。工具在角落里放着等你需要的时候它就在那里。【免费下载链接】music-apiMusic API项目地址: https://gitcode.com/gh_mirrors/mu/music-api创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表