三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

网易云音乐自动打卡全流程指南:从零搭建每日300首听歌签到脚本

网易云音乐自动打卡全流程指南:从零搭建每日300首听歌签到脚本

网易云音乐自动打卡全流程指南:从零搭建每日300首听歌签到脚本

【免费下载链接】neteasy_music_sign网易云自动听歌打卡签到300首升级,直冲LV10项目地址: https://gitcode.com/gh_mirrors/ne/neteasy_music_sign

有天晚上,我发现自己的网易云音乐等级卡在 LV7 已经快三个月了。累计播放量停在 4000 多首,而升级到 LV8 需要 8000 首。每天手动播放,最多也就听二三十首,照这个速度还得大半年。后来同事推荐了一个叫neteasy_music_sign的开源脚本,我才意识到:网易云音乐自动打卡这件事,完全可以用程序每天帮我完成 300 首,剩下的时间交给它自己跑就好。

这篇文章会带你从零开始,把"网易云音乐自动打卡"这套方案完整搭起来,包括环境准备、首次运行、多账号配置、结果推送,以及常见报错的排查方法。全文都是实际操作过的流程,跟着做即可。

这个项目做了什么:一个 Python 写成的每日打卡脚本

neteasy_music_sign是一个基于 Python 的自动化脚本,核心功能就一句话:每天自动模拟播放歌单里的歌曲并完成打卡,把网易云音乐的听歌量上限(每天 300 首)跑满,从而持续累积等级经验,最终冲击 LV10(累计 20000 首)

它的工作流程大致是这样:

  1. 用你的账号密码登录网易云音乐;
  2. 执行每日签到(daily_signin);
  3. 从你指定的歌单中按顺序取出歌曲 ID;
  4. 逐首模拟播放打卡(scrobble),每首之间随机休眠 60~90 秒;
  5. 每完成一次打卡就查询一次用户详情,统计今日已打卡数量;
  6. 全部完成后,通过推送渠道把结果发给你。

项目里几个关键文件的作用先交代清楚:

文件作用
main.py主程序,本地或服务器运行的入口
index.py云函数版本,适合腾讯云等 Serverless 环境
init.config单账号配置文件,账号、歌单、API、推送都在这
account.json多账号开关打开后,从这里读取账号列表
requirements.txt依赖清单,目前核心只有requests
run.log运行日志,排查问题先看它

这套方案适合谁?如果你有网易云账号想提升等级,又不愿意每天手动放歌,而且能接受"部署一个 API + 跑一个 Python 脚本"这种轻度折腾,那它就是为你准备的。

动手前准备:环境、依赖与前置条件

开始之前,先把这几样东西准备好,后面会省很多事。

1. Python 运行环境

推荐 Python 3.6 及以上版本。可以用下面的命令确认:

python --version

如果没装,去 Python 官网下载安装即可。Windows 用户安装时记得勾选"Add Python to PATH"。

2. 一个可用的网易云音乐 API 服务

这是最容易忽略的一步。脚本本身不直接对接网易云官方接口,而是通过一个 API 中间层完成登录、签到、打卡等操作,所以必须先部署好 API 服务,再把地址填进配置。部署方式可以参考项目里的docs/api/README.md,新手建议用现成的托管平台,或者按compose/docker-compose.yml里的方案用 Docker 起一个,后面进阶玩法里会讲。

3. 一个歌曲数量大于 300 的歌单

网易云 API 规定每天打卡上限是 300 首,所以歌单里至少要 300 首以上才能跑满。歌单 ID 的获取方法很简单:

  • 打开网易云音乐,随便找一个超过 300 首歌的歌单;
  • 点分享,复制链接;
  • 链接里id=后面那一串数字就是歌单 ID。

建议优先用"我喜欢的音乐"这类长期有效的歌单,避免收藏夹被删导致打卡中断。

4. 推送服务的密钥(可选)

如果不想每天盯着终端,可以申请 WxPusher、Server酱或 Bark 的密钥,后面"进阶玩法"部分会逐个说明。暂时不配也不影响核心功能。

