QQ音乐解析完整教程:用 MCQTSS_QQMusic 从零搭建私人曲库
2026/8/20 12:04:17 网站建设 项目流程

QQ音乐解析完整教程:用 MCQTSS_QQMusic 从零搭建私人曲库

【免费下载链接】MCQTSS_QQMusicQQ音乐解析项目地址: https://gitcode.com/gh_mirrors/mc/MCQTSS_QQMusic

你有没有过这种时刻:在音乐 App 里收藏了几百首歌,可一旦歌曲下架、版权到期或者临时断网,它们就集体"消失"了——在线歌单其实从来不真正属于你。MCQTSS_QQMusic 正是为这个问题而生的开源 Python 工具,它把 QQ 音乐解析这件事做成了一条完整的流水线:搜索、下载地址、歌词、歌单、MV、榜单,十几个现成函数全部封装在同一个类里。这篇文章不讲高深理论,只带你从零动手,把想听的歌真正搬进自己的硬盘。

动手之前,先看懂这件"乐器":它到底解析了什么

很多人一听"解析"就觉得神秘,其实原理朴素得很:网页版 QQ 音乐的一切操作,本质上都是浏览器向服务器发送一串 JSON 格式的请求。MCQTSS_QQMusic 做的事情只有两件——把网页请求原样"翻译"成 Python 代码,再为请求配上动态签名和 Cookie,让它看起来就像一次普通用户发起的正常访问。

项目的核心入口是一个万能数据接口u.y.qq.com/cgi-bin/musicu.fcg,几乎所有功能都往这个地址发数据;而Main.py里那套get_sign算法,则负责对请求参数做 MD5 加变换处理,生成形如zzb开头的动态签名,用来模拟真实客户端。

上图是作者在文档里留下的抓包示意:左边是 QQ 音乐网页,右边红框里就是需要捕获的 data 数据,格式是 JSON。掌握了这套方法,你不仅能跑通这个工具,以后想"解剖"其他网页接口,思路也是完全一样的。另外提一句:接口主要处理搜索、播放地址、MV、歌单这类数据,而推荐歌单、个性电台则是直接抓取网页 HTML、再用正则把内嵌 JSON 抠出来,两种路子互为补充。

开工准备清单:Python、依赖、还有一张"门票"

上手门槛很低,准备三样东西就够:

项目说明
Python3.9 及以上版本即可
requests 库唯一的核心依赖,装一次永逸
pyexecjs只有使用新版搜索接口时才需要,用来运行 JavaScript

第三条依赖专门给search_music_new/目录用——那里放着一个较新的搜索方案,包含一个getsearchid.js文件用于生成 searchid。如果你只用旧接口,pyexecjs 完全可以不装。

比依赖更关键的是那张"门票":Cookie。原因很简单,服务器要确认"你是谁"。用浏览器登录 QQ 音乐官网后按 F12 打开开发者工具,切到网络面板,刷新页面,随便点开一个请求,在请求标头里找到 Cookie 字段复制出来,交给代码里的set_cookie方法即可。

这套操作并不复杂,但有两个要点提前记住:一是 Cookie 有有效期,过段时间要重新复制;二是只有绿钻账号的 Cookie 才能解析绿钻歌曲,这是权限决定的,不是代码 bug。

主线任务:搜到歌、拿到地址、存进硬盘

万事俱备,现在开始走最核心的一条链路。整个过程写在一份现成的示例文件demo.py里,你只要把 Cookie 填进去、把歌名改一改,运行就能看到全流程。

第一步是搜索。调用search_music('歌名', 数量),工具会返回一长串结果,每首歌都带着songmidsongid、专辑名、歌手等一堆"身份信息"。你可以把songmid理解成这首歌的身份证号——它是接下来换取下载地址的钥匙。

第二步是换地址。把搜到的songmid交给get_music_url,函数会向 CDN 分发服务器发起请求,返回一条形如dl.stream.qqmusic.qq.com/...的真实播放地址。整个交换过程几秒钟完成。至于音质档位,接口会按账号权限分发:普通账号通常拿到的是 128kbps 或 320kbps 版本,高权限账号有机会换到更高规格的资源,具体以返回结果为准,不必强求。

第三步是顺手把"周边"也带走。get_lyrics能拿到带时间轴的 LRC 歌词,get_album_info能返回专辑名、发行时间、发行公司、语言、类型甚至专辑介绍,get_music_info则能通过音乐 ID 补齐 MID、曲名等资料。也就是说,搜到一首歌之后,音频、歌词、专辑信息可以一次拿全。

