mirror of
https://github.com/lkeme/BiliHelper-personal.git
synced 2025-12-19 09:30:10 +08:00
[perf] MainSite support for cache
This commit is contained in:
parent
3fdf4c25de
commit
2525c26809
@ -27,9 +27,15 @@ use Bhp\Plugin\Plugin;
|
|||||||
use Bhp\TimeLock\TimeLock;
|
use Bhp\TimeLock\TimeLock;
|
||||||
use Bhp\Util\ArrayR\ArrayR;
|
use Bhp\Util\ArrayR\ArrayR;
|
||||||
use Bhp\Util\Exceptions\NoLoginException;
|
use Bhp\Util\Exceptions\NoLoginException;
|
||||||
|
use Bhp\Cache\Cache;
|
||||||
|
|
||||||
class MainSite extends BasePlugin
|
class MainSite extends BasePlugin
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* @var array|array[]
|
||||||
|
*/
|
||||||
|
protected array $records = [];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 插件信息
|
* 插件信息
|
||||||
* @var array|string[]
|
* @var array|string[]
|
||||||
@ -51,6 +57,8 @@ class MainSite extends BasePlugin
|
|||||||
{
|
{
|
||||||
//
|
//
|
||||||
TimeLock::initTimeLock();
|
TimeLock::initTimeLock();
|
||||||
|
//
|
||||||
|
Cache::initCache();
|
||||||
// $this::class
|
// $this::class
|
||||||
$plugin->register($this, 'execute');
|
$plugin->register($this, 'execute');
|
||||||
}
|
}
|
||||||
@ -63,14 +71,32 @@ class MainSite extends BasePlugin
|
|||||||
public function execute(): void
|
public function execute(): void
|
||||||
{
|
{
|
||||||
if (TimeLock::getTimes() > time() || !getEnable('main_site')) return;
|
if (TimeLock::getTimes() > time() || !getEnable('main_site')) return;
|
||||||
|
// 缓存开始
|
||||||
|
$this->records = ($tmp = Cache::get('records')) ? $tmp : $this->initRecords();
|
||||||
//
|
//
|
||||||
if ($this->watchTask() && $this->shareTask() && $this->coinTask()) {
|
if ($this->watchTask() && $this->shareTask() && $this->coinTask()) {
|
||||||
TimeLock::setTimes(TimeLock::timing(10));
|
TimeLock::setTimes(TimeLock::timing(10));
|
||||||
} else {
|
} else {
|
||||||
TimeLock::setTimes(3600);
|
TimeLock::setTimes(3600);
|
||||||
}
|
}
|
||||||
|
// 缓存结束
|
||||||
|
Cache::set('records', $this->records);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化
|
||||||
|
* @return array[]
|
||||||
|
*/
|
||||||
|
protected function initRecords(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'watch' => [],
|
||||||
|
'share' => [],
|
||||||
|
'coin' => [],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取稿件列表
|
* 获取稿件列表
|
||||||
* @param int $num
|
* @param int $num
|
||||||
@ -90,12 +116,15 @@ class MainSite extends BasePlugin
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 投币任务
|
* 投币任务
|
||||||
|
* @param string $key
|
||||||
* @return bool
|
* @return bool
|
||||||
* @throws NoLoginException
|
* @throws NoLoginException
|
||||||
*/
|
*/
|
||||||
protected function coinTask(): bool
|
protected function coinTask(string $key = 'coin'): bool
|
||||||
{
|
{
|
||||||
if (!getConf('main_site.add_coin', false, 'bool')) return true;
|
if (!getConf('main_site.add_coin', false, 'bool')) return true;
|
||||||
|
//
|
||||||
|
if (in_array($this->getKey(), $this->records[$key])) return true;
|
||||||
// 预计数量 失败默认0 避免损失
|
// 预计数量 失败默认0 避免损失
|
||||||
$estimate_num = getConf('main_site.add_coin_num', 0, 'int');
|
$estimate_num = getConf('main_site.add_coin_num', 0, 'int');
|
||||||
// 库存数量
|
// 库存数量
|
||||||
@ -108,6 +137,8 @@ class MainSite extends BasePlugin
|
|||||||
// 上限
|
// 上限
|
||||||
if ($actual_num <= 0) {
|
if ($actual_num <= 0) {
|
||||||
Log::notice('主站任务: 今日投币上限已满');
|
Log::notice('主站任务: 今日投币上限已满');
|
||||||
|
// 插入
|
||||||
|
$this->records[$key][] = $this->getKey();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
// 稿件列表
|
// 稿件列表
|
||||||
@ -120,6 +151,8 @@ class MainSite extends BasePlugin
|
|||||||
//
|
//
|
||||||
sleep(1);
|
sleep(1);
|
||||||
}
|
}
|
||||||
|
// 插入
|
||||||
|
$this->records[$key][] = $this->getKey();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -270,13 +303,16 @@ class MainSite extends BasePlugin
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 分享任务
|
* 分享任务
|
||||||
|
* @param string $key
|
||||||
* @return bool
|
* @return bool
|
||||||
* @throws NoLoginException
|
* @throws NoLoginException
|
||||||
*/
|
*/
|
||||||
protected function shareTask(): bool
|
protected function shareTask(string $key = 'share'): bool
|
||||||
{
|
{
|
||||||
if (!getConf('main_site.share', false, 'bool')) return true;
|
if (!getConf('main_site.share', false, 'bool')) return true;
|
||||||
|
//
|
||||||
|
if (in_array($this->getKey(), $this->records[$key])) return true;
|
||||||
|
//
|
||||||
$archives = $this->fetchCustomArchives(10);
|
$archives = $this->fetchCustomArchives(10);
|
||||||
$archive = array_pop($archives);
|
$archive = array_pop($archives);
|
||||||
$aid = (string)$archive['aid'];
|
$aid = (string)$archive['aid'];
|
||||||
@ -288,6 +324,8 @@ class MainSite extends BasePlugin
|
|||||||
throw new NoLoginException($response['message']);
|
throw new NoLoginException($response['message']);
|
||||||
case 0:
|
case 0:
|
||||||
Log::notice("主站任务: $aid 分享成功");
|
Log::notice("主站任务: $aid 分享成功");
|
||||||
|
// 插入
|
||||||
|
$this->records[$key][] = $this->getKey();
|
||||||
return true;
|
return true;
|
||||||
default:
|
default:
|
||||||
Log::warning("主站任务: $aid 分享失败 {$response['code']} -> {$response['message']}");
|
Log::warning("主站任务: $aid 分享失败 {$response['code']} -> {$response['message']}");
|
||||||
@ -297,12 +335,15 @@ class MainSite extends BasePlugin
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 观看任务
|
* 观看任务
|
||||||
|
* @param string $key
|
||||||
* @return bool
|
* @return bool
|
||||||
*/
|
*/
|
||||||
protected function watchTask(): bool
|
protected function watchTask(string $key = 'watch'): bool
|
||||||
{
|
{
|
||||||
if (!getConf('main_site.watch', false, 'bool')) return true;
|
if (!getConf('main_site.watch', false, 'bool')) return true;
|
||||||
|
//
|
||||||
|
if (in_array($this->getKey(), $this->records[$key])) return true;
|
||||||
|
//
|
||||||
$archives = $this->fetchCustomArchives(10);
|
$archives = $this->fetchCustomArchives(10);
|
||||||
$archive = array_pop($archives);
|
$archive = array_pop($archives);
|
||||||
//
|
//
|
||||||
@ -311,6 +352,7 @@ class MainSite extends BasePlugin
|
|||||||
} else {
|
} else {
|
||||||
// 额外处理信息
|
// 额外处理信息
|
||||||
$info = $this->getArchiveInfo((string)$archive['aid']);
|
$info = $this->getArchiveInfo((string)$archive['aid']);
|
||||||
|
if (empty($info)) return false;
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
$aid = (string)$info['aid'];
|
$aid = (string)$info['aid'];
|
||||||
@ -342,6 +384,8 @@ class MainSite extends BasePlugin
|
|||||||
}
|
}
|
||||||
//
|
//
|
||||||
Log::notice("主站任务: $aid 观看成功");
|
Log::notice("主站任务: $aid 观看成功");
|
||||||
|
// 插入
|
||||||
|
$this->records[$key][] = $this->getKey();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -354,6 +398,10 @@ class MainSite extends BasePlugin
|
|||||||
{
|
{
|
||||||
$response = ApiPlayer::pageList($aid);
|
$response = ApiPlayer::pageList($aid);
|
||||||
//
|
//
|
||||||
|
if ($response['code'] == -404 || !isset($response['data'])) {
|
||||||
|
Log::warning("主站任务: $aid 获取稿件信息失败 {$response['code']} -> {$response['message']}");
|
||||||
|
return [];
|
||||||
|
}
|
||||||
$archive_info = $response['data'][0];
|
$archive_info = $response['data'][0];
|
||||||
$archive_info['aid'] = $aid;
|
$archive_info['aid'] = $aid;
|
||||||
return $archive_info;
|
return $archive_info;
|
||||||
@ -376,4 +424,13 @@ class MainSite extends BasePlugin
|
|||||||
return $info;
|
return $info;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
protected function getKey(): string
|
||||||
|
{
|
||||||
|
return substr(md5(md5(date("Y-m-d", time()))), 8, 8);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -23,11 +23,12 @@ class ApiPlayer
|
|||||||
{
|
{
|
||||||
public static function pageList(string $aid): array
|
public static function pageList(string $aid): array
|
||||||
{
|
{
|
||||||
// day: 日榜1 三榜3 周榜7 月榜30
|
|
||||||
$url = 'https://api.bilibili.com/x/player/pagelist';
|
$url = 'https://api.bilibili.com/x/player/pagelist';
|
||||||
$payload = [
|
$payload = [
|
||||||
'aid' => $aid,
|
'aid' => $aid,
|
||||||
];
|
];
|
||||||
|
// {"code":-404,"message":"啥都木有","ttl":1}
|
||||||
|
// {"code":0,"message":"0","ttl":1,"data":[{"cid":123,"page":1,"from":"vupload","part":"","duration":2055,"vid":"","weblink":"","dimension":{"width":480,"height":360,"rotate":0}}]}
|
||||||
return Request::getJson(true, 'other', $url, $payload);
|
return Request::getJson(true, 'other', $url, $payload);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user