github

JunzhouLiu / BILIBILI-HELPER

  • четверг, 22 октября 2020 г. в 00:25:42
https://github.com/JunzhouLiu/BILIBILI-HELPER

Java
利用GitHub Action定时任务实现B站,哔哩哔哩(Bilibili)每日自动投币,签到,银瓜子兑换硬币,领取大会员福利,大会员月底给自己充电等。每天轻松获取65经验值。赶快和我一起成为Lv6吧!



BILIBILI-HELPER

GitHub stars GitHub forks GitHub issues GitHub license GitHub All Releases GitHub contributors GitHub release (latest SemVer)

工具简介

这是一个利用GitHub Action定时任务实现哔哩哔哩(Bilibili)每日自动投币,点赞,分享视频,直播签到,银瓜子兑换硬币,漫画每日签到,简单配置即可每日轻松获取65经验值,快来和我一起成为Lv6吧~~~~

如果觉得好用,顺手点个Star吧

仓库地址:JunzhouLiu/BILIBILI-HELPER

功能列表

  • 每天上午8点10分自动开始任务。【运行时间可自定义】
  • 哔哩哔哩漫画每日自动签到 。
  • 每日自动从热门视频中随机观看1个视频,分享一个视频。
  • 每日从热门视频中选取5个进行智能投币 【如果投币不能获得经验,默认不投币】
  • 投币支持下次一定啦,可自定义每日投币数量。【如果检测到你已经投过币了,则不会投币】
  • 大会员月底使用快到期的B币券,给自己充电,一点也不会浪费哦,默认开启。【可配置】
  • 大会员月初1号自动领取每月5张B币券和福利。
  • 每日哔哩哔哩直播自动签到,领取签到奖励。【直播你可以不看,但是奖励咱们一定要领】

......

点击快速开始使用

目录

使用说明

一、Actions定时任务(推荐)

  1. fork本项目
  2. 获取Bilibili Cookies
  • 浏览器打开并登录bilibili网站
  • 按F12打开 “开发者工具” 找到应用程序/Application -> 存储-> Cookies
  • 找到bili_jct,SESSDATA,DEDEUSERID三项,并复制值,创建对应的GitHub Secrets。

图示

  1. 点击项目 Seeting->Secrets->New Secrets 添加以下3个Secrets。
Name Value
DEDEUSERID 从Cookie中获取
SESSDATA 从Cookie中获取
BILI_JCT 从Cookie中获取

图示

  1. 开启Actions并触发每日自动执行

Github Actions默认处于关闭状态,还大家请手动开启Actions,执行一次工作流,验证是否可以正常工作。

图示

Fork仓库后,GitHub默认不自动执行Actions任务,请修改./github/trigger.json文件,将trigger的值改为1,这样每天就会自动执行定时任务了。

{
- "trigger": 0
+ "trigger": 1
}

如果需要修改每日任务执行的时间,请修改.github/workflows/auto_task_bilili.yml,在第12行左右位置找到下如下配置。

  schedule:
    - cron: '30 10 * * *'
    # cron表达式,Actions时区是UTC时间,所以下午18点要往前推8个小时。
    # 示例: 每天晚上22点30执行 '30 14 * * *'

本工具的Actions自动构建配置了缓存,平均运行时间在20s左右。

如果收到了GitHub Action的错误邮件,请检查Cookies是不是失效了,用户主动清除浏览器缓存,会导致BILI_JCTDEDEUSERID失效

配置自定义功能

配置文件位于src/main/resources/config.json

参数示意

Key Value 说明
numberOfCoins [0,5] 每日投币数量,默认5
selectLike [0,1] 投币时是否点赞,默认0, 0:否 1:是
watchAndShare [0,1] 观看时是否分享
monthEndAutoCharge [false,true] 年度大会员月底是否用B币券给自己充电,默认true
devicePlatform [ios,android] 手机端漫画签到时的平台,建议选择你设备的平台 ,默认ios

投币数量代码做了处理,如果本日投币不能获得经验了,则不会投币,每天只投能获得经验的硬币。假设你设置每日投币3个,早上7点你自己投了2个硬币,则十点半时,程序只会投1个)

查看运行日志

展开Build With Maven通过DEBUG标签快速过滤日志,查看运行状态

Actions运行日志详细查看教程

日志示例

图示 图示

二、使用Linux Crontab方式

步骤

点击BILIBILI-HELPER/release,下载已发布的版本,上传至Liunx服务器。

  1. crontab -l
