打破闭源限制 即时获取音乐媒体源
已被官方光速修复
前言
在我开发工作中一直有调用音乐平台 API 获取音乐的需求,但是
网易云
和QQ 音乐
的 API 现在只对企业开放申请,个人开发者已经无法使用,之前 Github 上 30k star 的项目 NCMApi 也已被网易起诉停止维护,令人唏嘘;找遍全网也没有什么好办法了,好在经过一些摸索,我也算歪打正着通过字节旗下的汽水音乐实现了获取音乐的功能。
NCMApi 停止维护

当前音乐获取的实现

我已将基于 demo 代码推送至 GitHub 仓库。不出意外很快会推出 Java 版本实现,并将持续优化封装程度,若该方法对你有所帮助,希望可以 star 支持,谢谢!
免责申明
: 本项目仅供学习参考,切勿用于商业用途,如产生任何纠纷与作者无关。
实现方法
讲一下我是怎么误打误撞实现的。 💦💦
首先,主流的音乐平台,如网易云音乐、QQ 音乐,都已经不再向个人开发者提供 API 服务,这意味着你无法通过调用这些平台的 API 获取音乐文件。查找了很多第三方 API 平台的接口,也都无法正常使用 (如果你知道还有什么适用的方案,欢迎留言)。
但是在一个无人问津接近废弃的 API 平台上,可以通过 音乐名字
查找到汽水平台下这个音乐的 ID
封面
以及其他基础信息。
只是 RequestBody
中的 n
和 track_id
字段已经不再适用了,返回体也不再会返回歌曲的播放链接。不过好消息是依旧可以通过这个API 获取到歌曲的 track_id
信息。
之前做过网易云音乐的类似的工作,也就是我博客中音乐页面的播放实现,通常来讲只要拿到歌曲的 ID
再到音乐平台网页上按照网址规定的格式拼接就可以进入音乐的播放页面。但是汽水音乐的 Web 网页已经不再维护了(可能就从来没有过),如今搜索汽水音乐的网址 只会跳转到其应用下载页面。拿到 id 打不开歌曲的播放页面也没用,这时候我就破罐子破摔地蒙了一下它的请求方法 www.xxxx/track?track_id= ,结果还真蒙中了,顺利来到下面这个页面

F12
打开浏览器开发者工具,选中 Network
中的媒体,刷新页面,确实是有一个媒体被加载,而调用程序就是页面本身。
所以我只需要,把这个页面的文件下载下来,在 IDE 中 Ctrl + F 搜索 luna.douyinvod.com
这个关键字段 ,确实存在这个媒体的加载地址,只需要在本地发送网络请求下载就好了。
一切可行,剩下就是 VibeCoding 了 💦。