三个高频场景:整张歌单、MV 现场、热歌榜单

单曲下载只是热身,真正省时间的是下面三个场景。

场景一:一整张歌单,怎么一次性拿下。逐首搜索再逐首下载,几十首歌能磨掉一个下午。demo_1.py提供了现成思路:先用get_playlist_info拿到歌单标题、作者、标签、播放量和收藏量,同时带回前 10 首歌曲;随后用一个循环调用get_playlist_info_num,按每批 15 首的方式"翻页"取完剩余部分,直到整张歌单清点完毕。注意,单次最多只能取十几首是接口限制,不是工具偷懒。

场景二:想存 MV,怎么拿高清视频。打开demo_mv.py,输入一个 vid(MV 的标识符),工具会同时返回视频信息(歌名、歌手)和下载地址。同一支 MV 会给出多个清晰度档位,filetype数值越高代表画质越高,按需挑一条freeflow_url下载即可,元信息还会自动带出,方便归档。

场景三:追新歌,怎么不漏掉正在飙升的热门曲目。demo_toplist.py一键抓取 QQ 音乐流行指数榜,返回里包含排名、歌名、歌手和"上升百分比"这类趋势数据。最妙的是榜单条目直接带上了songId和 mid,也就是说看完榜单 → 选中想听的 → 立刻接回下载流程,一条龙完成。

如果你还想要完整的播放体验,项目作者配套了一个名为 MCQTSS Music 的桌面播放器,下面这张图就是它的界面——专辑封面、歌词同步、进度控制一应俱全,解析出来的资源可以直接接入这类播放器,让"下载"和"聆听"无缝衔接。

高频问题速查:四个"为什么"一次说清

把使用中最容易卡住的四个问题整理成问答,遇到直接对号入座。

为什么一请求就返回 403?大概率是 Cookie 过期了。重新去网页端复制一份新的填进代码即可,这是最常见的翻车点。

为什么返回 500001 错误码?代表提交的数据有问题或 Cookie 失效。先检查 Cookie 是否新鲜,再核对填写的 MID、ID 是否抄错,比如是否混进了空格或多余字符。

为什么绿钻歌曲解析失败?工具解析的是接口权限内的资源,只有绿钻账号的 Cookie 才能解析绿钻歌曲,这是服务端权限决定的,与代码无关。

为什么搜索突然全部失效?平台偶尔会调整接口,项目里的旧手机端搜索接口就曾被和谐过。作者因此新增了search_music_new/目录作为替代方案。遇到这类情况,先去项目仓库看看有没有更新版本,别急着怀疑代码写错了。

进阶玩法:把散装音频变成一座本地音乐库

走到这一步,你手里已经有了音频、歌词、专辑信息的"原料",接下来就看怎么加工。

第一个思路是让歌词落盘。get_lyrics返回的其实是带时间轴的 LRC 文本,直接存成与音频同名的.lrc文件,绝大多数播放器会自动识别并同步显示。

第二个思路是统一格式。下载下来的文件可能是 m4a、flac 或 mp3,混在一起不好管理。基于 Python 生态,天然可以配合 ffmpeg 做批量转码:想入库的无损转 FLAC,想随身听的小体积压成 MP3,一条命令处理整批文件。

第三个思路是自动归档。接口返回的都是结构化 JSON,歌曲名、歌手、专辑、歌词互相独立又彼此关联,你可以随手写个小脚本,按"歌手/专辑"自动建目录、统一重命名,彻底告别混乱的下载文件夹。

写在最后

回到开头的问题:为什么费劲把歌存进本地?因为本地文件不会因为版权到期而消失,不会因为断网而卡顿,也不会因为平台改版而"下架"。MCQTSS_QQMusic 的价值,就是把"获取资源"这件麻烦事压缩成几行 Python 代码,让单曲、歌单、MV、榜单一站式解决,搜索、解析、播放、元数据整理全链路打通。

需要说明的是,项目源码托管在 gitcode,可通过git clone https://gitcode.com/gh_mirrors/mc/MCQTSS_QQMusic获取,按 Readme 指引安装依赖即可运行。最后也是最重要的一点:工具免费,版权不免费。本项目仅供个人学习、研究和技术交流使用,请务必尊重原创作者与版权方的合法权益,不要将解析内容用于商业用途或二次传播。愿每一位音乐爱好者都能在规则之内,享受技术带来的便利与乐趣。

【免费下载链接】MCQTSS_QQMusicQQ音乐解析项目地址: https://gitcode.com/gh_mirrors/mc/MCQTSS_QQMusic

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询