mirror of
https://github.com/lkeme/BiliHelper-personal.git
synced 2025-12-22 11:50:05 +08:00
[add] ActivityLottery fixed #41
This commit is contained in:
parent
962b7d46a3
commit
88cfb242d3
1
.gitignore
vendored
1
.gitignore
vendored
@ -22,5 +22,6 @@ Traits/
|
|||||||
README1.md
|
README1.md
|
||||||
conf/user.conf
|
conf/user.conf
|
||||||
/conf/user.conf
|
/conf/user.conf
|
||||||
|
/conf/test.conf
|
||||||
/log/
|
/log/
|
||||||
/src/backup/
|
/src/backup/
|
||||||
15
CHANGELOG.md
15
CHANGELOG.md
@ -1,6 +1,21 @@
|
|||||||
# Release Notes
|
# Release Notes
|
||||||
# 本项目Log
|
# 本项目Log
|
||||||
|
|
||||||
|
## v0.6.5.200808 alpha (2020-08-08)
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- 添加小心心支持
|
||||||
|
- 添加活动抽奖
|
||||||
|
-
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- 去掉无效双端观看
|
||||||
|
- 过期小心心赠送
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- 修复小心心心跳错误
|
||||||
|
-
|
||||||
|
|
||||||
## v0.6.0.200730 alpha (2020-07-30)
|
## v0.6.0.200730 alpha (2020-07-30)
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|||||||
57
DOC.md
57
DOC.md
@ -2,7 +2,7 @@
|
|||||||
<p align="center"><img width="300px" src="https://i.loli.net/2018/04/20/5ad97bd395912.jpeg"></p>
|
<p align="center"><img width="300px" src="https://i.loli.net/2018/04/20/5ad97bd395912.jpeg"></p>
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<img src="https://img.shields.io/badge/version-0.6.0.200730 alpha-green.svg?longCache=true&style=for-the-badge">
|
<img src="https://img.shields.io/badge/version-0.6.5.200808 alpha-green.svg?longCache=true&style=for-the-badge">
|
||||||
<img src="https://img.shields.io/badge/license-mit-blue.svg?longCache=true&style=for-the-badge">
|
<img src="https://img.shields.io/badge/license-mit-blue.svg?longCache=true&style=for-the-badge">
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
@ -15,33 +15,34 @@ B 站直播实用脚本
|
|||||||
|
|
||||||
|plugin |version |description |
|
|plugin |version |description |
|
||||||
|--------------------|--------------------|--------------------|
|
|--------------------|--------------------|--------------------|
|
||||||
|Login |20.07.30 |账号登录 |
|
|Login |20.08.08 |账号登录 |
|
||||||
|Schedule |20.07.30 |休眠控制 |
|
|Schedule |20.08.08 |休眠控制 |
|
||||||
|MasterSite |20.07.30 |主站助手 |
|
|MasterSite |20.08.08 |主站助手 |
|
||||||
|Daily |20.07.30 |每日礼包 |
|
|Daily |20.08.08 |每日礼包 |
|
||||||
|Heart |20.07.30 |双端心跳 |
|
|Heart |20.08.08 |双端心跳 |
|
||||||
|Task |20.07.30 |每日任务 |
|
|Task |20.08.08 |每日任务 |
|
||||||
|Silver |20.07.30 |银瓜子宝箱 |
|
|Silver |20.08.08 |银瓜子宝箱 |
|
||||||
|Barrage |20.07.30 |活跃弹幕 |
|
|Barrage |20.08.08 |活跃弹幕 |
|
||||||
|Silver2Coin |20.07.30 |银瓜子换硬币 |
|
|Silver2Coin |20.08.08 |银瓜子换硬币 |
|
||||||
|GiftSend |20.07.30 |礼物赠送 |
|
|GiftSend |20.08.08 |礼物赠送 |
|
||||||
|Judge |20.07.30 |风纪 |
|
|Judge |20.08.08 |风纪 |
|
||||||
|GroupSignIn |20.07.30 |友爱社签到 |
|
|GroupSignIn |20.08.08 |友爱社签到 |
|
||||||
|ManGa |20.07.30 |漫画签到分享 |
|
|ManGa |20.08.08 |漫画签到分享 |
|
||||||
|Match |20.07.30 |赛事签到分享 |
|
|Match |20.08.08 |赛事签到分享 |
|
||||||
|GiftHeart |20.07.30 |心跳礼物 |
|
|GiftHeart |20.08.08 |心跳礼物 |
|
||||||
|MaterialObject |20.07.30 |实物抽奖 |
|
|MaterialObject |20.08.08 |实物抽奖 |
|
||||||
|AloneTcpClient |20.07.30 |独立监控 |
|
|AloneTcpClient |20.08.08 |独立监控 |
|
||||||
|ZoneTcpClient |20.07.30 |分区监控 |
|
|ZoneTcpClient |20.08.08 |分区监控 |
|
||||||
|StormRaffle |20.07.30 |节奏风暴 |
|
|StormRaffle |20.08.08 |节奏风暴 |
|
||||||
|GiftRaffle |20.07.30 |活动礼物 |
|
|GiftRaffle |20.08.08 |活动礼物 |
|
||||||
|PkRaffle |20.07.30 |大乱斗 |
|
|PkRaffle |20.08.08 |大乱斗 |
|
||||||
|GuardRaffle |20.07.30 |舰长总督 |
|
|GuardRaffle |20.08.08 |舰长总督 |
|
||||||
|AnchorRaffle |20.07.30 |天选时刻 |
|
|AnchorRaffle |20.08.08 |天选时刻 |
|
||||||
|AwardRecord |20.07.30 |获奖通知 |
|
|AwardRecord |20.08.08 |获奖通知 |
|
||||||
|Statistics |20.07.30 |数据统计 |
|
|Statistics |20.08.08 |数据统计 |
|
||||||
|Competition |20.07.30 |赛事竞猜 |
|
|Competition |20.08.08 |赛事竞猜 |
|
||||||
|SmallHeart |20.07.30 |小心心 |
|
|SmallHeart |20.08.08 |小心心 |
|
||||||
|
|ActivityLottery |20.08.08 |主站活动 |
|
||||||
|
|
||||||
## 打赏赞助
|
## 打赏赞助
|
||||||
|
|
||||||
|
|||||||
@ -7,7 +7,7 @@ Group: [55308141](https://jq.qq.com/?_wv=1027&k=5AIDaJg) | **仅用于BUG提交
|
|||||||
|
|
||||||
## 公告
|
## 公告
|
||||||
|
|
||||||
> Currently for Personal Edition **0.6.0.200730 alpha**
|
> Currently for Personal Edition **0.6.5.200808 alpha**
|
||||||
|
|
||||||
```notice
|
```notice
|
||||||
---- 免费的东西总是得不到人的珍惜。
|
---- 免费的东西总是得不到人的珍惜。
|
||||||
|
|||||||
@ -67,6 +67,9 @@ USE_MANGA=false
|
|||||||
# 赛事助手
|
# 赛事助手
|
||||||
USE_MATCH=false
|
USE_MATCH=false
|
||||||
|
|
||||||
|
# 活动助手
|
||||||
|
USE_ACTIVITY=false
|
||||||
|
|
||||||
# 破产机|每日竞猜次数|每次竞猜硬币(1-10)|下注(1.压大,2.压小,3.随机)
|
# 破产机|每日竞猜次数|每次竞猜硬币(1-10)|下注(1.压大,2.压小,3.随机)
|
||||||
USE_COMPETITION=false
|
USE_COMPETITION=false
|
||||||
COMPET_MAX_NUM=20
|
COMPET_MAX_NUM=20
|
||||||
|
|||||||
@ -70,6 +70,7 @@ class App
|
|||||||
'Daily',
|
'Daily',
|
||||||
'ManGa',
|
'ManGa',
|
||||||
'Match',
|
'Match',
|
||||||
|
'ActivityLottery',
|
||||||
'Competition',
|
'Competition',
|
||||||
'Heart',
|
'Heart',
|
||||||
'Task',
|
'Task',
|
||||||
|
|||||||
@ -13,7 +13,7 @@ namespace BiliHelper\Core;
|
|||||||
class Env
|
class Env
|
||||||
{
|
{
|
||||||
private $app_name = 'BiliHelper Personal';
|
private $app_name = 'BiliHelper Personal';
|
||||||
private $app_version = '0.6.0.*';
|
private $app_version = '0.6.5.*';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Env constructor.
|
* Env constructor.
|
||||||
|
|||||||
153
src/plugin/ActivityLottery.php
Normal file
153
src/plugin/ActivityLottery.php
Normal file
@ -0,0 +1,153 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Website: https://mudew.com/
|
||||||
|
* Author: Lkeme
|
||||||
|
* License: The MIT License
|
||||||
|
* Email: Useri@live.cn
|
||||||
|
* Updated: 2020 ~ 2021
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace BiliHelper\Plugin;
|
||||||
|
|
||||||
|
use BiliHelper\Core\Log;
|
||||||
|
use BiliHelper\Core\Curl;
|
||||||
|
use BiliHelper\Util\TimeLock;
|
||||||
|
|
||||||
|
class ActivityLottery
|
||||||
|
{
|
||||||
|
use TimeLock;
|
||||||
|
|
||||||
|
private static $activity_infos = [
|
||||||
|
'2020SummerMusic' => [
|
||||||
|
'sid' => 'dd83a687-c800-11ea-8597-246e966235d8',
|
||||||
|
'action_types' => [3, 4], // 4 关注 3 分享
|
||||||
|
'referer' => 'https://www.bilibili.com/blackboard/2020SummerMusic.html',
|
||||||
|
'expired_time' => 1599318000, // 2020-09-05 23:00:00
|
||||||
|
'draw_times' => 3,
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
||||||
|
public static function run()
|
||||||
|
{
|
||||||
|
if (self::getLock() > time() || getenv('USE_ACTIVITY') == 'false') {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
self::workTask();
|
||||||
|
self::setLock(self::timing(5));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @use 运行任务
|
||||||
|
*/
|
||||||
|
private static function workTask()
|
||||||
|
{
|
||||||
|
foreach (self::$activity_infos as $title => $activity) {
|
||||||
|
// 过期
|
||||||
|
if ($activity['expired_time'] < time()) {
|
||||||
|
Log::info('跳过');
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
Log::info("启动 {$title} 抽奖任务");
|
||||||
|
self::initTimes($activity['sid'], $activity['referer']);
|
||||||
|
foreach ($activity['action_types'] as $action_type) {
|
||||||
|
sleep(1);
|
||||||
|
self::addTimes($activity['sid'], $activity['referer'], $action_type);
|
||||||
|
}
|
||||||
|
foreach (range(1, $activity['draw_times']) as $num) {
|
||||||
|
sleep(5);
|
||||||
|
self::doLottery($activity['sid'], $activity['referer'], $num);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @use 获取抽奖机会
|
||||||
|
* @param string $sid
|
||||||
|
* @param string $referer
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
private static function initTimes(string $sid, string $referer): bool
|
||||||
|
{
|
||||||
|
$url = 'https://api.bilibili.com/x/activity/lottery/mytimes';
|
||||||
|
$headers = [
|
||||||
|
'origin' => 'https://www.bilibili.com',
|
||||||
|
'referer' => $referer
|
||||||
|
];
|
||||||
|
$payload = [
|
||||||
|
'sid' => $sid,
|
||||||
|
];
|
||||||
|
$raw = Curl::get('pc', $url, $payload, $headers);
|
||||||
|
$de_raw = json_decode($raw, true);
|
||||||
|
Log::info("获取抽奖机会 {$raw}");
|
||||||
|
// {"code":0,"message":"0","ttl":1,"data":{"times":2}}
|
||||||
|
if ($de_raw['code'] == 0) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @use 增加抽奖机会
|
||||||
|
* @param string $sid
|
||||||
|
* @param string $referer
|
||||||
|
* @param int $action_type
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
private static function addTimes(string $sid, string $referer, int $action_type): bool
|
||||||
|
{
|
||||||
|
$url = 'https://api.bilibili.com/x/activity/lottery/addtimes';
|
||||||
|
$headers = [
|
||||||
|
'origin' => 'https://www.bilibili.com',
|
||||||
|
'referer' => $referer
|
||||||
|
];
|
||||||
|
$user_info = User::parseCookies();
|
||||||
|
$payload = [
|
||||||
|
'sid' => $sid,
|
||||||
|
'action_type' => $action_type,
|
||||||
|
'csrf' => $user_info['token']
|
||||||
|
];
|
||||||
|
$raw = Curl::post('pc', $url, $payload, $headers);
|
||||||
|
$de_raw = json_decode($raw, true);
|
||||||
|
Log::info("增加抽奖机会#{$action_type} {$raw}");
|
||||||
|
// {"code":0,"message":"0","ttl":1}
|
||||||
|
if ($de_raw['code'] == 0) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @use 开始抽奖
|
||||||
|
* @param string $sid
|
||||||
|
* @param string $referer
|
||||||
|
* @param int $num
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
private static function doLottery(string $sid, string $referer, int $num): bool
|
||||||
|
{
|
||||||
|
$url = 'https://api.bilibili.com/x/activity/lottery/do';
|
||||||
|
$headers = [
|
||||||
|
'origin' => 'https://www.bilibili.com',
|
||||||
|
'referer' => $referer
|
||||||
|
];
|
||||||
|
$user_info = User::parseCookies();
|
||||||
|
$payload = [
|
||||||
|
'sid' => $sid,
|
||||||
|
'type' => 1,
|
||||||
|
'csrf' => $user_info['token']
|
||||||
|
];
|
||||||
|
$raw = Curl::post('pc', $url, $payload, $headers);
|
||||||
|
$de_raw = json_decode($raw, true);
|
||||||
|
Log::notice("开始抽奖#{$num} {$raw}");
|
||||||
|
// {"code":0,"message":"0","ttl":1,"data":[{"id":0,"mid":4133274,"num":1,"gift_id":1152,"gift_name":"硬币x6","gift_type":0,"img_url":"https://i0.hdslb.com/bfs/activity-plat/static/b6e956937ee4aefd1e19c01283145fc0/JQ9Y9-KCm_w96_h102.png","type":5,"ctime":1596255796,"cid":0}]}
|
||||||
|
if ($de_raw['code'] == 0) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -25,6 +25,7 @@ class AloneTcpClient
|
|||||||
private static $server_addr = null;
|
private static $server_addr = null;
|
||||||
private static $server_key = null;
|
private static $server_key = null;
|
||||||
private static $socket_timeout = 0;
|
private static $socket_timeout = 0;
|
||||||
|
private static $max_errors_num = 0; // 最大连续错误5次
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @use 入口
|
* @use 入口
|
||||||
@ -226,15 +227,19 @@ class AloneTcpClient
|
|||||||
case 'entered':
|
case 'entered':
|
||||||
// 握手确认
|
// 握手确认
|
||||||
Log::info("确认到推送服务器 {$raw_data['type']}");
|
Log::info("确认到推送服务器 {$raw_data['type']}");
|
||||||
|
self::$max_errors_num = 0;
|
||||||
break;
|
break;
|
||||||
case 'error':
|
case 'error':
|
||||||
// 产生错误
|
// 产生错误
|
||||||
Log::error("推送服务器异常 {$raw_data['data']['msg']}, 程序挂起请手动关闭!");
|
Log::error("推送服务器异常 {$raw_data['data']['msg']}, 程序错误5次后将挂起, 请手动关闭!");
|
||||||
|
if (self::$max_errors_num == 5) {
|
||||||
// KEY到期推送提醒
|
// KEY到期推送提醒
|
||||||
Notice::push('key_expired', '');
|
Notice::push('key_expired', '');
|
||||||
// 程序挂起 防止systemd无限重启导致触发过多推送提醒
|
// 程序挂起 防止systemd无限重启导致触发过多推送提醒
|
||||||
sleep(86400);
|
sleep(86400);
|
||||||
exit();
|
exit();
|
||||||
|
}
|
||||||
|
self::$max_errors_num += 1;
|
||||||
break;
|
break;
|
||||||
case 'heartbeat':
|
case 'heartbeat':
|
||||||
// 服务端心跳推送
|
// 服务端心跳推送
|
||||||
|
|||||||
@ -138,6 +138,7 @@ class SmallHeart
|
|||||||
$x_data = self::xHeartBeat(self::$hb_count);
|
$x_data = self::xHeartBeat(self::$hb_count);
|
||||||
if (!$x_data['status']) {
|
if (!$x_data['status']) {
|
||||||
// 错误级别
|
// 错误级别
|
||||||
|
self::resetVar();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
self::$hb_count += 1;
|
self::$hb_count += 1;
|
||||||
|
|||||||
@ -25,9 +25,9 @@ class Task
|
|||||||
}
|
}
|
||||||
|
|
||||||
$data = self::check();
|
$data = self::check();
|
||||||
if (isset($data['data']['double_watch_info'])) {
|
// if (isset($data['data']['double_watch_info'])) {
|
||||||
self::double_watch_info($data['data']['double_watch_info']);
|
// self::double_watch_info($data['data']['double_watch_info']);
|
||||||
}
|
// }
|
||||||
if (isset($data['data']['sign_info'])) {
|
if (isset($data['data']['sign_info'])) {
|
||||||
self::sign_info($data['data']['sign_info']);
|
self::sign_info($data['data']['sign_info']);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user