root@iZuf642f8w148fwdcpq169Z:~# crontab -l
.......
# m h  dom mon dow   command
0 0 1,15 * * /home/./acme.sh-master/acme.sh --renew-all >>/var/log/cron.log 2>&1 &
0 0 1,15 * * nginx -s reload >>/var/log/cron.log 2>&1 &
  1. corntab -e,编辑crontab任务,退出保存即可。后面跟的三个参数为哔哩哔哩Cookies参数。
# m h  dom mon dow   command
0 0 1,15 * * /home/./acme.sh-master/acme.sh --renew-all >>/var/log/cron.log 2>&1 &
0 0 1,15 * * nginx -s reload >>/var/log/cron.log 2>&1 &
30 10 * * * java -jar /home/BILIBILI-HELP.jar DEDEUSERID SESSDATA BILI_JCT >>/var/log/cron.log 2>&1 &

运行效果

图示

三、使用Windows10

步骤

  1. 点击BILIBILI-HELPER/release,下载已发布的版本。解压,在解压后的目录打开Powershell 需要装有Java运行环境。

  2. 执行java -jar /home/BILIBILI-HELP.jar DEDEUSERID SESSDATA BILI_JCT

图示

微信订阅通知

订阅执行结果

  1. 前往sc.ftqq.com创建账号,并且生成一个Key。将其增加到Github Secrets中,变量名为SERVERPUSHKEY,值为你创建账号获得的key,可在查看Key,查看你的key。
  2. 绑定微信账号,开启微信推送。绑定微信

图示 3. 推送效果展示

图示 图示

订阅版本更新

微信扫描以下二维码订阅版本更新通知

图示

快速更新

关于项目更新频率

目前处于快速迭代阶段,建议通过以下两种方式从本仓库拉取最新代码。

使用Github Actions 自动同步源仓库代码

该方案来自 @happy888888 #PR6 ,由于源仓库config.json文件的更改会覆盖用户自己的config.json配置文件,所以暂时没有合并到main分支。

使用自定义功能的朋友慎用该方法,建议使用手动拉取的方式,手动解决代码冲突

./github/workflows目录下创建auto_merge.yml文件,内容如下

name: auto_merge

on:
  workflow_dispatch:
  schedule:
    - cron: 0 2 * * fri
    # cron表达式,每周五10点执行一次,UTC时间,使用北京时间请+8可按照需求自定义。  

jobs:
  merge:
    runs-on: ubuntu-latest
    steps:
    - name: Checkout
      uses: actions/checkout@v2
      with:
        ref: main
        fetch-depth: 0
        lfs: true

    - name: Set git identity
      run : |
        git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com"
        git config --global user.name "github-actions[bot]"
    - name: Load upstream commits
      run: |
        git update-index --assume-unchanged ./src/main/resources/config.json
        git pull https://github.com/JunzhouLiu/BILIBILI-HELPER.git --log --no-commit
    - name: Apply commit changes
      run: |
        if [ -f ./.git/MERGE_MSG ]; then
        mkdir ./tmp && cp ./.git/MERGE_MSG ./tmp/message
        sed -i "1c [bot] AutoMerging: merge all upstream's changes:" ./tmp/message
        sed -i '/^\#.*/d' ./tmp/message
        git commit --file="./tmp/message"
        else
        echo "There is no merge commits."
        fi
    - name: Push Commits
      env:
        DOWNSTREAM_BRANCH: main
        TZ: Asia/Shanghai
      run: git push origin $DOWNSTREAM_BRANCH

手动拉取最新代码

  1. 通过git remote -v查看是否有源头仓库的别名和地址。

例如这里origin就是你自己的仓库,upstream是你fork的源头仓库。

$ git remote -v
origin  https://github.com/JunzhouLiu/cxmooc-tools.git (fetch)
origin  https://github.com/JunzhouLiu/cxmooc-tools.git (push)
upstream        https://github.com/CodFrm/cxmooc-tools.git (fetch)
upstream        https://github.com/CodFrm/cxmooc-tools.git (push)
  1. fork仓库后,将你的仓库拉到本地,如果没有源头仓库,则添加源头仓库
git remote add upstream https://github.com/JunzhouLiu/BILIBILI-HELPER.git
  1. 更新上游仓库main分支的代码(pull操作实际上是 fetch+merge
git pull upstream main
  1. 将从源头仓库更新后的代码推送到你自己的github仓库
git push origin main 
  1. 这样你就能快速的从我的仓库拉取最新的代码,并更新到你自己的仓库里了。自定义配置的同学,要注意config.json 不要被我的文件覆盖了。

常见问题

关于Action定时任务不执行的问题

Fork仓库后,GitHub默认不自动执行Actions任务,请修改./github/trigger.json文件,将trigger的值改为1,这样每天就会自动执行定时任务了。

{
- "trigger": 0
+ "trigger": 1
}

API参考列表