type
status
date
summary
tags
category
icon
背景
经常刷到一些好听的音乐视频,里面包含挺多歌曲,虽然每一首歌在QQ音乐都有,但是往往无一个对应的QQ音乐的歌单,日常工作中,使用QQ居多,于是乎就想把视频里面的歌曲批量导入到歌单中。
想法一(不可行)
通过网页版QQ音乐的接口API,动态添加歌曲到对应的歌单中;因为添加歌单的接口会对请求参数做一个加密处理,还不是简单的md5这类的加密,要想了解具体逻辑,还得看被压缩过的源码,里面的难度还是挺大的,故放弃这种方式;
想法二(推荐)
竟然通过API调用不可行,那就只能模拟页面操作,和 E2E 测试差不多的原理。基于puppeteer写一些用例,然后动态添加歌曲到具体的歌单中。
当然还需要处理:
- 登录信息注入;
- 搜索歌曲 ⇒ 进入歌曲详情页
- 编写用例 ⇒ 收藏歌曲
实现
Cookie获取
先登录网页版本的QQ音乐 https://y.qq.com/,
打开chrome的控制台,从接口中复制cookie信息,或者从 application / storage / cookies 复制cookie;
以从 application / storage / cookies 中复制例子,复制表格的内容到 console 中,然后格式化一下:
简化一下cookie内容,可以使用 copy 复制到剪切板,然后粘贴到一个js文件中:
通过歌名搜索歌曲
通过歌名搜索歌曲可以通过QQ音乐的API实现,复制如下方法即可:
默认获取搜索结果中的第一首歌,如果知道歌曲的歌手,可以通过歌手筛选一下;
收藏歌曲
通过歌名搜索歌曲后,就可以直接使用 puppeteer 打开歌曲的详情页了,然后编写一些用例收藏歌曲到具体的歌单了。
完整版本代码:
将上述脚本保存到本地,先按照puppeteer就可以执行js文件,批量新增歌曲到某一个歌单了
执行的效果示例为: