Bili动态抽奖助手
Go to file
2021-01-25 21:12:55 +08:00
.github 每天晚8自动与主仓库代码同步 2021-01-25 21:12:55 +08:00
.vscode refactor: 模块化代码; feat: 支持多账号 2020-12-24 16:56:01 +08:00
lib perf: 将易出现频繁的操作提前 2021-01-25 15:54:10 +08:00
.eslintrc.json fix: dyid重复拼接 2021-01-14 18:47:07 +08:00
.gitignore fix: dyid重复拼接 2021-01-14 18:47:07 +08:00
LICENSE Create LICENSE 2020-12-27 13:52:04 +08:00
main.js feat: 清理功能可选 2021-01-15 11:42:50 +08:00
package-lock.json fix: dyid重复拼接 2021-01-14 18:47:07 +08:00
package.json fix: dyid重复拼接 2021-01-14 18:47:07 +08:00
README.md 每天晚8自动与主仓库代码同步 2021-01-25 21:12:55 +08:00

AutoScript

Automatic sweepstakes

Automatic clear dynamic&follow


动态抽奖

通过Github Actions挂载Nodejs脚本

Actions官方文档

此脚本将在B站专栏草稿中储存转发过的动态id以防止重复转发


操作步骤

↓↓

Fork本仓库

fork

↓↓

填入COOKIE

进入B站主页获取Cookie用于登录
Chrome浏览器:

  1. F12打开控制台

  2. 进入Application找到Cookies栏中的SESSDATA将HttpOnly选项取消勾选

    (此步骤是为了方便后续采用JS获取Cookies)

取消httponly

  1. 在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)
    }
  1. 新建一个COOKIE将获取到的DedeUserID=***;SESSDATA=***;bili_jct=***填入

new secret

new COOKIE

也可以采用其他方式获取所需的Cookie
只需含有 DedeUserID=...;SESSDATA=...;bili_jct=... 三项即可
(分号分割,顺序随意)

↓↓

微信推送中奖信息(可选)

如果想使用Server酱提供的微信推送服务

Server酱是什么?

可在 Repository secrets 中新建一个 SCKEY 并填入相应的值

new secret SCKEY

↓↓

运行

进入Actions启用工作流

随便改一下此 README.md 文件并提交(Push触发)

change

commit

或者通过手动触发

commit

以上步骤是为了检测是否配置成功

至此程序将会每两小时运行一次

↓↓

完成!

效果

效果


清理动态

只需在 Secret 里添加一个 CLEAR 项并取值为 true

程序便会每15天清理一次动态和关注


其他细节

更新

如果出现

滞后

说明此脚本有更新
通过 Pull Request 更新仓库

如何同步更新Github上Fork的项目

或者
使用GitHub App Pull自动同步

自动更新(个人推荐)

  1. 点我创建 授权令牌

  2. 如图,勾选前两项即可:

如图,勾选前两项即可:

  1. 将 令牌 复制(注意,先复制,一旦关闭网页就不能查看了),再新建Secrets,键名 填入 PAT

  2. 我默认设置更新时间每天晚上8点与主仓库自动同步一次

多账号支持

默认支持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: '12.18.3'

  + name: 'Run in Nodejs'

    shell: bash
    env:
      NUMBER: *
      COOKIE: ${{ secrets.COOKIE* }}
      SCKEY: ${{ secrets.SCKEY }}
    run:
      npm start

将以上星号处改为数字并依次复制粘贴
此时 Secrets 里就可以添加更多的 COOKIE* (简单的找规律问题)
若使用自动清理功能, 还需再 .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: '12.18.3'

    - name: 'Run in Nodejs'

      shell: bash
      env:
        NUMBER: *
        CLEAR: ${{ secrets.CLEAR }}
        COOKIE: ${{ secrets.COOKIE* }}
        SCKEY: ${{ secrets.SCKEY }}
      run:
        npm run clear

将以上星号处改为数字并依次复制粘贴以清理更多的账号

如何关闭

关闭工作流

部分设置说明

  • 定时运行(UTC时间)

.github/workflows/node.js.yml

  ```yaml
  schedule:

    - cron: '0 */2 * * *'

  ```  
  [如何填写此字段](https://crontab.guru/)  
  • 模式选择

lib/config.js

- 字段解释  
  - `model`
    - `'00'`关闭自动抽奖
    - `'10'`只转发官方抽奖
    - `'01'`只转发非官方抽奖
    - `'11'`都转
  - `chatmodel`
    - `'00'`关闭自动评论
    - `'10'`只评论官抽
    - `'01'`只评论非官抽
    - `'11'`都评论
  - `maxday`
    - 开奖时间距离现在的最大天数
    - 默认为-1表示不限制
  - `wait`
    - 转发间隔时间
    - 单位毫秒
    - 上下浮动30s
  - `minfollower`
    - up主粉丝数限制
    - 仅限制没有官方认证的up
  - `blacklist`
    - 防钓鱼黑名单
  - `blockword`
    - 屏蔽词
  - `followWhiteList`
    - 取关白名单
    - 逗号分割字符串
  - `relay`
    - 转发评语
  - `chat`
    - 评论内容