- 签到领云贝
- 自动完成云贝任务,并领取云贝
- 打卡升级
- 刷指定歌曲的播放量
- 音乐人自动签到领取云豆
- 音乐人自动完成任务,并领取云豆
- 自动领取 vip 成长值
- 多种推送方式
- 支持多账号
- 支持腾讯云函数 & 青龙面板 & 本地运行 & docker 部署
开发不易,如果你觉得本项目对你有用,可以点个 star,也可以到底部给个赞赏
- 默认会在网易云音乐中关注作者,如果不想关注,可以在配置文件里修改
- 提 issue 之前看看是否有重复的 issue。
- 不要直接在 GitHub 上修改配置文件。已经修改了的,尽快覆盖,并修改密码。
- 转载请注明出处,并保留原作者信息。
- 禁止将代码用于商业用途,包括打包售卖,收费代挂等。
- 为了账号安全考虑,请勿将账号密码交给他人代挂。
首次使用云函数,依次登录 SCF 云函数控制台 和 SLS 控制台 开通相关服务,确保账户下已开通服务并创建相应服务角色 SCF_QcsRole、SLS_QcsRole
注意!为了确保权限足够,获取这两个参数时不要使用子账户!此外,腾讯云账户需要实名认证。
在腾讯云API 密钥管理新建密钥,获取 SecretId 和 SecretKey
在 GitHub 上 fork 本项目
fork 之后,点击右上方 settings
在页面点击 Secrets
,点击 Actions
,然后点击 New repository secret
创建新的 secret。
Name | Value | 是否必填 |
---|---|---|
SECRET_ID | 填写之前获取的 SecretId | 必填 |
SECRET_KEY | 填写之前获取的 SecretKey | 必填 |
CRON | 定时触发器的时间 | 选填 |
FUNCTION_NAME | 自定义函数名 | 选填 |
REGION | 地域,默认为 ap-guangzhou | 选填 |
先填写先前获取的 SECRET_ID
同理,填写先前获取的 SECRET_KEY
CRON 默认为 0 35 8 * * * *
表示每天 8 点 35 分触发。如需更改,则如下图所示创建此 secret,。比如:0 20 12 * * * *
表示每天 12 点 20 分触发,0 0 12,16 * * * *
表示每天 12 点和 16 点各触发一次。
FUNCTION_NAME 为函数名,不填写默认为 NeteaseCloudMusicTasks
。如需更改,则创建此 secret,并填写自定义的函数名,命名规则:只能包含字母、数字、下划线、连字符,以字母开头,以数字或字母结尾,2~60 个字符。
REGION 默认为 ap-guangzhou
,可选的地域详见地域列表。
添加完毕可以看到
击项目上方的 Actions
点击 All workflows
下方的 deploy
(移动端要先点击 Select workflow
),再点击右侧 Run workflow
,在弹出的页面再次点击 Run workflow
,将会运行新的 workflow
运行后如果不显示,刷新一下页面即可看到正在运行的 workflow。
等到标志变成 ✅,表示已经部署成功。
如果发现标志变成 ❌,则表示部署失败。
可以点进这个 workflow 查看失败原因。
下载依赖文件 ,也可以自己用 pip 下载依赖,然后打包。然后在高级能力新建层
层名称
可以自己任意填写,然后上传刚刚下载的压缩包,点击添加运行环境
,选择 Python3.6
。
在函数服务点进刚刚创建的函数
点击上方的层管理
,点击绑定
选择刚刚创建的层。
在函数服务点进刚刚创建的函数
如果在函数服务里找不到刚刚部署的函数,先到 GitHub Actions 中确认是否部署成功。如果部署成功,则确认页面左上角的地域选择是否正确,默认地域应为广州。如果在 Secrets 中设置了 REGION,则根据自己设置的 REGION 选择相应的地域。
在编辑器里点击 config.json
这个文件进行配置
可以看到文件中有红色波浪线的错误提示,可以忽略不管,也可以下拉到编辑器的右下角,点击 JSON
来更改语言模式,选择 JSON with Comments
,这样就可以消除错误提示。
在 config.json
里进行如下的账号配置。运行之后如果发现有些任务没有完成,可能是因为没有开启,将任务对应的 enable
字段设置为 true
即可开启。
"users": [
{
"username": "188xxxx8888",
"countrycode": "",
"password": "mypassword",
"cookie": "MUSIC_U=xxxxxxxxx;",
"X-Real-IP": "",
"enable": true
}
],
// ...
username
里填写手机号或邮箱,password
里填写账号密码或 32 位 md5 加密后的密码,countrycode
为手机号前缀,使用非中国大陆的手机号登录需填写。X-Real-IP
里填写国内 IP,否则可能会有无法登录等情况出现,可填写本机 IP,点击可查看本机 IP,填写显示的 ip 即可。enable
为该账号的开关,设置为 false
表示不运行该账号的任务。
如果同时填写了账号密码和 cookie
, 会优先使用 cookie 登录,如果 cookie 填写有误或失效,会尝试使用账号密码登录。
cookie 获取方式:首先在网页登录网易云音乐,然后按 F12 打开开发人员工具,再按 F5 刷新页面,最后按照以下步骤来获取 cookie,可以只复制 MUSIC_U
的那部分
"setting": {
// ...
"sign": true,
// ...
}
签到默认开启,连续签到可以获得更多云贝。
"setting": {
// ...
"daka": {
"enable": true,
"full_stop": true,
"auto": true,
"tolerance": 10,
"song_number": 300,
// ...
},
// ...
}
每个账号每天最多只计算 300 首的听歌量,而且必须是没有听过的歌曲。enable
表示开启刷听歌量的任务,full_stop
表示满级后自动停止任务,无需手动将 enable
设为 false
。song_number
表示每次要刷的歌曲数量,账号等级较低的时候可以设置得小一点,不然等级高的时候就难刷了,可能较难刷满 300 首。
auto
设置为 true
的话表示开启自动模式,程序将自动调整每次打卡的歌曲数,song_number
参数将失效。此时,每天 0 点时定时触发器会自动运行代码,获取当前的听歌数,并写入环境变量中,这样的话就可以比较精确地计算每次打卡的歌曲数。tolerance
表示对打卡误差的容忍度,在自动打卡模式下有效,如果设置为 0 表示必须要达到 300 首才停止打卡,10 表示达到 290 首就可以停止打卡。
"setting": {
// ...
"yunbei_task": {
"162005": {
"taskName": "发布动态",
"module": "publishEvent",
"enable": false,
// 需要分享的歌单id
"id": [],
"msg": ["每日分享","今日分享","分享歌单"],
"delete": true
},
"216002": {
"taskName": "访问云音乐商城",
"module": "visitMall",
"enable": true
},
"200002": {
"taskName": "云贝推歌",
"module": "rcmdSong",
"enable": false,
// 填写歌曲ID
"songId": [],
"yunbeiNum": 10,
"reason": []
},
"162006": {
"taskName": "发布Mlog",
"module": "publishMlog",
"enable": false,
// 填写歌曲ID
"songId": [],
/* 动态内容,随机选取一个,其中$artist会被替换为歌手名,$song会被替换为歌曲名 */
"text": [
"分享$artist的歌曲: $song",
"分享歌曲: $song"
],
/* 图片大小,越大则消耗的外网出流量越多 */
"size": 500,
/* 发布成功后是否自动删除该动态 */
"delete": true
},
"166000": {
"taskName": "分享歌曲/歌单",
"module": "share",
"enable": false
},
"656007": {
"taskName": "浏览会员中心",
"module": "visitVipCenter",
"enable": false
}
},
// ...
}
发布动态
任务要分享歌单,可获得 5 云贝,可通过将 enable
设为 true
开启,id
要填写需要分享的歌单 id,可不填写,随机送推荐歌单中选取。delete
表示动态发布之后自动删除。
访问云音乐商城
任务可获得 2 云贝。
云贝推歌
任务使用云贝对喜欢的歌曲进行推荐,可获得 10 云贝。songId
填写喜欢的歌曲 id,如[65528, 64634]
,程序将会随机挑选一首歌,yunbeiNum
是要使用的云贝数量,一般为 10
,reason
填写推歌理由。
发布Mlog
根据填写的歌曲 ID,自动下载歌曲对应的专辑图片,并上传。songId
填写歌曲 id,如[65528, 64634]
,text
填写动态内容
分享歌曲/歌单
任务并不会真的分享,将 enable
设为 true
即可开启任务
浏览会员中心
将 enable
设为 true
即可开启任务
"setting": {
// ...
"musician_task": {
"749006": {
"taskName": "音乐人中心签到",
"module": "musicianSignin",
"enable": true
},
"740004": {
"taskName": "发布动态",
"module": "publishEvent",
"enable": false,
// 自定义要分享的歌单id,用逗号隔开,分享时随机选取一个,若为空,则从每日推荐歌单中随机选取
"id": [],
"msg": ["每日分享","今日分享","分享歌单"],
"delete": true
},
"755000": {
"taskName": "发布主创说",
"module": "publishComment",
"enable": false,
// 填写你自己歌曲的id,如有多首用,隔开,随机挑选一首
"id": [],
"msg": ["感谢大家收听"],
"delete": true
},
"732004": {
"taskName": "回复粉丝评论",
"module": "replyComment",
"enable": false,
// 填写你自己歌曲的id,如有多首用,隔开,随机挑选一首
"id": [],
"msg": ["感谢收听"],
"delete": true
},
"755001": {
"taskName": "回复粉丝私信",
"module": "sendPrivateMsg",
"enable": false,
// 填写粉丝的用户id,如有多个用,隔开,随机挑选一个进行回复,可以用自己的小号
"id": [],
"msg": ["你好"]
},
"739008": {
"taskName": "观看课程",
"module": "watchCollegeLesson",
"enable": false
},
"740005": {
"taskName": "访问自己的云圈",
"module": "visitMyCircle",
"enable": false,
/* 自己的云圈ID,可不填写,如果提示 resourceID 获取失败,则需要手动填写 */
/* 获取方式: 云圈右上角分享,链接中 circleId= 后得参数即为云圈 id */
"circleId": ""
},
"744005": {
"taskName": "发布mlog",
"module": "publishMlog",
"enable": false,
// 填写歌曲ID
"songId": [],
/* 动态内容,随机选取一个,其中$artist会被替换为歌手名,$song会被替换为歌曲名 */
"text": [
"分享$artist的歌曲: $song",
"分享歌曲: $song"
],
/* 图片大小,越大则消耗的外网出流量越多 */
"size": 500,
/* 发布成功后是否自动删除该动态 */
"delete": true
},
},
// ...
}
需要是音乐人才能执行,想要开启相应的任务,需要将 enable
由 false
改为 true
,登录音乐人中心
自动开启,其他任务根据实际情况开启。音乐人中心签到
即签到获取云豆;发布动态
即转发歌单;发布主创说
即在自己的歌曲评论区留言;回复粉丝评论
即在自己歌曲的评论区回复粉丝留言,该任务是通过回复自己的留言实现的;回复粉丝私信
需要填写粉丝 id,可用小号。
"setting": {
// ...
"vip_task": {
"816": {
"taskName": "创建共享歌单",
"module": "createSharedPlaylist",
"enable": false,
/* 自定义歌单名,用逗号隔开,随机选取一个 */
"name": [
"歌单",
"我的歌单"
],
/* 创建成功后是否自动删除该动态 */
"delete": true
}
},
// ...
}
创建共享歌单
任务默认关闭,需要开启的话将 enable
设为 true
,name
里填写自定义的歌单名,创建时随机选取一个,delete
表示歌单创建成功后时候自动删除。
支持多种推送方式,建议使用企业微信进行推送
要使用推送的话将相应的 enable
设为 true
,并填写配置
"WeCom": {
"module": "WeCom",
"enable": false,
"corpid": "",
"agentid": "",
"secret": "",
"userid": "@all",
"msgtype": "text",
/* 是否将多个账号的信息合并推送 */
"merge": false
}
corpid
为企业 ID,登录企业微信后在管理后台我的企业
-企业信息
下查看;agentid
为应用 ID,在应用管理
里,点进相应的应用可查看;secret
为应用密钥,在应用管理
里,点进相应的应用可查看;userid
默认为@all
,会向该企业应用的全部成员发送;msgtype
为消息类型,可填写文本消息 text
、文本卡片消息 textcard
或 markdown 消息 markdown
,markdown 消息不能在微信里查看,只能在企业微信里查看。
"serverChan": {
"module": "serverChan",
"enable": false,
"KEY": "",
/* 是否将多个账号的信息合并推送 */
"merge": true
}
要使用 server 酱的话需要在 KEY
里填写旧版的 SCKEY 或新版的 SendKey。
"CoolPush": {
"module": "CoolPush",
"enable": false,
/* 推送方式: send QQ号私人推送 | group QQ群推送 | wx 微信推送 | email 邮件推送 */
"method": "send",
"Skey": "",
/* 是否将多个账号的信息合并推送 */
"merge": true
}
要使用酷推的话需要填写 Skey
。
"pushPlus": {
"module": "pushPlus",
"enable": false,
"pushToken": "",
/* 消息模板: markdown | html | txt | json */
"template": "markdown",
/* 群组编码,为空时发给自己 */
"topic": "",
/* 是否将多个账号的信息合并推送 */
"merge": true
}
要使用酷推的话需要填写 pushToken
。
"Telegram": {
"module": "Telegram",
"enable": false,
/* 自定义域名,放空则默认为 https://api.telegram.org */
"server": "",
/* Telegram账号ID */
"userId": "",
/* TG机器人token */
"botToken": "",
/* 是否将多个账号的信息合并推送 */
"merge": true
}
要使用 Telegram 的话需要填写 userId
和 botToken
。
"Bark": {
"module": "Bark",
/* 是否启用Bark推送 */
"enable": false,
/* Bark的地址 */
"Bark_url": "",
/* Bark的API key */
"Bark_key": "",
/* 铃声 */
"sound": "",
/* 消息分组 */
"group": "",
/* 图标链接 */
"icon": "",
/* 是否将多个账号的信息合并推送, 建议为false,iOS推送消息过长可能会失败 */
"merge": false
}
要使用 Bark 的话需要填写 Bark_url
和 Bark_key
,sound
、group
和 icon
根据需要选填,如果不清楚如何填写就放空。可以使用 Bark 官方 API 或者自行搭建。
"pushdeer": {
"module": "pushdeer",
/* 是否启用推送 */
"enable": false,
/* 服务器地址,放空则使用官方服务器: https://api2.pushdeer.com */
"server": "",
/* pushkey */
"pushkey": "",
/* 是否将多个账号的信息合并推送 */
"merge": false
}
要使用 pushdeer 的话需要填写 pushkey
。如果使用自己搭建的服务器,请填写 server
。
"wxpusher": {
/* https://wxpusher.zjiecode.com */
"module": "wxpusher",
/* 是否启用推送 */
"enable": false,
/* 是否将多个账号的信息合并推送 */
"merge": false,
"APP_TOKEN": "",
"UID": ""
}
要使用 wxpusher 的话需要填写 APP_TOKEN
和UID
,点击wxpusher 登陆创建应用获取APP_TOKEN
,微信扫码后在用户列表获取UID
"setting": {
// ...
"other": {
/* 刷歌单中歌曲的播放次数,用来改变听歌风格,仅在需要时使用 */
"play_playlists": {
"enable": false,
/* 歌单id,用逗号隔开,如 [5279371062,5279377564] */
"playlist_ids": [],
/* 播放次数 */
"times": 1
}
},
// ...
}
将要刷的歌曲加到歌单中,把歌单 id 填写到 playlist_ids
中,可以添加多个歌单 id,用英文逗号隔开,如 "playlist_ids":[5279371062,5279377564]
。该功能可以用来改变听歌风格。
"users": [
{
"username": "188xxxx8888",
"countrycode": "",
"password": "mypassword",
"cookie": "",
"enable": true
},
{
"username": "166xxxx6666",
"countrycode": "",
"password": "anotherpassword",
"cookie": "MUSIC_U=xxxxxxxxx;",
"X-Real-IP": "",
"enable": true,
}
],
// ...
在 users
内填写多个账号,不同账号之间要用逗号 ,
隔开。
假如多个账号配置不同可以参照下面
"users": [
{
"username": "188xxxx8888",
"countrycode": "",
"password": "mypassword",
"cookie": "",
"X-Real-IP": "",
"enable": true
},
{
"username": "166xxxx6666",
"countrycode": "",
"password": "anotherpassword",
"cookie": "MUSIC_U=xxxxxxxxx;",
"X-Real-IP": "",
"enable": true,
"setting": {
"push": {
"serverChan": {
"KEY": "xxxxxxxxxx"
}
},
"yunbei_task": {
"200002": {
"songId": [25707139]
}
},
"musician_task": {
"755000": {
"id": [25707139]
}
},
"daka": {
"enable": false
}
}
}
],
// ...
如上所示,在第二个账号中加入了 setting
字段,并填写与公共配置不同的地方。上面配置的含义为,第二个账号使用了不同的 KEY 进行 server 酱的推送,使用不同的歌曲进行云贝推歌,使用不同的歌曲完成发布主创说任务,并且关闭了刷播放量的任务。具体的配置根据个人情况进行调整。
"setting": {
// ...
"follow": true
// ...
}
默认会在网易云音乐中关注作者,不想关注可将 true
改为 false
。已经关注了的可到网易云音乐 APP 里取消关注。
修改完代码后,按 ctrl+s 保存代码,然后点击编辑器右上角的部署
(每次修改完都要重新部署),左下角的部署
也行。部署完成后点击部署旁边的测试按钮,观察结果,如果失败则检查修改代码。
在 fork 后的 GitHub 项目页面点击 Fetch upstream
- Fetch and merge
此时,更新后的代码会自动部署到腾讯云函数中,可以到 Actions
中查看部署进度。更新后,配置文件自动同步,无需再次填写,但注释会被删除。如果需要修改配置文件,可以参考 config.example.json
文件中的注释,对 config.json
文件进行修改。进入到云函数中时,如果提醒“检测到当前工作区函数和已部署函数不一致,重新加载已部署函数?”,点击确认
即可。
如果修改了 Secrets,需要手动部署才会生效,详见部署。
docker exec -it qinglong bash
如果容器名称不是 qinglong
则需要修改。
ql repo https://github.com/chen310/NeteaseCloudMusicTasks.git "index.py" "" "py"
task chen310_NeteaseCloudMusicTasks/ql_update.py
安装 Linux 依赖
apk add --no-cache python3-dev gcc libc-dev
安装 Python 依赖
pip3 install requests json5 pycryptodomex
在脚本管理
中找到项目目录,对目录中的配置文件 config.json
进行修改,修改方式可以参考修改配置
如果需要更新代码则同样先进入容器
docker exec -it qinglong bash
然后更新代码
ql repo https://github.com/chen310/NeteaseCloudMusicTasks.git "index.py" "" "py"
再更新配置文件
task chen310_NeteaseCloudMusicTasks/ql_update.py
每次更新完代码后一定要更新配置文件,否则可能会出错
拉取代码
git clone https://github.com/chen310/NeteaseCloudMusicTasks.git
切换到项目目录
cd NeteaseCloudMusicTasks
然后安装依赖
pip install -r requirements.txt
首先将 config.example.json
文件复制为 config.json
文件
cp config.example.json config.json
然后对配置文件 config.json
进行修改,修改方式可以参考修改配置
python3 index.py
首先更新代码
git pull
然后更新配置文件
python3 updateconfig.py config.example.json config.json config.json
每次更新完代码后一定要更新配置文件,否则可能会出错
- 支持 ARM64/AMD64 docker 镜像
- 支持指定时间定时执行
- 未指定定时执行时间,每次重启随机设定执行时间
curl -fsSL -o config.json https://raw.githubusercontent.com/chen310/NeteaseCloudMusicTasks/main/config.example.json
docker run -itd --restart=on-failure \
-v $(pwd)/config.json:/root/config.json \
--name netease-cloud-music-tasks \
enwaiax/netease-cloud-music-tasks:latest
docker run -itd --restart=on-failure \
-v $(pwd)/config.json:/root/config.json \
-e "SCHEDULER_HOUR=8" -e "SCHEDULER_MINUTE=30" \
--name netease-cloud-music-tasks \
enwaiax/netease-cloud-music-tasks:latest
打卡功能可能会影响日推,介意慎用。
在云函数概览界面,可以查看本月剩余免费额度
详见计费概述
微信
支付宝
- 本仓库中的脚本仅用于测试和学习目的,请勿用于商业或非法目的,否则后果自负
- 转载请注明出处,并保留原作者信息。
- 如果您认为该项目的脚本可能涉嫌侵犯您的权利,请及时通知,我们将在确认后及时删除