请注意:关于LICENSE,在Apache-2.0的基础上增加一条:禁止上传到CSDN等网站盈利,禁止放在某宝某鱼等平台贩卖,否则官方找上门就删库跑路!
因为B站风纪委员改革,本库将永久处于Archive状态,谢谢大家的陪伴。如需留言,请到GamerNoTitle的Discussion中留言,链接在下面一行。如果有技术交流,欢迎私信!
本脚本从@GamerNoTitle出Fork而来,源仓库已于2021.5.19删除(我也不知道为什么本仓库会成为源仓库,理论上应该所有人都是源仓库才对),具体请参照关于得知Github查封Action仓库的信息后我自行删除脚本的这档事 #2
本脚本通过使用Github Action来实现B站风纪委员的自动投票功能,喜欢请给我点个STAR吧!
如果你不是风纪委员,在符合风纪委员申请条件的情况下,本脚本会自动帮你申请 不现在不会了╮(╯▽╰)╭
投票时间是早上八点,如果有需要请自行修改.github/workflows/Judge.yml
中的时间,时间是UTC时区的时间,需要将时位+8才是北京时间
使用本脚本即代表你放弃追究开发者任何由使用本脚本而造成的责任,所有的责任由使用者自行承担!
点击下面的Badge其中一个就可以跳转到相应页面,感谢老板的支持!
1、Fork本仓库,直接点击右上角的Fork图标,然后将项目选择到你的账户下即可
2、进入设置,添加变量必需变量csrf
和sessdata
,另有giveup
和delay
可选变量可以添加
请注意:你无需在仓库的secrets内设置名为GITHUB_TOKEN
的变量,该名称本身就是指定为自己账户下名为GITHUB_TOKEN
的密钥,如果你在仓库的secrets内设置将会被Github提示无效
因为Github Action在仓库60天内没有任何Push的时候会禁用你的Action,这时候我们就要进行保活
保活Action已经写好了,但是这里有一些步骤是需要你进行的,请看下面的图片生成GITHUB_TOKEN以便让脚本造成的更改能够正常推送入你的仓库
到这里勾选完以后点绿绿的Generate token就可以了
首先我们打开B站,直接在B站的网址后面加上/judgement
,或者直接访问https://bilibili.com/judgement,按下键盘上的F12,打开开发者工具
接着我们点到上面的Network
(有些写的是网络
,例如Edge),在左边找到index项,然后点击它,在右侧找到cookie这一个键,然后复制SESSDATA=
到;
的内容作为sessdata
和bili_jct=
到;
的内容作为csrf
请注意:不要把分号弄进去了!不要分号!不要分号!(重要的事情说三遍)
这是两个我设定的值,因为B站对于案件有放弃
这一说,所以我对它特别加了个开关
如果你不想让脚本对案件采用放弃的操作,那么就要添加Giveup这个值,而且必须填上False
,否则一律当允许放弃处理;还有一个delay是不放弃的话等待多长时间以后再次进行操作计算,以秒为单位,必须是整数,不填就默认为300
秒
这是一个设定赞成比例的值,默认设定的是0.7,即赞成票占全部的70%就选择赞成中票数较高的操作,或合规票占全部的70%(即违规占30%)时就投合规,否则进入放弃/等待阶段,这个数字必须是大于0且小于1的小数!若输入无效数字按默认值处理!
我们先进入Action界面,启用Action(因为我这里忘记截图了,所以用我隔壁的那个网易云游戏签到脚本来顶一下)
然后我们进入对应的脚本,启用脚本,并进行测试
只要打了绿色的勾勾就是成功了,然后你就不用管它了,它会自己运行的
点击这里安装插件,可以选择所有仓库,也可以指选择你Fork的仓库(当然至少要选择fork的仓库对吧,要不然怎么更新),然后不管它就好了
详细步骤可以看下面的图片
具体看图,请注意:以下操作均在自己的仓库进行!
这样你就完成了手动更新操作!
这种情况下请检查你的变量是否填好,如果csrf
和sessdata
不填好就会出现这个错误
如何检查自己的变量是否填好?你可以点开当次Action记录中的Run Script
这一节,然后点击Run python3 Main.py "$csrf" "$sessdata" "$giveup" "$delay" "$JudgeProportion"
这一行把它展开,看看自己的变量是否填写完整,它不会显示你填写的变量,但是填了的变量会以***
来显示来告诉你你填写了
Traceback (most recent call last):
File "Main.py", line 112, in <module>
Main()
File "Main.py", line 67, in Main
Userinfo,UserinfoParsed=GetInfo(sessdata)
File "/home/runner/work/bilibiliJudge/bilibiliJudge/GetJudgerInfo.py", line 18, in GetInfo
'用户名': info_loads['data']['uname'][0]+ ('*' * int(len(info_loads['data']['uname'])-2)) +info_loads['data']['uname'][len(info_loads['data']['uname'])-1:],
KeyError: 'data'
在GetJudgerInfo.py
文件中,第十二行
info_loads=js.loads(info.text)
下面加多一行print(info_loads)
,如下面这样
info_loads=js.loads(info.text)
print(info_loads)
并发起issue询问(当然你能自己看懂是什么情况是最好的)
File "Main.py", line 111, in <module>
Main()
File "Main.py", line 80, in Main
cid=GetNew(csrf,sessdata)
File "/home/runner/work/bilibiliJudge/bilibiliJudge/GetNewCase.py", line 19, in GetNew
result=dataloads['data']['id']
KeyError: 'data'
请找到GetNewCase.py
文件,在第17行把下面这行代码的#
删掉,并注意对齐
dataloads=js.loads(data.text)
# print(dataloads) # 第17行
if(dataloads['code']==25014 or dataloads['code']==25008): return True
删完应该像下面这样
dataloads=js.loads(data.text)
print(dataloads)
if(dataloads['code']==25014 or dataloads['code']==25008): return True
然后将运行结果附在issue里面询问(当然能自己解决最好)
学习项目,请勿滥用!如果有因滥用造成的封号、删除账户等情况或违反相关法律所造成的责任,本人拒不承担!