通过Github Actions挂载Nodejs脚本
此脚本将在B站专栏草稿中储存转发过的动态id以防止重复转发
动态id已储存在本地和GitHub构件中
★ Star
↓↓
↓↓
进入B站主页获取Cookie用于登录
Chrome浏览器:
-
F12
打开控制台 -
进入Application找到Cookies栏中的SESSDATA将HttpOnly选项取消勾选
(此步骤是为了方便后续采用JS获取Cookies)
-
在Console中复制以下代码回车
{ let bilicookie = ''; document.cookie.split(/\s*;\s*/).forEach(item => { const _item = item.split('='); if (['DedeUserID', 'bili_jct', 'SESSDATA'].indexOf(_item[0]) !== -1) bilicookie += `${_item[0]}=${_item[1]}; `; }) copy(bilicookie); /* 自动复制到粘贴板 */ console.log(bilicookie) }
-
进入你Fork的GitHub仓库新建一个
Repository secrets
COOKIE将获取到的DedeUserID=***;SESSDATA=***;bili_jct=***
填入
也可以采用其他方式获取所需的Cookie
只需含有 DedeUserID=...;SESSDATA=...;bili_jct=...
三项即可
(分号分割,顺序随意)
↓↓
运行结束后会将转发过的动态上传至构件(Artifacts
)
为了能够从构件中下载文件,需要access token权限
-
点我创建
授权令牌
-
如图,勾选前两项即可:
- 将 令牌 复制(注意,先复制,一旦关闭网页就不能查看了),再新建
Secrets
,键名 填入PAT
↓↓
每两个小时检测一次
脚本只会推送两小时内的中奖通知
- 通过
@
信息判断 - 通过私信判断
关键词有限 可能会有漏掉的或误报
手动触发Automatic check
工作流后可在日志中查看
以下是详细说明
Name | 归属 | 属性 | 说明 |
---|---|---|---|
SCKEY |
微信server酱推送 | 非必须 | server酱的微信通知官方文档 |
BARK_PUSH |
BARK推送 | 非必须 | IOS用户下载BARK这个APP,填写内容是app提供的设备码 ,例如:https://api.day.app/123 ,那么此处的设备码就是123 ,再不懂看 这个图(注:支持自建填完整链接即可) |
BARK_SOUND |
BARK推送 | 非必须 | bark推送声音设置,例如choo ,具体值请在bark -推送铃声 -查看所有铃声 |
TG_BOT_TOKEN |
telegram推送 | 非必须 | tg推送(需设备可连接外网),TG_BOT_TOKEN 和TG_USER_ID 两者必需,填写自己申请@BotFather的Token,如10xxx4:AAFcqxxxxgER5uw , 具体教程 |
TG_USER_ID |
telegram推送 | 非必须 | tg推送(需设备可连接外网),TG_BOT_TOKEN 和TG_USER_ID 两者必需,填写@getuseridbot中获取到的纯数字ID, 具体教程 |
TG_PROXY_HOST |
Telegram 代理的 IP | 非必须 | 代理类型为 http。例子:http代理 http://127.0.0.1:1080 则填写 127.0.0.1 |
TG_PROXY_PORT |
Telegram 代理的端口 | 非必须 | 例子:http代理 http://127.0.0.1:1080 则填写 1080 |
DD_BOT_TOKEN |
钉钉推送 | 非必须 | 钉钉推送(DD_BOT_TOKEN 和DD_BOT_SECRET 两者必需)官方文档 ,只需https://oapi.dingtalk.com/robot/send?access_token=XXX 等于= 符号后面的XXX即可 |
DD_BOT_SECRET |
钉钉推送 | 非必须 | (DD_BOT_TOKEN 和DD_BOT_SECRET 两者必需) ,密钥,机器人安全设置页面,加签一栏下面显示的SEC开头的SECXXXXXXXXXX 等字符 , 注:钉钉机器人安全设置只需勾选加签 即可,其他选项不要勾选,再不懂看 这个图 |
IGOT_PUSH_KEY |
iGot推送 | 非必须 | iGot聚合推送,支持多方式推送,确保消息可达。 参考文档 |
QQ_SKEY |
酷推(Cool Push)推送 | 非必须 | 推送所需的Skey,登录后获取Skey 参考文档 |
QQ_MODE |
酷推(Cool Push)推送 | 非必须 | 推送方式(send或group或者wx,默认send) 参考文档 |
QYWX_KEY |
企业微信推送 | 非必须 | 密钥,企业微信推送 webhook 后面的 key 详见官方说明文档 |
PUSH_PLUS_TOKEN |
pushplus推送 | 非必须 | 微信扫码登录后一对一推送或一对多推送下面的token(您的Token) 官方网站 |
PUSH_PLUS_USER |
pushplus推送 | 非必须 | 一对多推送的“群组编码”(一对多推送下面->您的群组(如无则新建)->群组编码)注:(1、需订阅者扫描二维码 2、如果您是创建群组所属人,也需点击“查看二维码”扫描绑定,否则不能接受群组消息推送),只填PUSH_PLUS_TOKEN 默认为一对一推送 |
↓↓
进入Actions启用工作流
通过手动触发
以上步骤是为了检测是否配置成功
至此程序将会每三小时运行一次
↓↓
效果
只需在 Secret
里添加一个 CLEAR
项并取值为 true
程序便会每30天清理一次动态和关注
注: 短时大量清理动态会导致动态数显示异常
如果出现
说明此脚本有更新
通过 Pull Request
更新仓库
注意PR的方向 如下图
须知
This will force sync ALL branches to match source repo. Branches that are created only in the destination repo will not be affected but all the other branches will be hard reset to match source repo.
⚠️ This does mean if upstream ever creates a branch that shares the name, your changes will be gone.
每天与主仓库自动同步一次!
如需关闭请手动关闭
或者使用GitHub App Pull自动同步
由于Github服务器共用IP导致脚本易发生访问频繁,可选择在本地运行
详见env.example.bat文件
默认支持5个账号
cookies | value |
---|---|
COOKIE |
值 |
COOKIE2 |
值 |
COOKIE3 |
值 |
COOKIE4 |
值 |
COOKIE5 |
值 |
COOKIE* |
值 |
添加更多的账号
可在文件.github/workflows/node.js.yml
中
将以下代码中的三处星号(*
)改为数字并依次复制粘贴
lottery_*:
runs-on: ubuntu-latest
steps:
- name: 'Checkout codes'
uses: actions/checkout@v2
- name: 'Use Node.js'
uses: actions/setup-node@v1
with:
node-version: '14.15.5'
- name: 'Run in Nodejs'
shell: bash
env:
NUMBER: *
COOKIE: ${{ secrets.COOKIE* }}
run: |
npm install
npm start
- name: 'Upload dyid to artifact'
uses: actions/upload-artifact@v2
with:
name: dyid.txt
path: lib/dyid.txt
此时Secrets
里就可以添加更多的COOKIE*
(简单的找规律问题)
同理须在文件.github/workflows/check.yml
中
将以下代码中的三处星号(*
)改为数字并依次复制粘贴(启用对应的中奖检测)
lottery_*:
runs-on: ubuntu-latest
steps:
- name: 'Checkout codes'
uses: actions/checkout@v2
- name: 'Use Node.js'
uses: actions/setup-node@v1
with:
node-version: '14.15.5'
- name: 'Run in Nodejs'
shell: bash
env:
NUMBER: *
COOKIE: ${{ secrets.COOKIE* }}
run: |
npm install
npm run check
若使用自动清理功能,还需再.github/workflows/clear.yml
中
lottery_*:
runs-on: ubuntu-latest
steps:
- name: 'Checkout codes'
uses: actions/checkout@v2
- name: 'Use Node.js'
uses: actions/setup-node@v1
with:
node-version: '14.15.5'
- name: 'Run in Nodejs'
shell: bash
env:
NUMBER: *
COOKIE: ${{ secrets.COOKIE* }}
run: |
npm install
npm run clear
将以上的三处星号(*
)改为数字并依次复制粘贴以清理更多的账号
.github/workflows/node.js.yml
schedule:
- cron: '0 */2 * * *'
lib/config.js
- 字段解释
model
'00'
关闭自动抽奖'10'
只转发官方抽奖'01'
只转发非官方抽奖'11'
都转
chatmodel
'00'
关闭自动评论'10'
只评论官抽'01'
只评论非官抽'11'
都评论
maxday
- 开奖时间距离现在的最大天数
- 默认为
-1
表示不限制 - 字符串类型
wait
- 转发间隔时间
- 单位毫秒
- 上下浮动30s
- 字符串类型
minfollower
- up主粉丝数限制
- 仅限制没有官方认证的up
- 字符串类型
create_dy
- 是否发送随机动态(防止被开奖机过滤)
'1'
开启'0'
关闭
blacklist
- 防钓鱼uid黑名单
- 逗号分割字符串
blockword
- 屏蔽词
- 字符串数组
followWhiteList
- 取关白名单
- 逗号分割字符串
relay
- 转发评语
- 字符串数组
chat
- 评论内容
- 字符串数组
- 新建一个Repository secrets取名为
MY_CONFIG
- 填入符合JSON语法的内容
- 字段的名称和对应的值按照字段解释要求填写
- 需要修改哪项就填入相应的键值对
例如我要将
model
值改为'00'
就在MY_CONFIG里填入{ "model":"00" }