快速上手:先让脚本跑起来

这里的目标只有一个:让脚本在你机器上跑起来,看到打卡日志。其他花哨功能后面再说。

第一步,克隆项目代码

打开终端,执行:

git clone https://gitcode.com/gh_mirrors/ne/neteasy_music_sign cd neteasy_music_sign

第二步,安装依赖

pip install -r requirements.txt

依赖就一个requests,一般几十秒就能装完。如果运行时报缺少别的模块,把它加进requirements.txt再装一次即可。

第三步,填写配置文件

用编辑器打开init.config(在项目根目录),重点填这几项:

[token] account = 你的手机号或邮箱 password = 你的密码(明文即可,不要自行加密) countrycode = 86 al_id = 你的歌单ID [setting] api = http://localhost:3000/ md5Switch = false peopleSwitch = false

几个注意事项:

  • password直接填明文,不要先自己转 MD5,否则会二次加密导致登录失败;
  • md5Switch保持false不要动;
  • countrycode国内账号填86,国外手机号按实际区号填;
  • api换成你自己部署好的 API 地址。

下图是配置文件的界面,对照着填就行:

第四步,启动程序

python main.py

启动后 10 秒左右程序会开始执行任务,你会陆续看到这样的输出:

2022.05.16-13:35:04 登录成功 2022.05.16-13:35:05 签到成功 2022.05.16-13:35:06 获取用户详情成功 2022.05.16-13:36:00 第41次打卡成功 2022.05.16-13:36:01 今日已打卡46首

看到"获取用户详情成功"就说明登录和 API 都通了,脚本开始进入打卡循环。运行效果参考下图:

关于运行时间要提前有心理准备:每首歌曲之间会随机休眠 60~90 秒,打卡 300 首大约需要 5~6 个小时。第一次跑建议开着终端观察 10 分钟,确认日志正常后就可以放着不管了。程序跑完当天任务后会休眠 24 小时,第二天自动开始新一轮,main.py里的主循环已经写好了这个逻辑。

第五步,看日志确认结果

程序运行的所有过程都会写入项目根目录的run.log,之后想确认某天是否打卡成功,直接看这个文件即可。

进阶玩法:按需定制你的打卡方案

核心功能跑通之后,下面这些配置可以让它更符合你的实际使用习惯。

多账号管理:一次配置,批量打卡

如果你有多个账号,把init.config里的peopleSwitch改成true,程序就会忽略配置文件里的账号,转而去读account.json

[ { "countrycode": 86, "account": "你的账号", "password": "密码的MD5值", "al_id": 歌单ID, "pushmethod": "", "sckey": "", "appToken": "", "wxpusheruid": "", "barkServer": "https://api.day.app", "barkKey": "" } ]

这里有两个安全相关的点要特别注意:

  • account.json里的密码必须是 MD5 加密后的 32 位小写字符串,跟init.config里的明文规则不一样,别搞混;
  • 多账号场景下程序会把配置读进内存再统一走 API,所以请确保你用的是自己部署的 API,不要把账号信息交给来路不明的第三方服务。

MD5 只是一种摘要算法而非加密,作用是防止明文密码在传输和存储环节直接暴露。更稳妥的做法是把account.jsoninit.config放在私有仓库或本地目录里,不要提交到公开代码库。

推送通知:打卡结果实时送达

init.configpushmethod字段支持三种推送渠道,也可以留空(留空时如果填了sckey会走 Server酱免费版,否则不推送):

推送渠道pushmethod取值需要填写的字段适用场景
WxPusherwxpusherappTokenwxpusheruid微信接收通知
Server酱 TurboSCTurbosckey免费额度较多,支持 Markdown
Server酱 免费版留空sckey基础通知
BarkbarkbarkServerbarkKeyiOS 设备

推送内容会包含账号昵称、当前等级、累计播放数、今日打卡数,以及还差多少天升满级。程序内部用diyText()自动组装这份报告,不用你手动改代码。

让打卡更稳定:歌单与时间的选择

几个让打卡不易中断的小经验:

  • 优先选"我喜欢的音乐"歌单,前提是它超过 300 首;
  • 避免选择会定期清空的临时歌单;
  • 多人共用一个公共 API 时容易在高峰时段被挤挂,建议自己部署 API,访问速度和稳定性都会好很多;
  • 打卡完成后的播放量不会立刻更新,网易云官方计数通常要等半小时以上,别因为"数字没涨"就重复跑任务。

更省心的运行方式:Docker 一键部署

如果不想在本地常驻终端,项目提供了 Docker 方案。compose/docker-compose.yml里已经编排好了两个服务:一个网易云 API 容器,一个打卡脚本容器,并且做了依赖顺序,API 起来后打卡脚本才会启动。

docker compose up -d

注意先把./init.config挂载目录下的配置填好,容器启动时会直接读取。宿主机上改配置后重启容器即可生效,日志通过docker logs service-musicsign查看。

另外项目根目录的Dockerfile也给出了单容器方案,适合不需要 API 容器、直接复用已有 API 地址的情况。

服务器常驻:7×24 小时无人值守

如果你有一台云服务器,可以把脚本部署上去长期运行,这样本地电脑关机也不影响打卡。部署步骤参考docs/python/server.md:安装 Python 环境 → 上传项目 → 配置账号 → 用python main.py启动,然后通过run.log观察状态。服务器方案配合systemd或宝塔面板的进程守护,能做到异常自动重启。

实战踩坑:常见报错与排查思路

运行过程中难免遇到问题,这里把高频报错和排查思路整理成一张速查表,遇到先对照排查:

现象 / 报错排查思路
一直提示"请检查账号密码"先确认 API 地址填对了没有;再确认账号密码无误;最后检查md5Switch是否为false,以及密码是否为明文
日志出现"所选歌单数量小于300"换一个歌曲数超过 300 的歌单,重新获取al_id
打卡完成后累计播放量没涨官方计数有延迟,等半小时以上再看;且只有从未听过的歌曲才计入总数
多账号模式报错检查account.json的 JSON 格式,账号之间要有逗号,字段名别拼错
云函数部署报module 'index' has no attribute 'main_handler'腾讯云等平台部署时没改执行方法,入口函数要指定为index.main
部署时找不到index.py下载的代码不完整,重新拉取最新版本
API 首页能打开但检查没反应API 必须用 PHP 部署,纯静态部署是不生效的

关于第一条再展开说两句。"检查账号密码"这个报错 90% 的原因其实是 API 挂了或地址填错,而不是账号真有错。很多人挤同一个公共 API,高峰期很容易被挤爆,所以自己搭一个 API 是最一劳永逸的解法。

如果上面的表都排查完还没解决,就去项目文档的docs/question/README.md看看,或者在社区里带着报错日志提问,一般都能快速定位。

总结与延伸:接下来你可以做什么

回顾一下今天完成的事:你了解了neteasy_music_sign的原理,把 API、歌单、账号配置到了init.config,用python main.py让脚本跑通了每日 300 首的网易云音乐自动打卡,还知道了多账号和推送通知怎么配。

接下来可以按需继续做这几件事:

  • 给脚本一个长期运行的家:本地跑会有断电、关机的风险,把项目迁到云服务器或 Docker 环境,打卡才能做到真正的无人值守;
  • 配置推送通知:选一个你顺手的渠道,让每天的结果自动发到手机;
  • 试试多账号:如果有多余的账号,按account.json的格式加进去,一个脚本管全部;
  • 阅读项目文档docs/目录下还有 API 部署、云函数、展示效果等多份文档,想深入的话值得通读一遍。

最后再提醒一次:配置文件里存的是你的真实账号密码,务必把init.configaccount.json放进私有仓库,定期更换密码,也不要把它们分享给任何人。现在,去把歌单 ID 找出来,让脚本替你完成今天这 300 首吧。

【免费下载链接】neteasy_music_sign网易云自动听歌打卡签到300首升级,直冲LV10项目地址: https://gitcode.com/gh_mirrors/ne/neteasy_music_sign

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

← 返回列表