From 523ed7979f23e7c3c5422a289d73e7c25d37f870 Mon Sep 17 00:00:00 2001
From: Lkeme <19500576+lkeme@users.noreply.github.com>
Date: Fri, 24 Mar 2023 17:02:42 +0800
Subject: [PATCH] [update] captcha
---
.gitignore | 1 +
README.md | 3 +-
app.php | 2 +-
captcha/index.php | 147 ++++++++
captcha/static/css/style.css | 191 ++++++++++
captcha/static/index.html | 58 +++
captcha/static/js/gt.js | 354 ++++++++++++++++++
captcha/static/js/index.js | 180 +++++++++
docker/Dockerfile | 3 +
docker/entrypoint.sh | 8 +-
docs/CAPTCHA.md | 50 +++
docs/CHANGELOG.md | 19 +
plugin/AwardRecords/AwardRecords.php | 2 +-
plugin/BpConsumption/BpConsumption.php | 3 +-
plugin/CheckUpdate/CheckUpdate.php | 2 +-
plugin/DailyGold/DailyGold.php | 2 +-
plugin/GameForecast/GameForecast.php | 3 +-
plugin/Judge/Judge.php | 2 +-
plugin/LiveGoldBox/LiveGoldBox.php | 2 +-
plugin/LiveReservation/LiveReservation.php | 3 +-
plugin/LiveSignIn/LiveSignIn.php | 2 +-
plugin/Login/Login.php | 110 +++++-
plugin/Lottery/Lottery.php | 2 +-
plugin/Lottery/LotteryInfo.php | 2 +-
plugin/LoveClub/LoveClub.php | 2 +-
plugin/MainSite/MainSite.php | 3 +-
plugin/Manga/Manga.php | 2 +-
plugin/PluginTemplate/PluginTemplate.php | 2 +-
plugin/PolishMedal/PolishMedal.php | 2 +-
plugin/Silver2Coin/Silver2Coin.php | 2 +-
plugin/VipPoint/Traits/Bonus.php | 2 +-
plugin/VipPoint/Traits/BuyVipMall.php | 2 +-
plugin/VipPoint/Traits/BuyVipProduct.php | 2 +-
plugin/VipPoint/Traits/BuyVipVideo.php | 2 +-
plugin/VipPoint/Traits/CommonTaskInfo.php | 2 +-
plugin/VipPoint/Traits/PointInfo.php | 2 +-
plugin/VipPoint/Traits/Privilege.php | 2 +-
plugin/VipPoint/Traits/SignIn.php | 2 +-
plugin/VipPoint/Traits/ViewAnimate.php | 2 +-
plugin/VipPoint/Traits/ViewFilmChannel.php | 2 +-
plugin/VipPoint/Traits/ViewVideo.php | 2 +-
plugin/VipPoint/Traits/ViewVipMall.php | 2 +-
plugin/VipPoint/VipPoint.php | 2 +-
plugin/VipPrivilege/VipPrivilege.php | 2 +-
profile/example/config/user.ini | 8 +-
profile/example/device/device.yaml | 6 +-
resources/version.json | 6 +-
src/Api/Api/Pgc/Activity/Deliver/ApiTask.php | 2 +-
src/Api/Api/Pgc/Activity/Score/ApiTask.php | 2 +-
src/Api/Api/X/Player/ApiPlayer.php | 2 +-
src/Api/Api/X/VipPoint/ApiTask.php | 2 +-
src/Api/Credit/ApiJury.php | 2 +-
src/Api/Custom/ApiCalcSign.php | 2 +-
src/Api/DynamicSvr/ApiDynamicSvr.php | 2 +-
src/Api/Esports/ApiGuess.php | 3 +-
src/Api/LinkGroup/ApiLoveClub.php | 2 +-
src/Api/Lottery/V1/ApiAward.php | 2 +-
src/Api/Manga/ApiManga.php | 3 +-
src/Api/Msg/ApiMsg.php | 2 +-
src/Api/Passport/ApiCaptcha.php | 16 +-
src/Api/Passport/ApiLogin.php | 4 +-
src/Api/Passport/ApiOauth2.php | 3 +-
src/Api/PassportTv/ApiQrcode.php | 3 +-
src/Api/Pay/ApiPay.php | 4 +-
src/Api/Pay/ApiWallet.php | 4 +-
src/Api/Room/V1/ApiArea.php | 4 +-
src/Api/Room/V1/ApiDanMu.php | 4 +-
src/Api/Room/V1/ApiInfo.php | 2 +-
.../Api/Activity/Fire/Common/ApiEvent.php | 2 +-
src/Api/Space/ApiReservation.php | 4 +-
src/Api/Video/ApiCoin.php | 4 +-
src/Api/Video/ApiShare.php | 2 +-
src/Api/Video/ApiVideo.php | 2 +-
src/Api/Video/ApiWatch.php | 4 +-
src/Api/Vip/ApiPrivilege.php | 4 +-
src/Api/Vip/ApiUser.php | 4 +-
src/Api/WWW/ApiMain.php | 2 +-
src/Api/XLive/ApiRevenueWallet.php | 3 +-
src/Api/XLive/ApiXLiveSign.php | 4 +-
src/Api/XLive/AppRoom/V1/ApiDM.php | 2 +-
src/Api/XLive/AppUcenter/V1/ApiFansMedal.php | 4 +-
src/Api/XLive/AppUcenter/V1/ApiUserTask.php | 2 +-
.../V1/HeartBeat/ApiHeartBeat.php | 4 +-
.../GeneralInterface/V1/ApiGuardBenefit.php | 2 +-
.../XLive/LotteryInterface/V1/ApiAnchor.php | 2 +-
src/Api/XLive/LotteryInterface/V2/ApiBox.php | 5 +-
src/Api/XLive/Revenue/V1/ApiWallet.php | 2 +-
src/Api/XLive/WebRoom/V1/Index/ApiIndex.php | 4 +-
src/Bootstrap/Bootstrap.php | 4 +-
src/Cache/Cache.php | 2 +-
src/Config/Config.php | 2 +-
src/Console/Command/AppCommand.php | 4 +-
src/Console/Command/DebugCommand.php | 2 +-
src/Console/Command/RestoreCommand.php | 4 +-
src/Console/Command/ScriptCommand.php | 4 +-
src/Console/Console.php | 2 +-
src/Core/Core.php | 4 +-
src/Device/Device.php | 2 +-
src/Env/Env.php | 2 +-
src/FilterWords/FilterWords.php | 3 +-
src/Helpers.php | 2 +-
src/Log/Log.php | 2 +-
src/Notice/Notice.php | 2 +-
src/Plugin/BasePlugin.php | 5 +-
src/Plugin/BasePluginInfo.php | 4 +-
src/Plugin/BasePluginRW.php | 5 +-
src/Plugin/Plugin.php | 4 +-
src/Request/MultiRequest.php | 4 +-
src/Request/Request.php | 2 +-
src/Schedule/Schedule.php | 2 +-
src/Sign/Sign.php | 2 +-
src/Task/Task.php | 2 +-
src/TaskQueue/TaskQueue.php | 3 +-
src/TimeLock/TimeLock.php | 3 +-
src/User/User.php | 6 +-
src/Util/ArrayR/ArrayR.php | 2 +-
src/Util/AsciiTable/AsciiTable.php | 4 +-
src/Util/Common/Common.php | 2 +-
src/Util/DesignPattern/SingleTon.php | 4 +-
src/Util/Exceptions/GetConfigException.php | 4 +-
.../Exceptions/HttpClientInitException.php | 4 +-
.../Exceptions/MethodNotFoundException.php | 5 +-
src/Util/Exceptions/NoLoginException.php | 2 +-
.../Exceptions/ResponseEmptyException.php | 4 +-
src/Util/Exceptions/SingletonException.php | 4 +-
src/Util/Exceptions/TaskException.php | 2 +-
src/Util/Fake/Fake.php | 2 +-
src/Util/Os/File.php | 4 +-
src/Util/Os/Path.php | 4 +-
src/Util/Qrcode/Lib/Constants.php | 2 +-
src/Util/Qrcode/Lib/FrameFiller.php | 2 +-
src/Util/Qrcode/Lib/QrBitStream.php | 4 +-
src/Util/Qrcode/Lib/QrCode.php | 2 +-
src/Util/Qrcode/Lib/QrEncode.php | 2 +-
src/Util/Qrcode/Lib/QrImage.php | 4 +-
src/Util/Qrcode/Lib/QrInput.php | 2 +-
src/Util/Qrcode/Lib/QrInputItem.php | 2 +-
src/Util/Qrcode/Lib/QrMask.php | 2 +-
src/Util/Qrcode/Lib/QrRawCode.php | 2 +-
src/Util/Qrcode/Lib/QrRs.php | 4 +-
src/Util/Qrcode/Lib/QrRsBlock.php | 2 +-
src/Util/Qrcode/Lib/QrRsItem.php | 4 +-
src/Util/Qrcode/Lib/QrSpec.php | 4 +-
src/Util/Qrcode/Lib/QrSplit.php | 2 +-
src/Util/Qrcode/Lib/QrStr.php | 4 +-
src/Util/Qrcode/Lib/QrTools.php | 2 +-
src/Util/Qrcode/Qrcode.php | 2 +-
src/Util/Resource/BaseResource.php | 4 +-
src/Util/Resource/BaseResourcePoly.php | 4 +-
src/Util/Resource/Collection.php | 4 +-
src/Util/Resource/CollectionInterface.php | 4 +-
src/Util/Resource/Resource.php | 3 +-
src/Util/UUID/UUID.php | 2 +-
src/core/Core.php | 4 +-
tests/AsciiTableTest.php | 2 +-
tests/bootstrap.php | 4 +-
156 files changed, 1320 insertions(+), 233 deletions(-)
create mode 100644 captcha/index.php
create mode 100644 captcha/static/css/style.css
create mode 100644 captcha/static/index.html
create mode 100644 captcha/static/js/gt.js
create mode 100644 captcha/static/js/index.js
create mode 100644 docs/CAPTCHA.md
diff --git a/.gitignore b/.gitignore
index e580b6d..8ae8673 100644
--- a/.gitignore
+++ b/.gitignore
@@ -34,3 +34,4 @@ index1.php
!/profile/example
.phpunit.*
+captcha/data.json
diff --git a/README.md b/README.md
index c618bdd..9294ef0 100644
--- a/README.md
+++ b/README.md
@@ -29,7 +29,7 @@
-
+
@@ -66,6 +66,7 @@
有疑问一定要先看看文档或Issue里是否存在相同的问题,再考虑其他渠道咨询。
* [使用文档 / DOC.md](./docs/DOC.md)
+* [验证码文档 / CAPTCHA.md](./docs/CAPTCHA.md)
* [推送文档 / NOTIFY.md](./docs/NOTIFY.md)
* [更新日志 / CHANGELOG.md](./docs/CHANGELOG.md)
* [配置文档 / WIKI.md](https://github.com/lkeme/BiliHelper-personal/wiki/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E8%AF%A6%E8%A7%A3)
diff --git a/app.php b/app.php
index 59a8837..755e6f0 100644
--- a/app.php
+++ b/app.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/captcha/index.php b/captcha/index.php
new file mode 100644
index 0000000..ce222b7
--- /dev/null
+++ b/captcha/index.php
@@ -0,0 +1,147 @@
+filename = $filename;
+ }
+
+ public function read(): array
+ {
+ $json = file_get_contents($this->filename);
+ if (empty($json)) {
+ return [];
+ }
+ return json_decode($json, true);
+ }
+
+ public function write(array $data): void
+ {
+ $json = json_encode($data, JSON_PRETTY_PRINT);
+ file_put_contents($this->filename, $json);
+ }
+}
+
+
+class HttpServer
+{
+ private JsonFileManager $json;
+ protected string $filename = 'data.json';
+
+ public function __construct()
+ {
+ $this->createFile();
+ $this->json = new JsonFileManager($this->filename);
+ }
+
+ public function start(): void
+ {
+ // 获取请求路径
+ $requestUri = $_SERVER['REQUEST_URI'];
+ $path = parse_url($requestUri, PHP_URL_PATH);
+// $queryString = parse_url($requestUri, PHP_URL_QUERY);
+
+ // 否则处理其他API请求
+ $method = $_SERVER['REQUEST_METHOD'];
+
+ $this->handleRequest($path, $method);
+ }
+
+ protected function createFile(): bool
+ {
+ if (file_exists($this->filename)) {
+ return false;
+ }
+ // 判断文件类型是否为目录, 如果不存在则创建
+ if (!file_exists(dirname($this->filename))) {
+ mkdir(dirname($this->filename), 0777, true);
+ }
+ if (touch($this->filename)) {
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * @param $path
+ * @param $method
+ * @return void
+ */
+ protected function handleRequest($path, $method): void
+ {
+ // 如果是 /geetest 路径,返回静态页面
+ if ($path == '/geetest' && $method === 'GET') {
+ header('Content-Type: text/html; charset=utf-8');
+ include('static/index.html');
+ exit();
+ }
+
+ // 如果是 /geetest 路径,POST请求,处理验证
+ if ($path === '/feedback' && $method === 'POST') {
+ // 获取参数,从json里的读取
+ $data = $this->json->read();
+ $challenge = $_POST['challenge'];
+ $validate = $_POST['validate'];
+ $seccode = $_POST['seccode'];
+ $data[$challenge] = [
+ 'challenge' => $challenge,
+ 'validate' => $validate,
+ 'seccode' => $seccode,
+ ];
+ $this->json->write($data);
+ $this->toResponse(10003);
+ return;
+ }
+ if ($path === '/fetch' && $method === 'GET') {
+ // 获取参数,从json里的读取
+ $challenge = $_GET['challenge'];
+ $data = $this->json->read();
+ if (empty($data[$challenge])) {
+ $this->toResponse(10001, '暂未获取到验证结果');
+ } else {
+ $this->toResponse(10000, '成功获取到验证结果', $data[$challenge]);
+ }
+ return;
+ }
+ // other
+ http_response_code(404);
+ $this->toResponse(404, 'Not Found');
+ }
+
+ /**
+ * @param int $code
+ * @param string $message
+ * @param array $data
+ * @return void
+ */
+ protected function toResponse(int $code = 200, string $message = 'success', array $data = []): void
+ {
+ header('Content-Type: application/json');
+// http_response_code($code);
+ echo json_encode(['code' => $code, 'message' => $message, 'data' => $data]);
+ }
+
+
+}
+
+(new HttpServer)->start();
+
diff --git a/captcha/static/css/style.css b/captcha/static/css/style.css
new file mode 100644
index 0000000..4701602
--- /dev/null
+++ b/captcha/static/css/style.css
@@ -0,0 +1,191 @@
+* {
+ margin: 0;
+ padding: 0;
+ box-sizing: border-box;
+}
+
+body {
+ background: #f1f2f4;
+}
+
+a {
+ text-decoration: none;
+}
+
+.box {
+ margin: 100px auto;
+ padding: 20px 30px 25px 30px;
+ max-width: 400px;
+ border-radius: 15px;
+ background: #fff;
+ border: 2px solid #90b5e2;
+}
+
+.title {
+ text-align: center;
+ font-size: 20px;
+ font-weight: bold;
+ margin-bottom: 20px;
+}
+
+.result-title {
+ text-align: center;
+ font-size: 18px;
+ font-weight: bold;
+ margin-top: 25px;
+ margin-bottom: 20px;
+}
+
+.toast-box {
+ position: fixed;
+ transform: translate(-50%, -50%);
+ left: 50%;
+ top: -30px;
+ border-radius: 4px;
+ font-size: 15px;
+ line-height: 18px;
+ padding: 12px 30px;
+ background: rgba(0, 0, 0, .8);
+ color: #fff;
+ opacity: 0;
+ text-align: center;
+ min-width: 150px;
+ max-width: 300px;
+ white-space: nowrap;
+ transition: all 0.5s ease;
+}
+
+
+.form {
+ margin-bottom: 16px;
+}
+
+.form-label {
+ display: block;
+ margin-bottom: 8px;
+ font-size: 14px;
+ font-weight: 600;
+}
+
+.form-control {
+ display: block;
+ width: 100%;
+ padding: 7px 12px;
+ font-size: 14px;
+ font-weight: 400;
+ line-height: 20px;
+ color: inherit;
+ background-clip: padding-box;
+ border: 1px solid #e6e7e9;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+ border-radius: 4px;
+ transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out;
+}
+
+.form-control:focus {
+ color: inherit;
+ border-color: #90b5e2;
+ outline: 0;
+ box-shadow: 0 0 0 4px rgb(32 107 196 / 25%);
+}
+.form-control:disabled {
+ background-color: #f1f5f9;
+ opacity: 1;
+}
+
+#captcha {
+ width: 336px;
+ display: inline-block;
+}
+
+.btn {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ white-space: nowrap;
+ cursor: pointer;
+ user-select: none;
+
+ width: 336px;
+ height: 42px;
+ color: #f8fafc;
+ background-color: #3873ff;
+ text-align: center;
+ border-radius: 4px;
+ box-shadow: 0 1px 0 rgba(29, 39, 59, 0.04), inset 0 -1px 0 rgba(29, 39, 59, 0.2);
+}
+
+.btn:hover {
+ color: #f8fafc;
+ text-decoration: none;
+ background-color: #437cff;
+ border-color: transparent;
+}
+#success {
+ background-color: #2fb344;
+ cursor: default;
+}
+
+#wait {
+ height: 42px;
+ width: 336px;
+ text-align: center;
+ border-radius: 4px;
+ background-color: #F3F3F3;
+}
+
+.hide {
+ display: none !important;
+}
+
+.loading {
+ margin: auto;
+ width: 70px;
+ height: 20px;
+}
+
+.loading-dot {
+ float: left;
+ width: 8px;
+ height: 8px;
+ margin: 18px 4px;
+ background: #ccc;
+ border-radius: 50%;
+ opacity: 0;
+ box-shadow: 0 0 2px black;
+ animation: loadingFade 1s infinite;
+}
+
+.loading-dot:nth-child(1) {
+ animation-delay: 0s;
+}
+
+.loading-dot:nth-child(2) {
+ animation-delay: 0.1s;
+}
+
+.loading-dot:nth-child(3) {
+ animation-delay: 0.2s;
+}
+
+.loading-dot:nth-child(4) {
+ animation-delay: 0.3s;
+}
+
+@keyframes loadingFade {
+ 0% {
+ opacity: 0;
+ }
+ 50% {
+ opacity: 0.8;
+ }
+ 100% {
+ opacity: 0;
+ }
+}
+
+.geetest_radar_btn {
+ border-radius: 4px !important;
+}
\ No newline at end of file
diff --git a/captcha/static/index.html b/captcha/static/index.html
new file mode 100644
index 0000000..52c8745
--- /dev/null
+++ b/captcha/static/index.html
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+ 极验手动验证
+
+
+
+
+
+
+
+
+
+
极验手动验证
+
+
+
+
+
+
+
+
+
+
+
+
+
验证结果
+
+
+
+
+
+
+
+
+
提交反馈结果
+
+
+
+ 消息
+
+
+
diff --git a/captcha/static/js/gt.js b/captcha/static/js/gt.js
new file mode 100644
index 0000000..1b57f93
--- /dev/null
+++ b/captcha/static/js/gt.js
@@ -0,0 +1,354 @@
+// 由Geetest提供 https://docs.geetest.com/sensebot/deploy/client/web
+// "v0.4.9 Geetest Inc."
+
+(function (window) {
+ "use strict";
+ if (typeof window === 'undefined') {
+ throw new Error('Geetest requires browser environment');
+ }
+
+ var document = window.document;
+ var Math = window.Math;
+ var head = document.getElementsByTagName("head")[0];
+
+ function _Object(obj) {
+ this._obj = obj;
+ }
+
+ _Object.prototype = {
+ _each: function (process) {
+ var _obj = this._obj;
+ for (var k in _obj) {
+ if (_obj.hasOwnProperty(k)) {
+ process(k, _obj[k]);
+ }
+ }
+ return this;
+ }
+ };
+
+ function Config(config) {
+ var self = this;
+ new _Object(config)._each(function (key, value) {
+ self[key] = value;
+ });
+ }
+
+ Config.prototype = {
+ api_server: 'api.geetest.com',
+ protocol: 'http://',
+ typePath: '/gettype.php',
+ fallback_config: {
+ slide: {
+ static_servers: ["static.geetest.com", "dn-staticdown.qbox.me"],
+ type: 'slide',
+ slide: '/static/js/geetest.0.0.0.js'
+ },
+ fullpage: {
+ static_servers: ["static.geetest.com", "dn-staticdown.qbox.me"],
+ type: 'fullpage',
+ fullpage: '/static/js/fullpage.0.0.0.js'
+ }
+ },
+ _get_fallback_config: function () {
+ var self = this;
+ if (isString(self.type)) {
+ return self.fallback_config[self.type];
+ } else if (self.new_captcha) {
+ return self.fallback_config.fullpage;
+ } else {
+ return self.fallback_config.slide;
+ }
+ },
+ _extend: function (obj) {
+ var self = this;
+ new _Object(obj)._each(function (key, value) {
+ self[key] = value;
+ })
+ }
+ };
+ var isNumber = function (value) {
+ return (typeof value === 'number');
+ };
+ var isString = function (value) {
+ return (typeof value === 'string');
+ };
+ var isBoolean = function (value) {
+ return (typeof value === 'boolean');
+ };
+ var isObject = function (value) {
+ return (typeof value === 'object' && value !== null);
+ };
+ var isFunction = function (value) {
+ return (typeof value === 'function');
+ };
+ var MOBILE = /Mobi/i.test(navigator.userAgent);
+ var pt = MOBILE ? 3 : 0;
+
+ var callbacks = {};
+ var status = {};
+
+ var nowDate = function () {
+ var date = new Date();
+ var year = date.getFullYear();
+ var month = date.getMonth() + 1;
+ var day = date.getDate();
+ var hours = date.getHours();
+ var minutes = date.getMinutes();
+ var seconds = date.getSeconds();
+
+ if (month >= 1 && month <= 9) {
+ month = '0' + month;
+ }
+ if (day >= 0 && day <= 9) {
+ day = '0' + day;
+ }
+ if (hours >= 0 && hours <= 9) {
+ hours = '0' + hours;
+ }
+ if (minutes >= 0 && minutes <= 9) {
+ minutes = '0' + minutes;
+ }
+ if (seconds >= 0 && seconds <= 9) {
+ seconds = '0' + seconds;
+ }
+ var currentdate = year + '-' + month + '-' + day + " " + hours + ":" + minutes + ":" + seconds;
+ return currentdate;
+ }
+
+ var random = function () {
+ return parseInt(Math.random() * 10000) + (new Date()).valueOf();
+ };
+
+ var loadScript = function (url, cb) {
+ var script = document.createElement("script");
+ script.charset = "UTF-8";
+ script.async = true;
+
+ // 对geetest的静态资源添加 crossOrigin
+ if ( /static\.geetest\.com/g.test(url)) {
+ script.crossOrigin = "anonymous";
+ }
+
+ script.onerror = function () {
+ cb(true);
+ };
+ var loaded = false;
+ script.onload = script.onreadystatechange = function () {
+ if (!loaded &&
+ (!script.readyState ||
+ "loaded" === script.readyState ||
+ "complete" === script.readyState)) {
+
+ loaded = true;
+ setTimeout(function () {
+ cb(false);
+ }, 0);
+ }
+ };
+ script.src = url;
+ head.appendChild(script);
+ };
+
+ var normalizeDomain = function (domain) {
+ // special domain: uems.sysu.edu.cn/jwxt/geetest/
+ // return domain.replace(/^https?:\/\/|\/.*$/g, ''); uems.sysu.edu.cn
+ return domain.replace(/^https?:\/\/|\/$/g, ''); // uems.sysu.edu.cn/jwxt/geetest
+ };
+ var normalizePath = function (path) {
+ path = path.replace(/\/+/g, '/');
+ if (path.indexOf('/') !== 0) {
+ path = '/' + path;
+ }
+ return path;
+ };
+ var normalizeQuery = function (query) {
+ if (!query) {
+ return '';
+ }
+ var q = '?';
+ new _Object(query)._each(function (key, value) {
+ if (isString(value) || isNumber(value) || isBoolean(value)) {
+ q = q + encodeURIComponent(key) + '=' + encodeURIComponent(value) + '&';
+ }
+ });
+ if (q === '?') {
+ q = '';
+ }
+ return q.replace(/&$/, '');
+ };
+ var makeURL = function (protocol, domain, path, query) {
+ domain = normalizeDomain(domain);
+
+ var url = normalizePath(path) + normalizeQuery(query);
+ if (domain) {
+ url = protocol + domain + url;
+ }
+
+ return url;
+ };
+
+ var load = function (config, send, protocol, domains, path, query, cb) {
+ var tryRequest = function (at) {
+
+ var url = makeURL(protocol, domains[at], path, query);
+ loadScript(url, function (err) {
+ if (err) {
+ if (at >= domains.length - 1) {
+ cb(true);
+ // report gettype error
+ if (send) {
+ config.error_code = 508;
+ var url = protocol + domains[at] + path;
+ reportError(config, url);
+ }
+ } else {
+ tryRequest(at + 1);
+ }
+ } else {
+ cb(false);
+ }
+ });
+ };
+ tryRequest(0);
+ };
+
+
+ var jsonp = function (domains, path, config, callback) {
+ if (isObject(config.getLib)) {
+ config._extend(config.getLib);
+ callback(config);
+ return;
+ }
+ if (config.offline) {
+ callback(config._get_fallback_config());
+ return;
+ }
+
+ var cb = "geetest_" + random();
+ window[cb] = function (data) {
+ if (data.status == 'success') {
+ callback(data.data);
+ } else if (!data.status) {
+ callback(data);
+ } else {
+ callback(config._get_fallback_config());
+ }
+ window[cb] = undefined;
+ try {
+ delete window[cb];
+ } catch (e) {
+ }
+ };
+ load(config, true, config.protocol, domains, path, {
+ gt: config.gt,
+ callback: cb
+ }, function (err) {
+ if (err) {
+ callback(config._get_fallback_config());
+ }
+ });
+ };
+
+ var reportError = function (config, url) {
+ load(config, false, config.protocol, ['monitor.geetest.com'], '/monitor/send', {
+ time: nowDate(),
+ captcha_id: config.gt,
+ challenge: config.challenge,
+ pt: pt,
+ exception_url: url,
+ error_code: config.error_code
+ }, function (err) {})
+ }
+
+ var throwError = function (errorType, config) {
+ var errors = {
+ networkError: '网络错误',
+ gtTypeError: 'gt字段不是字符串类型'
+ };
+ if (typeof config.onError === 'function') {
+ config.onError(errors[errorType]);
+ } else {
+ throw new Error(errors[errorType]);
+ }
+ };
+
+ var detect = function () {
+ return window.Geetest || document.getElementById("gt_lib");
+ };
+
+ if (detect()) {
+ status.slide = "loaded";
+ }
+
+ window.initGeetest = function (userConfig, callback) {
+
+ var config = new Config(userConfig);
+
+ if (userConfig.https) {
+ config.protocol = 'https://';
+ } else if (!userConfig.protocol) {
+ config.protocol = window.location.protocol + '//';
+ }
+
+ // for KFC
+ if (userConfig.gt === '050cffef4ae57b5d5e529fea9540b0d1' ||
+ userConfig.gt === '3bd38408ae4af923ed36e13819b14d42') {
+ config.apiserver = 'yumchina.geetest.com/'; // for old js
+ config.api_server = 'yumchina.geetest.com';
+ }
+
+ if(userConfig.gt){
+ window.GeeGT = userConfig.gt
+ }
+
+ if(userConfig.challenge){
+ window.GeeChallenge = userConfig.challenge
+ }
+
+ if (isObject(userConfig.getType)) {
+ config._extend(userConfig.getType);
+ }
+ jsonp((config.api_server_v3 || [config.api_server || config.apiserver]), config.typePath, config, function (newConfig) {
+ var type = newConfig.type;
+ var init = function () {
+ config._extend(newConfig);
+ callback(new window.Geetest(config));
+ };
+
+ callbacks[type] = callbacks[type] || [];
+ var s = status[type] || 'init';
+ if (s === 'init') {
+ status[type] = 'loading';
+
+ callbacks[type].push(init);
+
+ load(config, true, config.protocol, newConfig.static_servers || newConfig.domains, newConfig[type] || newConfig.path, null, function (err) {
+ if (err) {
+ status[type] = 'fail';
+ throwError('networkError', config);
+ } else {
+ status[type] = 'loaded';
+ var cbs = callbacks[type];
+ for (var i = 0, len = cbs.length; i < len; i = i + 1) {
+ var cb = cbs[i];
+ if (isFunction(cb)) {
+ cb();
+ }
+ }
+ callbacks[type] = [];
+ }
+ });
+ } else if (s === "loaded") {
+ init();
+ } else if (s === "fail") {
+ throwError('networkError', config);
+ } else if (s === "loading") {
+ callbacks[type].push(init);
+ }
+ });
+
+ };
+
+
+})(window);
diff --git a/captcha/static/js/index.js b/captcha/static/js/index.js
new file mode 100644
index 0000000..6715151
--- /dev/null
+++ b/captcha/static/js/index.js
@@ -0,0 +1,180 @@
+window.onload = function () {
+ const wait = document.querySelector("#wait")
+ const genBtn = document.querySelector("#gen")
+ const successBtn = document.querySelector("#success")
+ const resultBox = document.querySelector("#result")
+ const resultBtn = document.querySelector("#result-btn")
+ const toastBox = document.querySelector(".toast-box")
+
+ const gtInput = document.querySelector("#gt")
+ const challengeInput = document.querySelector("#challenge")
+ const validateInput = document.querySelector("#validate")
+ const seccodeInput = document.querySelector("#seccode")
+
+ class GeeTest {
+ constructor(gt, challenge) {
+ this.gt = gt;
+ this.challenge = challenge;
+ }
+
+ init(now = false) {
+ initGeetest({
+ gt: this.gt,
+ challenge: this.challenge,
+ offline: false,
+ new_captcha: true,
+
+ product: now ? "bind" : "popup",
+ width: "100%",
+ }, function (captchaObj) {
+ if (now) setTimeout(() => {
+ hide(wait);
+ captchaObj.verify();
+ }, Math.floor(Math.random() * 2000) + 1000);
+ else captchaObj.appendTo("#captcha");
+
+ captchaObj.onReady(() => {
+ if (!now) hide(wait);
+ }).onSuccess(() => {
+ console.log("验证成功");
+ showToastBox("验证成功");
+ if (now) {
+ hide(wait);
+ show(successBtn);
+ }
+ const result = captchaObj.getValidate();
+
+ validateInput.value = result.geetest_validate;
+ seccodeInput.value = result.geetest_seccode;
+
+ show(resultBox)
+ }).onError(err => {
+ console.log("验证失败");
+ console.log(err);
+ showToastBox("验证失败 " + err.msg, 3000);
+ if (now) {
+ hide(wait);
+ show(genBtn);
+ }
+ });
+ });
+ }
+ }
+
+ genBtn.onclick = () => {
+ let gt = gtInput.value;
+ let challenge = challengeInput.value;
+ if (gt === undefined || gt === '' || challenge === undefined || challenge === '') {
+ console.log("gt 和 challenge 不能为空");
+ showToastBox("gt 和 challenge 不能为空", 3000);
+ return;
+ }
+ if (gt.length !== 32 || challenge.length !== 32) {
+ console.log("gt 或 challenge 长度错误");
+ showToastBox("gt 或 challenge 长度错误", 3000);
+ return;
+ }
+
+ hide(genBtn);
+ show(wait);
+
+ new GeeTest(gt, challenge).init(true);
+ }
+
+ const search = location.search;
+
+ if (search !== '') {
+ hide(genBtn);
+ show(wait);
+
+ let gt = '';
+ let challenge = '';
+
+ const arr = search.substring(1).split("&");
+ for (const i in arr) {
+ const t = arr[i].split("=");
+ switch (t[0]) {
+ case "gt":
+ gt = t[1];
+ break;
+ case "challenge":
+ challenge = t[1];
+ break;
+ default:
+ break;
+ }
+ }
+ if (gt !== '' && challenge !== '') {
+ gtInput.value = gt;
+ challengeInput.value = challenge;
+ new GeeTest(gt, challenge).init();
+ } else {
+ console.log("未从URL中找到 gt 与 challenge");
+ hide(wait);
+ show(genBtn);
+ }
+ }
+
+ resultBtn.onclick = () => {
+ const text = "validate=" + validateInput.value + "&seccode=" + seccodeInput.value
+ // const clipboard = navigator.clipboard
+ // if (clipboard === undefined) {
+ // const el = document.createElement('input');
+ // el.setAttribute('value', text);
+ // document.body.appendChild(el);
+ // el.select();
+ // const res = document.execCommand('copy');
+ // document.body.removeChild(el);
+ // showToastBox(res? "复制成功" : "复制失败");
+ // } else clipboard.writeText(text).then(() => {
+ // console.log("复制成功");
+ // showToastBox("复制成功");
+ // }, err => {
+ // console.log("复制失败");
+ // console.log(err);
+ // showToastBox("复制失败");
+ // });
+
+ $.ajax({
+ url: 'feedback',
+ type: 'POST',
+ dataType: 'json',
+ data: {
+ challenge: challengeInput.value,
+ validate: validateInput.value,
+ seccode: seccodeInput.value
+ },
+ success: function (data) {
+ if (data.code === 10003) {
+ showToastBox("提交反馈成功");
+ } else {
+ showToastBox("提交反馈失败");
+ }
+ },
+ error: function (err) {
+ showToastBox('error: ' + err.status + ' ' + err.statusText);
+ }
+ });
+ }
+
+ let timer = null
+
+ function showToastBox(text, timeout = 2000) {
+ toastBox.innerHTML = text;
+ toastBox.style.opacity = 1;
+ toastBox.style.top = '50px';
+ if (timer != null) clearTimeout(timer)
+ timer = setTimeout(() => {
+ toastBox.style.top = '-30px';
+ toastBox.style.opacity = 0;
+ }, timeout)
+ }
+
+ function hide(el) {
+ el.classList.add("hide")
+ }
+
+ function show(el) {
+ el.classList.remove("hide")
+ }
+}
diff --git a/docker/Dockerfile b/docker/Dockerfile
index 5839228..0513a42 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -5,6 +5,9 @@ LABEL AUTHOR = "Lkeme "
ENV USER_NAME='' \
USER_PASSWORD='' \
+ CAPTCHA='0' \
+ CAPTCHA_HOST='0.0.0.0' \
+ CAPTCHA_PORT='50001' \
REPO_URL='https://github.com/' \
CUSTOM_CLONE_URL='https://speed.example.com/example/example.git' \
MIRRORS="0" \
diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh
index e8f6889..5c3cb2a 100644
--- a/docker/entrypoint.sh
+++ b/docker/entrypoint.sh
@@ -86,7 +86,13 @@ case ${VERSION} in
sed -i ''"$(cat /app/profile/user/config/user.ini -n | grep "password = \"\"" | awk '{print $1}')"'c '"$(echo "password = \"${USER_PASSWORD}\"")"'' ${V2_CONIFG_PATH}
fi
- php app.php m:a
+ if [ "$CAPTCHA" == "1" ]; then
+ echo -e "\n ======== \n ${Info} ${GreenBG} 正在使用验证码服务 ${Font} \n ======== \n"
+ echo -e "\n ======== \n ${Info} ${GreenBG} 验证码服务地址:http://${CAPTCHA_HOST}:${CAPTCHA_PORT} ${Font} \n ======== \n"
+ cd ./captcha && php -S $CAPTCHA_HOST:$CAPTCHA_PORT & cd .. && php app.php m:a
+ else
+ php app.php m:a
+ fi
;;
*)
echo -e "\n ======== \n ${Info} ${RedBG} 错误的版本方案选择 ${Font} \n ======== \n"
diff --git a/docs/CAPTCHA.md b/docs/CAPTCHA.md
new file mode 100644
index 0000000..9448e79
--- /dev/null
+++ b/docs/CAPTCHA.md
@@ -0,0 +1,50 @@
+## 关于验证码
+
+> 在登录模块中,账密模式或短信验证码模式可能会遇到验证码,这里将会介绍如何解决验证码问题。
+
+### 开关
+
+```ini
+[login_captcha]
+; 验证码手动识别
+enable = false
+; 验证码手动识别服务地址
+url = "http://localhost:50001"
+```
+
+### 如何开启验证码手动识别服务地址
+
+> 需要手动开启配置开关`enable = true`,并且配置`url`为验证码手动识别服务地址。
+
+#### Docker用户
+
+以外部挂载配置文件为例
+
+```bash
+docker run -itd --rm -e CAPTCHA=1 -e CAPTCHA_HOST=localhost -e CAPTCHA_PORT=50002 -p 50002:50002 -v /path/to/your/confFilePath:/app/profile/user lkeme/bilihelper-personal
+
+-e CAPTCHA=1 # 开启验证码手动识别服务 默认 0
+-e CAPTCHA_HOST=localhost # 默认 0.0.0.0
+-e CAPTCHA_PORT=50002 # 验证码手动识别服务地址 默认 50001 需要注意端口映射关系
+```
+
+
+> 注意:如果你使用的是`docker-compose`,请参考`docker-compose.yml`文件中的`captcha`服务配置。
+
+##### 本地用户
+
+```bash
+cd captcha && php -S localhost:50001
+cd captcha && php -S localhost:50002
+```
+
+> 验证码处理目录在`captcha`目录下,可以自行修改。
+
+
+### 如何使用验证码手动识别服务地址
+
+在开启验证码手动识别服务地址后,登录模块会自动显示手动地址。复制地址到浏览器中打开,会显示相应的界面。
+
+识别后提交反馈,程序会自动进行获取。
+
+> 0.0.0.0是指所有地址,本地以及外网都可以访问,如果你只想本地访问,可以使用`localhost`或者其他内网地址。
diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md
index 33db57c..0da0037 100644
--- a/docs/CHANGELOG.md
+++ b/docs/CHANGELOG.md
@@ -8,6 +8,25 @@
[comment]: <> ()
+## v2.0.7.230324 alpha (2023-03-24)
+
+### Added
+
+- 手动验证码识别
+
+### Changed
+
+- 更新设备信息
+
+### Fixed
+
+-
+
+### Remarks
+
+- 请注意配置文件有所变动,注意更新。
+
+
## v2.0.7.230311 alpha (2023-03-11)
### Added
diff --git a/plugin/AwardRecords/AwardRecords.php b/plugin/AwardRecords/AwardRecords.php
index 5dbe811..d6dc1b7 100644
--- a/plugin/AwardRecords/AwardRecords.php
+++ b/plugin/AwardRecords/AwardRecords.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/plugin/BpConsumption/BpConsumption.php b/plugin/BpConsumption/BpConsumption.php
index a5af312..652d028 100644
--- a/plugin/BpConsumption/BpConsumption.php
+++ b/plugin/BpConsumption/BpConsumption.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -150,4 +150,3 @@ class BpConsumption extends BasePlugin
}
}
-
\ No newline at end of file
diff --git a/plugin/CheckUpdate/CheckUpdate.php b/plugin/CheckUpdate/CheckUpdate.php
index 291fa3e..85ea1b2 100644
--- a/plugin/CheckUpdate/CheckUpdate.php
+++ b/plugin/CheckUpdate/CheckUpdate.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/plugin/DailyGold/DailyGold.php b/plugin/DailyGold/DailyGold.php
index 72e3b00..db7dd34 100644
--- a/plugin/DailyGold/DailyGold.php
+++ b/plugin/DailyGold/DailyGold.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/plugin/GameForecast/GameForecast.php b/plugin/GameForecast/GameForecast.php
index 33fc08c..7f2f2b4 100644
--- a/plugin/GameForecast/GameForecast.php
+++ b/plugin/GameForecast/GameForecast.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -180,4 +180,3 @@ class GameForecast extends BasePlugin
}
}
}
-
\ No newline at end of file
diff --git a/plugin/Judge/Judge.php b/plugin/Judge/Judge.php
index 3d5250b..8279003 100644
--- a/plugin/Judge/Judge.php
+++ b/plugin/Judge/Judge.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/plugin/LiveGoldBox/LiveGoldBox.php b/plugin/LiveGoldBox/LiveGoldBox.php
index 4e7fa37..203260a 100644
--- a/plugin/LiveGoldBox/LiveGoldBox.php
+++ b/plugin/LiveGoldBox/LiveGoldBox.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/plugin/LiveReservation/LiveReservation.php b/plugin/LiveReservation/LiveReservation.php
index 574f9c1..ce474a4 100644
--- a/plugin/LiveReservation/LiveReservation.php
+++ b/plugin/LiveReservation/LiveReservation.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -156,4 +156,3 @@ class LiveReservation extends BasePlugin
}
-
\ No newline at end of file
diff --git a/plugin/LiveSignIn/LiveSignIn.php b/plugin/LiveSignIn/LiveSignIn.php
index 97ae30a..029ad6d 100644
--- a/plugin/LiveSignIn/LiveSignIn.php
+++ b/plugin/LiveSignIn/LiveSignIn.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/plugin/Login/Login.php b/plugin/Login/Login.php
index c12b901..3a26d94 100644
--- a/plugin/Login/Login.php
+++ b/plugin/Login/Login.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -126,10 +126,6 @@ class Login extends BasePlugin
// 二维码模式
$this->qrcodeLogin();
break;
- case 4:
- // 行为验证码模式(暂未开放)
- // self::captchaLogin();
- failExit('此登录模式暂未开放');
default:
failExit('登录模式配置错误');
}
@@ -447,6 +443,22 @@ class Login extends BasePlugin
}
+
+ /**
+ * 验证码登录
+ * @param string $target_url
+ * @return void
+ */
+ protected function captchaLogin(string $target_url): void
+ {
+// $captcha_ori = $this->getCaptcha();
+// $captcha = $this->ocrCaptcha($captcha_ori);
+ $captcha_info = $this->matchCaptcha($target_url);
+ // 暂时不做额外处理
+ $captcha = $this->ocrCaptcha($captcha_info['gt'], $captcha_info['challenge']);
+ $this->accountLogin($captcha['validate'], $captcha['challenge'], $mode = '账密模式(行为验证码)');
+ }
+
/**
* 登录后处理
* @param string $mode
@@ -483,7 +495,10 @@ class Login extends BasePlugin
break;
case -105:
// 需要验证码
- $this->loginFail($mode, '此次登录需要验证码或' . $data['message']);
+ Log::warning("此次请求需要行为验证码");
+ $this->captchaLogin($data['data']['url']);
+ break;
+// $this->loginFail($mode, '此次登录需要验证码或' . $data['message']);
case -629:
// 密码错误
$this->loginFail($mode, $data['message']);
@@ -530,14 +545,14 @@ class Login extends BasePlugin
$password = getConf('login_account.password');
// TODO 冗余
- switch ($mode_id){
+ switch ($mode_id) {
case 1:
if (empty($username) || empty($password)) {
failExit('空白的帐号和口令');
}
break;
case 2:
- if (empty($username) ) {
+ if (empty($username)) {
failExit('空白的帐号');
}
break;
@@ -577,10 +592,13 @@ class Login extends BasePlugin
* 发送短信验证码
* @param string $phone
* @param string $cid
+ * @param string $validate
+ * @param string $challenge
* @return array
*/
- protected function sendSms(string $phone, string $cid): array
+ protected function sendSms(string $phone, string $cid, string $validate = '', string $challenge = '', string $recaptcha_token = ''): array
{
+ // {"code":0,"message":"0","ttl":1,"data":{"is_new":false,"captcha_key":"","recaptcha_url":"https://www.bilibili.com/h5/project-msg-auth/verify?ct=geetest\u0026recaptcha_token=f968b6432dde47a9aa274adfc60b2d1a\u0026gee_gt=1c0ea7c7d47d8126dda19ee3431a5f38\u0026gee_challenge=dec6522102ce0aa5cbdab370930123f8\u0026hash=ef1e5849a6746ad680a1dfa8924da497"}}
// {"code":0,"message":"0","ttl":1,"data":{"is_new":false,"captcha_key":"4e292933816755442c1568e2043b8e41","recaptcha_url":""}}
// {"code":0,"message":"0","ttl":1,"data":{"is_new":false,"captcha_key":"","recaptcha_url":"https://www.bilibili.com/h5/project-msg-auth/verify?ct=geetest\u0026recaptcha_token=ad520c3a4a3c46e29b1974d85efd2c4b\u0026gee_gt=1c0ea7c7d47d8126dda19ee3431a5f38\u0026gee_challenge=c772673050dce482b9f63ff45b681ceb\u0026hash=ea2850a43cc6b4f1f7b925d601098e5e"}}
// TODO 参数位置调整
@@ -589,7 +607,12 @@ class Login extends BasePlugin
'tel' => $phone,
'statistics' => getDevice('app.bili_a.statistics'),
];
-
+ if ($validate != '' && $challenge != '') {
+ $payload['recaptcha_token'] = $recaptcha_token;
+ $payload['gee_validate'] = $validate;
+ $payload['gee_challenge'] = $challenge;
+ $payload['gee_seccode'] = "$validate|jordan";
+ }
$raw = ApiLogin::sendSms($payload);
$response = json_decode($raw, true);
//
@@ -598,9 +621,39 @@ class Login extends BasePlugin
$payload['captcha_key'] = $response['data']['captcha_key'];
return $payload;
}
+ if ($response['code'] == 0 && isset($response['data']['recaptcha_url']) && $response['data']['recaptcha_url'] != '') {
+ Log::warning("此次请求需要行为验证码");
+ $target_url = $response['data']['recaptcha_url'];
+ // 单独处理
+ preg_match('/recaptcha_token=([a-f0-9]+)/', $target_url, $matches);
+ $recaptcha_token = $matches[1];
+
+ $captcha_info = $this->matchCaptcha($target_url);
+ // 暂时不做额外处理
+ $captcha = $this->ocrCaptcha($captcha_info['gt'], $captcha_info['challenge']);
+ $this->sendSms($phone, $cid, $captcha['validate'], $captcha['challenge'], $recaptcha_token);
+ }
+
+
failExit("短信验证码发送失败 $raw");
}
+ /**
+ * @param string $target_url
+ * @return array
+ */
+ protected function matchCaptcha(string $target_url): array
+ {
+ preg_match('/gt=([a-f0-9]+)/', $target_url, $matches);
+ $gt = $matches[1];
+ preg_match('/challenge=([a-f0-9]+)/', $target_url, $matches);
+ $challenge = $matches[1];
+ if (empty($gt) || empty($challenge)) {
+ failExit('提取验证码失败');
+ }
+ return ['gt' => $gt, 'challenge' => $challenge];
+ }
+
/**
* 输入短信验证码
* @param string $msg
@@ -638,18 +691,41 @@ class Login extends BasePlugin
];
}
+
/**
- * 验证码模式
- * @param string $mode
- * @return void
+ * @param string $gt
+ * @param string $challenge
+ * @return array
*/
- protected function captchaLogin(string $mode = '验证码模式'): void
+ protected function ocrCaptcha(string $gt, string $challenge): array
{
-// $captcha_ori = $this->getCaptcha();
-// $captcha = $this->ocrCaptcha($captcha_ori);
-// $this->accountLogin($captcha['validate'], $captcha['challenge'], $mode);
+ if (getConf('login_captcha.url') && getEnable('login_captcha')) {
+ Log::info('请在浏览器中打开以下链接,完成验证码识别');
+ Log::info(getConf('login_captcha.url') . '/geetest?gt=' . $gt . '&challenge=' . $challenge);
+ Log::info('请在2分钟内完成识别操作');
+ // 设置请求时间和时间间隔
+ $maxTime = 120; // 最大请求时间(秒)
+ $interval = 2; // 请求间隔(秒)
+
+ // 循环请求
+ $startTime = time();
+ while (time() - $startTime < $maxTime) {
+ $response = ApiCaptcha::fetch($challenge);
+ if ($response['code'] == 10000) {
+ Log::notice($response['message']);
+ return $response['data'];
+ } else {
+ Log::info($response['message']);
+ }
+ sleep($interval);
+ }
+ failExit('验证码识别超时');
+ } else {
+ failExit('验证码识别并未开启');
+ }
}
+
/**
* 转换Cookie
* @param string $token
diff --git a/plugin/Lottery/Lottery.php b/plugin/Lottery/Lottery.php
index 9a95787..671f0a8 100644
--- a/plugin/Lottery/Lottery.php
+++ b/plugin/Lottery/Lottery.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/plugin/Lottery/LotteryInfo.php b/plugin/Lottery/LotteryInfo.php
index e89b0c7..c4860c8 100644
--- a/plugin/Lottery/LotteryInfo.php
+++ b/plugin/Lottery/LotteryInfo.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/plugin/LoveClub/LoveClub.php b/plugin/LoveClub/LoveClub.php
index f90de84..d5c59a9 100644
--- a/plugin/LoveClub/LoveClub.php
+++ b/plugin/LoveClub/LoveClub.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/plugin/MainSite/MainSite.php b/plugin/MainSite/MainSite.php
index 04d131d..cbd2a6b 100644
--- a/plugin/MainSite/MainSite.php
+++ b/plugin/MainSite/MainSite.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -145,7 +145,6 @@ class MainSite extends BasePlugin
$aids = $this->fetchCustomArchives($actual_num);
// 从二维数组里取出aid
$aids = array_column($aids, 'aid');
- var_dump($aids);
//
Log::info("主站任务: 预投币稿件 " . implode(" ", $aids));
// 投币
diff --git a/plugin/Manga/Manga.php b/plugin/Manga/Manga.php
index 931147e..27ddc72 100644
--- a/plugin/Manga/Manga.php
+++ b/plugin/Manga/Manga.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/plugin/PluginTemplate/PluginTemplate.php b/plugin/PluginTemplate/PluginTemplate.php
index f998737..d30720b 100644
--- a/plugin/PluginTemplate/PluginTemplate.php
+++ b/plugin/PluginTemplate/PluginTemplate.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/plugin/PolishMedal/PolishMedal.php b/plugin/PolishMedal/PolishMedal.php
index d17173f..58d37b1 100644
--- a/plugin/PolishMedal/PolishMedal.php
+++ b/plugin/PolishMedal/PolishMedal.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/plugin/Silver2Coin/Silver2Coin.php b/plugin/Silver2Coin/Silver2Coin.php
index 342b216..3515312 100644
--- a/plugin/Silver2Coin/Silver2Coin.php
+++ b/plugin/Silver2Coin/Silver2Coin.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/plugin/VipPoint/Traits/Bonus.php b/plugin/VipPoint/Traits/Bonus.php
index 9390a4e..6e75377 100644
--- a/plugin/VipPoint/Traits/Bonus.php
+++ b/plugin/VipPoint/Traits/Bonus.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/plugin/VipPoint/Traits/BuyVipMall.php b/plugin/VipPoint/Traits/BuyVipMall.php
index 29c8824..a95bc5f 100644
--- a/plugin/VipPoint/Traits/BuyVipMall.php
+++ b/plugin/VipPoint/Traits/BuyVipMall.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/plugin/VipPoint/Traits/BuyVipProduct.php b/plugin/VipPoint/Traits/BuyVipProduct.php
index 96d3546..f9b21e2 100644
--- a/plugin/VipPoint/Traits/BuyVipProduct.php
+++ b/plugin/VipPoint/Traits/BuyVipProduct.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/plugin/VipPoint/Traits/BuyVipVideo.php b/plugin/VipPoint/Traits/BuyVipVideo.php
index ecc43b0..c9fbbbe 100644
--- a/plugin/VipPoint/Traits/BuyVipVideo.php
+++ b/plugin/VipPoint/Traits/BuyVipVideo.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/plugin/VipPoint/Traits/CommonTaskInfo.php b/plugin/VipPoint/Traits/CommonTaskInfo.php
index 3c0f729..6aaac45 100644
--- a/plugin/VipPoint/Traits/CommonTaskInfo.php
+++ b/plugin/VipPoint/Traits/CommonTaskInfo.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/plugin/VipPoint/Traits/PointInfo.php b/plugin/VipPoint/Traits/PointInfo.php
index ee6fd29..4077e9d 100644
--- a/plugin/VipPoint/Traits/PointInfo.php
+++ b/plugin/VipPoint/Traits/PointInfo.php
@@ -7,7 +7,7 @@ use Bhp\Log\Log;
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/plugin/VipPoint/Traits/Privilege.php b/plugin/VipPoint/Traits/Privilege.php
index 90dcf87..2870fe7 100644
--- a/plugin/VipPoint/Traits/Privilege.php
+++ b/plugin/VipPoint/Traits/Privilege.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/plugin/VipPoint/Traits/SignIn.php b/plugin/VipPoint/Traits/SignIn.php
index 0dc7263..41d120c 100644
--- a/plugin/VipPoint/Traits/SignIn.php
+++ b/plugin/VipPoint/Traits/SignIn.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/plugin/VipPoint/Traits/ViewAnimate.php b/plugin/VipPoint/Traits/ViewAnimate.php
index e5fde82..dfd56f5 100644
--- a/plugin/VipPoint/Traits/ViewAnimate.php
+++ b/plugin/VipPoint/Traits/ViewAnimate.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/plugin/VipPoint/Traits/ViewFilmChannel.php b/plugin/VipPoint/Traits/ViewFilmChannel.php
index cf51274..5f7a1d1 100644
--- a/plugin/VipPoint/Traits/ViewFilmChannel.php
+++ b/plugin/VipPoint/Traits/ViewFilmChannel.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/plugin/VipPoint/Traits/ViewVideo.php b/plugin/VipPoint/Traits/ViewVideo.php
index 1d8792b..3bab165 100644
--- a/plugin/VipPoint/Traits/ViewVideo.php
+++ b/plugin/VipPoint/Traits/ViewVideo.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/plugin/VipPoint/Traits/ViewVipMall.php b/plugin/VipPoint/Traits/ViewVipMall.php
index 34dd823..186b1cf 100644
--- a/plugin/VipPoint/Traits/ViewVipMall.php
+++ b/plugin/VipPoint/Traits/ViewVipMall.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/plugin/VipPoint/VipPoint.php b/plugin/VipPoint/VipPoint.php
index c36636d..861950e 100644
--- a/plugin/VipPoint/VipPoint.php
+++ b/plugin/VipPoint/VipPoint.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/plugin/VipPrivilege/VipPrivilege.php b/plugin/VipPrivilege/VipPrivilege.php
index 1cae0b2..63297d6 100644
--- a/plugin/VipPrivilege/VipPrivilege.php
+++ b/plugin/VipPrivilege/VipPrivilege.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/profile/example/config/user.ini b/profile/example/config/user.ini
index a6c1ed2..2aadc75 100644
--- a/profile/example/config/user.ini
+++ b/profile/example/config/user.ini
@@ -17,7 +17,7 @@ version = 0.0.1
username = ""
password = ""
-; 登录模式/[1.账密模式 2.短信验证码模式 3.扫码模式 4.行为验证码模式(暂未开放)]
+; 登录模式/[1.账密模式 2.短信验证码模式 3.扫码模式]
[login_mode]
mode = 1
@@ -29,6 +29,12 @@ code = 86
[login_check]
phone = true
+[login_captcha]
+; 验证码手动识别
+enable = false
+; 验证码手动识别服务地址
+url = "http://localhost:50001"
+
#######################
# 插件功能设置 #
#######################
diff --git a/profile/example/device/device.yaml b/profile/example/device/device.yaml
index 82d37be..0d6734c 100644
--- a/profile/example/device/device.yaml
+++ b/profile/example/device/device.yaml
@@ -3,8 +3,8 @@ device_version: 0.0.1
app:
bili_a: # Android
package: "tv.danmaku.bili"
- version: "7.20.0"
- build: "7200300"
+ version: "7.22.0"
+ build: "7220300"
channel: "bili"
device: "phone"
mobi_app: "android"
@@ -15,7 +15,7 @@ app:
secret_key: "NTYwYzUyY2NkMjg4ZmVkMDQ1ODU5ZWQxOGJmZmQ5NzM"
app_key_n: "NzgzYmJiNzI2NDQ1MWQ4Mg=="
secret_key_n: "MjY1MzU4M2M4ODczZGVhMjY4YWI5Mzg2OTE4YjFkNjU="
- statistics: '{"appId":1,"platform":3,"version":"7.20.0","abtest":""}'
+ statistics: '{"appId":1,"platform":3,"version":"7.22.0","abtest":""}'
bili_i: # IOS
app_key: "MjdlYjUzZmM5MDU4ZjhjMw=="
secret_key: "YzJlZDUzYTc0ZWVlZmUzY2Y5OWZiZDAxZDhjOWMzNzU="
diff --git a/resources/version.json b/resources/version.json
index 0b4ad51..4df6cde 100644
--- a/resources/version.json
+++ b/resources/version.json
@@ -7,10 +7,10 @@
"dev_raw_url": "https://gh.notifyplus.cf/https://github.com/lkeme/BiliHelper-personal/blob/dev/resources/version.json",
"master_purge_url": "https://cdn.staticaly.com/gh/lkeme/BiliHelper-personal/master/resources/version.json",
"dev_purge_url": "https://cdn.staticaly.com/gh/lkeme/BiliHelper-personal/dev/resources/version.json",
- "version": "2.0.7.230311",
+ "version": "2.0.7.230324",
"des": "程序有更新,请及时线上查看更新哦~",
- "time": "2023年03月11日",
+ "time": "2023年03月24日",
"ini_version": "0.0.1",
"ini_des": "配置有更新,请及时线上查看更新哦~",
- "ini_time": "2023年03月11日"
+ "ini_time": "2023年03月24日"
}
diff --git a/src/Api/Api/Pgc/Activity/Deliver/ApiTask.php b/src/Api/Api/Pgc/Activity/Deliver/ApiTask.php
index 5d98ee4..c402c2a 100644
--- a/src/Api/Api/Pgc/Activity/Deliver/ApiTask.php
+++ b/src/Api/Api/Pgc/Activity/Deliver/ApiTask.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/Api/Api/Pgc/Activity/Score/ApiTask.php b/src/Api/Api/Pgc/Activity/Score/ApiTask.php
index 9254592..b2dce96 100644
--- a/src/Api/Api/Pgc/Activity/Score/ApiTask.php
+++ b/src/Api/Api/Pgc/Activity/Score/ApiTask.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/Api/Api/X/Player/ApiPlayer.php b/src/Api/Api/X/Player/ApiPlayer.php
index 9d29e65..344b006 100644
--- a/src/Api/Api/X/Player/ApiPlayer.php
+++ b/src/Api/Api/X/Player/ApiPlayer.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/Api/Api/X/VipPoint/ApiTask.php b/src/Api/Api/X/VipPoint/ApiTask.php
index 585fdac..0f28256 100644
--- a/src/Api/Api/X/VipPoint/ApiTask.php
+++ b/src/Api/Api/X/VipPoint/ApiTask.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/Api/Credit/ApiJury.php b/src/Api/Credit/ApiJury.php
index b404f49..17f2114 100644
--- a/src/Api/Credit/ApiJury.php
+++ b/src/Api/Credit/ApiJury.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/Api/Custom/ApiCalcSign.php b/src/Api/Custom/ApiCalcSign.php
index dafd809..19b436b 100644
--- a/src/Api/Custom/ApiCalcSign.php
+++ b/src/Api/Custom/ApiCalcSign.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/Api/DynamicSvr/ApiDynamicSvr.php b/src/Api/DynamicSvr/ApiDynamicSvr.php
index 5beaf81..58b6a94 100644
--- a/src/Api/DynamicSvr/ApiDynamicSvr.php
+++ b/src/Api/DynamicSvr/ApiDynamicSvr.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/Api/Esports/ApiGuess.php b/src/Api/Esports/ApiGuess.php
index c2fd2be..ac22ff4 100644
--- a/src/Api/Esports/ApiGuess.php
+++ b/src/Api/Esports/ApiGuess.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -75,4 +75,3 @@ class ApiGuess
}
-
\ No newline at end of file
diff --git a/src/Api/LinkGroup/ApiLoveClub.php b/src/Api/LinkGroup/ApiLoveClub.php
index 6732fc1..fbec772 100644
--- a/src/Api/LinkGroup/ApiLoveClub.php
+++ b/src/Api/LinkGroup/ApiLoveClub.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/Api/Lottery/V1/ApiAward.php b/src/Api/Lottery/V1/ApiAward.php
index 5e0062c..238f2c6 100644
--- a/src/Api/Lottery/V1/ApiAward.php
+++ b/src/Api/Lottery/V1/ApiAward.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/Api/Manga/ApiManga.php b/src/Api/Manga/ApiManga.php
index ff59c0a..1b4f5b4 100644
--- a/src/Api/Manga/ApiManga.php
+++ b/src/Api/Manga/ApiManga.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -62,4 +62,3 @@ class ApiManga
return Request::postJson(true, 'app', $url, Sign::common($payload));
}
}
-
\ No newline at end of file
diff --git a/src/Api/Msg/ApiMsg.php b/src/Api/Msg/ApiMsg.php
index ac014df..9f0e409 100644
--- a/src/Api/Msg/ApiMsg.php
+++ b/src/Api/Msg/ApiMsg.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/Api/Passport/ApiCaptcha.php b/src/Api/Passport/ApiCaptcha.php
index 8a071c8..c5e810d 100644
--- a/src/Api/Passport/ApiCaptcha.php
+++ b/src/Api/Passport/ApiCaptcha.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -56,5 +56,17 @@ class ApiCaptcha
];
return Request::postJson(true,'other', $url, $payload, $headers);
}
+
+ /**
+ * @param string $challenge
+ * @return array
+ */
+ public static function fetch(string $challenge): array
+ {
+ $url = getConf('login_captcha.url') . '/fetch';
+ $payload = [
+ 'challenge' => $challenge,
+ ];
+ return Request::getJson(true, 'other', $url, $payload);
+ }
}
-
\ No newline at end of file
diff --git a/src/Api/Passport/ApiLogin.php b/src/Api/Passport/ApiLogin.php
index 861670a..3b45324 100644
--- a/src/Api/Passport/ApiLogin.php
+++ b/src/Api/Passport/ApiLogin.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -55,7 +55,7 @@ class ApiLogin
*/
public static function sendSms(array $payload): string
{
- $url = 'https://passport.bilibili.com//x/passport-login/sms/send';
+ $url = 'https://passport.bilibili.com/x/passport-login/sms/send';
// {"code":0,"message":"0","ttl":1,"data":{"is_new":false,"captcha_key":"4e292933816755442c1568e2043b8e41","recaptcha_url":""}}
// {"code":0,"message":"0","ttl":1,"data":{"is_new":false,"captcha_key":"","recaptcha_url":"https://www.bilibili.com/h5/project-msg-auth/verify?ct=geetest\u0026recaptcha_token=ad520c3a4a3c46e29b1974d85efd2c4b\u0026gee_gt=1c0ea7c7d47d8126dda19ee3431a5f38\u0026gee_challenge=c772673050dce482b9f63ff45b681ceb\u0026hash=ea2850a43cc6b4f1f7b925d601098e5e"}}
return Request::post('app', $url, Sign::login($payload));
diff --git a/src/Api/Passport/ApiOauth2.php b/src/Api/Passport/ApiOauth2.php
index 1cd30c8..4600ccc 100644
--- a/src/Api/Passport/ApiOauth2.php
+++ b/src/Api/Passport/ApiOauth2.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -128,4 +128,3 @@ class ApiOauth2
}
}
-
\ No newline at end of file
diff --git a/src/Api/PassportTv/ApiQrcode.php b/src/Api/PassportTv/ApiQrcode.php
index 97dbc5a..942fa43 100644
--- a/src/Api/PassportTv/ApiQrcode.php
+++ b/src/Api/PassportTv/ApiQrcode.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -58,4 +58,3 @@ class ApiQrcode
}
}
-
\ No newline at end of file
diff --git a/src/Api/Pay/ApiPay.php b/src/Api/Pay/ApiPay.php
index fe64057..f8cc43e 100644
--- a/src/Api/Pay/ApiPay.php
+++ b/src/Api/Pay/ApiPay.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -79,4 +79,4 @@ class ApiPay
}
-}
\ No newline at end of file
+}
diff --git a/src/Api/Pay/ApiWallet.php b/src/Api/Pay/ApiWallet.php
index 84ce7e7..d1cc610 100644
--- a/src/Api/Pay/ApiWallet.php
+++ b/src/Api/Pay/ApiWallet.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -46,4 +46,4 @@ class ApiWallet
return Request::putJson(true, 'pc', $url, $payload, $headers);
}
-}
\ No newline at end of file
+}
diff --git a/src/Api/Room/V1/ApiArea.php b/src/Api/Room/V1/ApiArea.php
index 8c03231..5e7cd1d 100644
--- a/src/Api/Room/V1/ApiArea.php
+++ b/src/Api/Room/V1/ApiArea.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -32,4 +32,4 @@ class ApiArea
return Request::getJson(true, 'other', $url, $payload);
}
-}
\ No newline at end of file
+}
diff --git a/src/Api/Room/V1/ApiDanMu.php b/src/Api/Room/V1/ApiDanMu.php
index 1b50c14..8dece92 100644
--- a/src/Api/Room/V1/ApiDanMu.php
+++ b/src/Api/Room/V1/ApiDanMu.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -38,4 +38,4 @@ class ApiDanMu
return Request::getJson(true, 'other', $url, $payload);
}
-}
\ No newline at end of file
+}
diff --git a/src/Api/Room/V1/ApiInfo.php b/src/Api/Room/V1/ApiInfo.php
index 0767dcb..929e8f6 100644
--- a/src/Api/Room/V1/ApiInfo.php
+++ b/src/Api/Room/V1/ApiInfo.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/Api/Show/Api/Activity/Fire/Common/ApiEvent.php b/src/Api/Show/Api/Activity/Fire/Common/ApiEvent.php
index eddf22f..6571df4 100644
--- a/src/Api/Show/Api/Activity/Fire/Common/ApiEvent.php
+++ b/src/Api/Show/Api/Activity/Fire/Common/ApiEvent.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/Api/Space/ApiReservation.php b/src/Api/Space/ApiReservation.php
index 98f8d30..c344c70 100644
--- a/src/Api/Space/ApiReservation.php
+++ b/src/Api/Space/ApiReservation.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -67,4 +67,4 @@ class ApiReservation
}
-}
\ No newline at end of file
+}
diff --git a/src/Api/Video/ApiCoin.php b/src/Api/Video/ApiCoin.php
index 0d7831d..4d1b3d4 100644
--- a/src/Api/Video/ApiCoin.php
+++ b/src/Api/Video/ApiCoin.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -81,4 +81,4 @@ class ApiCoin
}
-}
\ No newline at end of file
+}
diff --git a/src/Api/Video/ApiShare.php b/src/Api/Video/ApiShare.php
index a476255..eb9e459 100644
--- a/src/Api/Video/ApiShare.php
+++ b/src/Api/Video/ApiShare.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/Api/Video/ApiVideo.php b/src/Api/Video/ApiVideo.php
index a1ff6eb..d7e2933 100644
--- a/src/Api/Video/ApiVideo.php
+++ b/src/Api/Video/ApiVideo.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/Api/Video/ApiWatch.php b/src/Api/Video/ApiWatch.php
index 9662e28..74833a5 100644
--- a/src/Api/Video/ApiWatch.php
+++ b/src/Api/Video/ApiWatch.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -94,4 +94,4 @@ class ApiWatch
return Request::postJson(true, 'pc', $url, $payload, $headers);
}
-}
\ No newline at end of file
+}
diff --git a/src/Api/Vip/ApiPrivilege.php b/src/Api/Vip/ApiPrivilege.php
index d9b30a3..d34b370 100644
--- a/src/Api/Vip/ApiPrivilege.php
+++ b/src/Api/Vip/ApiPrivilege.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -60,4 +60,4 @@ class ApiPrivilege
return Request::postJson(true, 'pc', $url, $payload, $headers);
}
-}
\ No newline at end of file
+}
diff --git a/src/Api/Vip/ApiUser.php b/src/Api/Vip/ApiUser.php
index c72b6b2..9440ecc 100644
--- a/src/Api/Vip/ApiUser.php
+++ b/src/Api/Vip/ApiUser.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -36,4 +36,4 @@ class ApiUser
// {"code":0,"message":"0","ttl":1,"data":{"mid":1234,"vip_type":2,"vip_status":1,"vip_due_date":1667750400000,"vip_pay_type":0,"theme_type":0,"label":{"text":"年度大会员","label_theme":"annual_vip","text_color":"#FFFFFF","bg_style":1,"bg_color":"#FB7299","border_color":""},"avatar_subscript":1,"avatar_subscript_url":"http://i0.hdslb.com/bfs/vip/icon_Certification_big_member_22_3x.png","nickname_color":"#FB7299","is_new_user":false}}
return Request::getJson(true, 'pc', $url, $payload, $headers);
}
-}
\ No newline at end of file
+}
diff --git a/src/Api/WWW/ApiMain.php b/src/Api/WWW/ApiMain.php
index c03a835..d057070 100644
--- a/src/Api/WWW/ApiMain.php
+++ b/src/Api/WWW/ApiMain.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/Api/XLive/ApiRevenueWallet.php b/src/Api/XLive/ApiRevenueWallet.php
index 317c3e2..abe476f 100644
--- a/src/Api/XLive/ApiRevenueWallet.php
+++ b/src/Api/XLive/ApiRevenueWallet.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -85,4 +85,3 @@ class ApiRevenueWallet
}
-
\ No newline at end of file
diff --git a/src/Api/XLive/ApiXLiveSign.php b/src/Api/XLive/ApiXLiveSign.php
index 94fd3fe..f2ce00e 100644
--- a/src/Api/XLive/ApiXLiveSign.php
+++ b/src/Api/XLive/ApiXLiveSign.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -53,4 +53,4 @@ class ApiXLiveSign
// {"code":0,"message":"0","ttl":1,"data":{"text":"3000点用户经验,2根辣条","specialText":"再签到4天可以获得666银瓜子","allDays":30,"hadSignDays":1,"isBonusDay":0}}
return Request::getJson(true, 'pc', $url, $payload, $headers);
}
-}
\ No newline at end of file
+}
diff --git a/src/Api/XLive/AppRoom/V1/ApiDM.php b/src/Api/XLive/AppRoom/V1/ApiDM.php
index bc70e02..38c274e 100644
--- a/src/Api/XLive/AppRoom/V1/ApiDM.php
+++ b/src/Api/XLive/AppRoom/V1/ApiDM.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/Api/XLive/AppUcenter/V1/ApiFansMedal.php b/src/Api/XLive/AppUcenter/V1/ApiFansMedal.php
index c76304a..4cae1a7 100644
--- a/src/Api/XLive/AppUcenter/V1/ApiFansMedal.php
+++ b/src/Api/XLive/AppUcenter/V1/ApiFansMedal.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -41,4 +41,4 @@ class ApiFansMedal
}
-}
\ No newline at end of file
+}
diff --git a/src/Api/XLive/AppUcenter/V1/ApiUserTask.php b/src/Api/XLive/AppUcenter/V1/ApiUserTask.php
index 20e5d00..ca5d73e 100644
--- a/src/Api/XLive/AppUcenter/V1/ApiUserTask.php
+++ b/src/Api/XLive/AppUcenter/V1/ApiUserTask.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/Api/XLive/DataInterface/V1/HeartBeat/ApiHeartBeat.php b/src/Api/XLive/DataInterface/V1/HeartBeat/ApiHeartBeat.php
index 4c6f977..c25c1c4 100644
--- a/src/Api/XLive/DataInterface/V1/HeartBeat/ApiHeartBeat.php
+++ b/src/Api/XLive/DataInterface/V1/HeartBeat/ApiHeartBeat.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -93,4 +93,4 @@ class ApiHeartBeat
}
return $response['s'];
}
-}
\ No newline at end of file
+}
diff --git a/src/Api/XLive/GeneralInterface/V1/ApiGuardBenefit.php b/src/Api/XLive/GeneralInterface/V1/ApiGuardBenefit.php
index e2a67a7..a561c79 100644
--- a/src/Api/XLive/GeneralInterface/V1/ApiGuardBenefit.php
+++ b/src/Api/XLive/GeneralInterface/V1/ApiGuardBenefit.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/Api/XLive/LotteryInterface/V1/ApiAnchor.php b/src/Api/XLive/LotteryInterface/V1/ApiAnchor.php
index cf479dd..7d9da45 100644
--- a/src/Api/XLive/LotteryInterface/V1/ApiAnchor.php
+++ b/src/Api/XLive/LotteryInterface/V1/ApiAnchor.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/Api/XLive/LotteryInterface/V2/ApiBox.php b/src/Api/XLive/LotteryInterface/V2/ApiBox.php
index 040938b..17d0556 100644
--- a/src/Api/XLive/LotteryInterface/V2/ApiBox.php
+++ b/src/Api/XLive/LotteryInterface/V2/ApiBox.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -56,5 +56,4 @@ class ApiBox
return Request::getJson(true, 'pc', $url, $payload);
}
}
-
-
\ No newline at end of file
+
diff --git a/src/Api/XLive/Revenue/V1/ApiWallet.php b/src/Api/XLive/Revenue/V1/ApiWallet.php
index 8d7dd22..3cd2eb5 100644
--- a/src/Api/XLive/Revenue/V1/ApiWallet.php
+++ b/src/Api/XLive/Revenue/V1/ApiWallet.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/Api/XLive/WebRoom/V1/Index/ApiIndex.php b/src/Api/XLive/WebRoom/V1/Index/ApiIndex.php
index 2bc013d..10f5e29 100644
--- a/src/Api/XLive/WebRoom/V1/Index/ApiIndex.php
+++ b/src/Api/XLive/WebRoom/V1/Index/ApiIndex.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -35,4 +35,4 @@ class ApiIndex
// {"code":0,"message":"0","ttl":1,"data":{"room_info":{"uid":11153765,"room_id":23058,"short_id":3,"title":"哔哩哔哩音悦台","cover":"","tags":"","background":"https://i0.hdslb.com/bfs/live/2836bb7b84c792e2c6aadfd4d1cce13484775fa3.jpg","description":"这里是哔哩哔哩官方音乐台喔!
一起来听音乐吧ε=ε=(ノ≧∇≦)ノ
没想到蒸汽配圣诞下装,意外的很暴露呢=3=
\n","live_status":1,"live_start_time":1642502066,"live_screen_type":0,"lock_status":0,"lock_time":0,"hidden_status":0,"hidden_time":0,"area_id":190,"area_name":"唱见电台","parent_area_id":5,"parent_area_name":"电台","keyframe":"http://i0.hdslb.com/bfs/live-key-frame/keyframe060819060000000230586pqb4d.jpg","special_type":0,"up_session":"204681708782508562","pk_status":0,"is_studio":false,"pendants":{"frame":{"name":"","value":"","desc":""}},"on_voice_join":0,"online":3841,"room_type":{"2-3":0,"3-21":0}},"anchor_info":{"base_info":{"uname":"3号直播间","face":"http://i2.hdslb.com/bfs/face/5d35da6e93fbfb1a77ad6d1f1004b08413913f9a.jpg","gender":"保密","official_info":{"role":1,"title":"哔哩哔哩直播 官方账号","desc":"","is_nft":0,"nft_dmark":"https://i0.hdslb.com/bfs/live/9f176ff49d28c50e9c53ec1c3297bd1ee539b3d6.gif"}},"live_info":{"level":40,"level_color":16746162,"score":255529748,"upgrade_score":0,"current":[25000000,147013810],"next":[],"rank":">10000"},"relation_info":{"attention":247329},"medal_info":{"medal_name":"电音","medal_id":123,"fansclub":1342}},"news_info":{"uid":11153765,"ctime":"2021-09-24 12:49:50","content":"3号大歌厅是音悦台特别推出的测试栏目,23日-25日11点-23点为期3天,希望大家支持!"},"rankdb_info":{"roomid":23058,"rank_desc":"小时总榜","color":"#FB7299","h5_url":"https://live.bilibili.com/p/html/live-app-rankcurrent/index.html?is_live_half_webview=1&hybrid_half_ui=1,5,85p,70p,FFE293,0,30,100,10;2,2,320,100p,FFE293,0,30,100,0;4,2,320,100p,FFE293,0,30,100,0;6,5,65p,60p,FFE293,0,30,100,10;5,5,55p,60p,FFE293,0,30,100,10;3,5,85p,70p,FFE293,0,30,100,10;7,5,65p,60p,FFE293,0,30,100,10;&anchor_uid=11153765&rank_type=master_realtime_hour_room&area_hour=1&area_v2_id=190&area_v2_parent_id=5","web_url":"https://live.bilibili.com/blackboard/room-current-rank.html?rank_type=master_realtime_hour_room&area_hour=1&area_v2_id=190&area_v2_parent_id=5","timestamp":1654686465},"area_rank_info":{"areaRank":{"index":0,"rank":">1000"},"liveRank":{"rank":">10000"}},"battle_rank_entry_info":{"first_rank_img_url":"","rank_name":"尚无段位","show_status":1},"tab_info":{"list":[{"type":"seven-rank","desc":"高能榜","isFirst":1,"isEvent":0,"eventType":"","listType":"","apiPrefix":"","rank_name":"room_7day"},{"type":"guard","desc":"大航海","isFirst":0,"isEvent":0,"eventType":"","listType":"top-list","apiPrefix":"","rank_name":""}]},"activity_init_info":{"eventList":[],"weekInfo":{"bannerInfo":null,"giftName":null},"giftName":null,"lego":{"timestamp":1654686465,"config":"[{\"name\":\"frame-mng\",\"url\":\"https:\\/\\/live.bilibili.com\\/p\\/html\\/live-web-mng\\/index.html?roomid=#roomid#&arae_id=#area_id#&parent_area_id=#parent_area_id#&ruid=#ruid#\",\"startTime\":1559544736,\"endTime\":1877167950,\"type\":\"frame-mng\"},{\"name\":\"s10-fun\",\"target\":\"sidebar\",\"icon\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/activity-plat\\/static\\/20200908\\/3435f7521efc759ae1f90eae5629a8f0\\/HpxrZ7SOT.png\",\"text\":\"\\u7545\\u73a9s10\",\"url\":\"https:\\/\\/live.bilibili.com\\/s10\\/fun\\/index.html?room_id=#roomid#&width=376&height=600&source=sidebar\",\"color\":\"#2e6fc0\",\"startTime\":1600920000,\"endTime\":1604721600,\"parentAreaId\":2,\"areaId\":86},{\"name\":\"genshin-avatar\",\"target\":\"sidebar\",\"icon\":\"https:\\/\\/i0.hdslb.com\\/bfs\\/activity-plat\\/static\\/20210721\\/fa538c98e9e32dc98919db4f2527ad02\\/qWxN1d0ACu.jpg\",\"text\":\"\\u539f\\u77f3\\u798f\\u5229\",\"url\":\"https:\\/\\/live.bilibili.com\\/activity\\/live-activity-full\\/genshin_avatar\\/mobile.html?no-jump=1&room_id=#roomid#&width=376&height=550#\\/\",\"color\":\"#2e6fc0\",\"frameAllowNoBg\":\"1\",\"frameAllowDrag\":\"1\",\"startTime\":1627012800,\"endTime\":1630425540,\"parentAreaId\":3,\"areaId\":321}]"}},"voice_join_info":{"status":{"open":0,"anchor_open":0,"status":0,"uid":0,"user_name":"","head_pic":"","guard":0,"start_at":0,"current_time":1654686465},"icons":{"icon_close":"https://i0.hdslb.com/bfs/live/a176d879dffe8de1586a5eb54c2a08a0c7d31392.png","icon_open":"https://i0.hdslb.com/bfs/live/70f0844c9a12d29db1e586485954290144534be9.png","icon_wait":"https://i0.hdslb.com/bfs/live/1049bb88f1e7afd839cc1de80e13228ccd5807e8.png","icon_starting":"https://i0.hdslb.com/bfs/live/948433d1647a0704f8216f017c406224f9fff518.gif"},"web_share_link":"https://live.bilibili.com/h5/23058"},"ad_banner_info":{"data":[{"id":152654,"title":"夏日歌谣季","location":"room_advertisement","position":3,"pic":"https://i0.hdslb.com/bfs/live/fb53a315289477790a4760561f8e348666d846d4.png","link":"https://live.bilibili.com/blackboard/activity-2WD0tBntYO.html","weight":0,"room_id":0,"up_id":0,"parent_area_id":0,"area_id":0,"live_status":0,"av_id":0,"is_ad":false,"ad_transparent_content":null,"show_ad_icon":false},{"id":153962,"title":"夏日互动派对","location":"room_advertisement","position":4,"pic":"https://i0.hdslb.com/bfs/live/71bedfcd89f065d8d4a45c8d8e88a59b45eac8c4.jpg","link":"https://www.bilibili.com/blackboard/live/activity-k1NFbOeWmt.html","weight":0,"room_id":0,"up_id":0,"parent_area_id":0,"area_id":0,"live_status":0,"av_id":0,"is_ad":false,"ad_transparent_content":null,"show_ad_icon":false},{"id":151469,"title":"万元直播奖金等你瓜分!","location":"room_advertisement","position":5,"pic":"https://i0.hdslb.com/bfs/live/c07bdf3bfd518967bb26bd23a588cce01740944c.jpg","link":"https://www.bilibili.com/blackboard/cxhsy.html","weight":0,"room_id":0,"up_id":0,"parent_area_id":0,"area_id":0,"live_status":0,"av_id":0,"is_ad":false,"ad_transparent_content":null,"show_ad_icon":false}]},"skin_info":{"id":0,"skin_name":"","skin_config":"","show_text":"","skin_url":"","start_time":0,"end_time":0,"current_time":1654686465},"web_banner_info":{"id":0,"title":"","left":"","right":"","jump_url":"","bg_color":"","hover_color":"","text_bg_color":"","text_hover_color":"","link_text":"","link_color":"","input_color":"","input_text_color":"","input_hover_color":"","input_border_color":"","input_search_color":""},"lol_info":{"lol_activity":{"status":0,"guess_cover":"http://i0.hdslb.com/bfs/live/61d1c4bcce470080a5408d6c03b7b48e0a0fa8d7.png","vote_cover":"https://i0.hdslb.com/bfs/activity-plat/static/20190930/4ae8d4def1bbff9483154866490975c2/oWyasOpox.png","vote_h5_url":"https://live.bilibili.com/p/html/live-app-wishhelp/index.html?is_live_half_webview=1&hybrid_biz=live-app-wishhelp&hybrid_rotate_d=1&hybrid_half_ui=1,3,100p,360,0c1333,0,30,100;2,2,375,100p,0c1333,0,30,100;3,3,100p,360,0c1333,0,30,100;4,2,375,100p,0c1333,0,30,100;5,3,100p,360,0c1333,0,30,100;6,3,100p,360,0c1333,0,30,100;7,3,100p,360,0c1333,0,30,100;8,3,100p,360,0c1333,0,30,100;","vote_use_h5":true}},"pk_info":null,"battle_info":null,"silent_room_info":{"type":"","level":0,"second":0,"expire_time":0},"switch_info":{"close_guard":false,"close_gift":false,"close_online":false,"close_danmaku":false},"record_switch_info":{"record_tab":false},"room_config_info":{"dm_text":"发个弹幕呗~"},"gift_memory_info":{"list":null},"new_switch_info":{"room-socket":1,"room-prop-send":1,"room-sailing":1,"room-info-popularity":1,"room-danmaku-editor":1,"room-effect":1,"room-fans_medal":1,"room-report":1,"room-feedback":1,"room-player-watermark":1,"room-recommend-live_off":1,"room-activity":1,"room-web_banner":1,"room-silver_seeds-box":1,"room-wishing_bottle":1,"room-board":1,"room-supplication":1,"room-hour_rank":1,"room-week_rank":1,"room-anchor_rank":1,"room-info-integral":1,"room-super-chat":1,"room-tab":1,"room-hot-rank":1,"fans-medal-progress":1,"gift-bay-screen":1,"room-enter":1,"room-my-idol":1,"room-topic":1,"fans-club":1},"super_chat_info":{"status":1,"jump_url":"https://live.bilibili.com/p/html/live-app-superchat2/index.html?is_live_half_webview=1&hybrid_half_ui=1,3,100p,70p,ffffff,0,30,100,12,0;2,2,375,100p,ffffff,0,30,100,0,0;3,3,100p,70p,ffffff,0,30,100,12,0;4,2,375,100p,ffffff,0,30,100,0,0;5,3,100p,60p,ffffff,0,30,100,12,0;6,3,100p,60p,ffffff,0,30,100,12,0;7,3,100p,60p,ffffff,0,30,100,12,0","icon":"https://i0.hdslb.com/bfs/live/0a9ebd72c76e9cbede9547386dd453475d4af6fe.png","ranked_mark":0,"message_list":[]},"online_gold_rank_info_v2":{"list":[{"uid":87212425,"face":"http://i0.hdslb.com/bfs/face/member/noface.jpg","uname":"我家的大懒猫","score":"129","rank":1,"guard_level":0},{"uid":6331378,"face":"http://i1.hdslb.com/bfs/face/95d0f044829772cfc871008b56a3e8543f6d846f.jpg","uname":"伊卡萌神","score":"109","rank":2,"guard_level":0},{"uid":8604164,"face":"http://i2.hdslb.com/bfs/face/87a572e9203955777a2c7b8cbb6f00b863a015e6.jpg","uname":"我太伤心了","score":"100","rank":3,"guard_level":0},{"uid":3051401,"face":"http://i2.hdslb.com/bfs/face/784c71adbfc68558f62f79b8a4e3c93a77ec52a9.jpg","uname":"百合天堂","score":"59","rank":4,"guard_level":0},{"uid":10113007,"face":"http://i1.hdslb.com/bfs/face/26a519556ea5b072a9c843f7d28fe0784bc55671.jpg","uname":"乃木坂七花骑","score":"57","rank":5,"guard_level":0},{"uid":27108173,"face":"http://i2.hdslb.com/bfs/face/30cd9328b0dea0303b633dd59fae0ffac94012a0.jpg","uname":"拍楼上柰子","score":"46","rank":6,"guard_level":0},{"uid":17256283,"face":"http://i1.hdslb.com/bfs/face/57b496ebadacf059f1475f164dabfbf918ec4189.jpg","uname":"MJ.King","score":"45","rank":7,"guard_level":0}]},"dm_emoticon_info":{"is_open_emoticon":1,"is_shield_emoticon":0},"dm_tag_info":{"dm_tag":0,"platform":[],"extra":"","dm_chronos_extra":"","dm_mode":[],"dm_setting_switch":0,"material_conf":null},"topic_info":{"topic_id":0,"topic_name":""},"game_info":{"game_status":0},"watched_show":{"switch":true,"num":1321,"text_small":"1321","text_large":"1321人看过","icon":"","icon_location":0,"icon_web":""},"topic_room_info":{"interactive_h5_url":"","watermark":1},"show_reserve_status":false,"second_create_info":{"click_permission":0},"video_connection_info":null,"player_throttle_info":{"status":1,"normal_sleep_time":1800,"fullscreen_sleep_time":3600,"tab_sleep_time":1800,"prompt_time":30},"guard_info":{"count":0,"anchor_guard_achieve_level":0},"hot_rank_info":null}}
return Request::getJson(true, 'other', $url, $payload);
}
-}
\ No newline at end of file
+}
diff --git a/src/Bootstrap/Bootstrap.php b/src/Bootstrap/Bootstrap.php
index da6685e..4846537 100644
--- a/src/Bootstrap/Bootstrap.php
+++ b/src/Bootstrap/Bootstrap.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -102,4 +102,4 @@ class Bootstrap extends SingleTon
{
Console::getInstance()->register();
}
-}
\ No newline at end of file
+}
diff --git a/src/Cache/Cache.php b/src/Cache/Cache.php
index 9eba319..2baf6c2 100644
--- a/src/Cache/Cache.php
+++ b/src/Cache/Cache.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/Config/Config.php b/src/Config/Config.php
index 1c79cc2..b494b8e 100644
--- a/src/Config/Config.php
+++ b/src/Config/Config.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/Console/Command/AppCommand.php b/src/Console/Command/AppCommand.php
index 6ed04bf..eed0af2 100644
--- a/src/Console/Command/AppCommand.php
+++ b/src/Console/Command/AppCommand.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -69,4 +69,4 @@ class AppCommand extends Command
//
Task::execTasks();
}
-}
\ No newline at end of file
+}
diff --git a/src/Console/Command/DebugCommand.php b/src/Console/Command/DebugCommand.php
index d6caad0..ea8e065 100644
--- a/src/Console/Command/DebugCommand.php
+++ b/src/Console/Command/DebugCommand.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/Console/Command/RestoreCommand.php b/src/Console/Command/RestoreCommand.php
index 5c6614d..914f309 100644
--- a/src/Console/Command/RestoreCommand.php
+++ b/src/Console/Command/RestoreCommand.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -54,4 +54,4 @@ final class RestoreCommand extends Command
// 清理排程文件
// 清理缓存文件
}
-}
\ No newline at end of file
+}
diff --git a/src/Console/Command/ScriptCommand.php b/src/Console/Command/ScriptCommand.php
index df3be39..eaad681 100644
--- a/src/Console/Command/ScriptCommand.php
+++ b/src/Console/Command/ScriptCommand.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -51,4 +51,4 @@ final class ScriptCommand extends Command
{
Log::info("执行 $this->desc");
}
-}
\ No newline at end of file
+}
diff --git a/src/Console/Console.php b/src/Console/Console.php
index 2ab612d..6e298e1 100644
--- a/src/Console/Console.php
+++ b/src/Console/Console.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/Core/Core.php b/src/Core/Core.php
index a6ce109..1aac663 100644
--- a/src/Core/Core.php
+++ b/src/Core/Core.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -103,4 +103,4 @@ class Core extends SingleTon
}
-}
\ No newline at end of file
+}
diff --git a/src/Device/Device.php b/src/Device/Device.php
index d0b13b1..c08d8ee 100644
--- a/src/Device/Device.php
+++ b/src/Device/Device.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/Env/Env.php b/src/Env/Env.php
index 842c1e1..8ef966a 100644
--- a/src/Env/Env.php
+++ b/src/Env/Env.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/FilterWords/FilterWords.php b/src/FilterWords/FilterWords.php
index c67fb65..d653055 100644
--- a/src/FilterWords/FilterWords.php
+++ b/src/FilterWords/FilterWords.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -40,4 +40,3 @@ class FilterWords extends BaseResource
return str_replace("\\", "/", APP_RESOURCES_PATH . $filename);
}
}
-
\ No newline at end of file
diff --git a/src/Helpers.php b/src/Helpers.php
index 1f85066..bef1b40 100644
--- a/src/Helpers.php
+++ b/src/Helpers.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/Log/Log.php b/src/Log/Log.php
index e1695a8..e4a7244 100644
--- a/src/Log/Log.php
+++ b/src/Log/Log.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/Notice/Notice.php b/src/Notice/Notice.php
index 9e79dda..14b6d14 100644
--- a/src/Notice/Notice.php
+++ b/src/Notice/Notice.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/Plugin/BasePlugin.php b/src/Plugin/BasePlugin.php
index 1e48891..47a44da 100644
--- a/src/Plugin/BasePlugin.php
+++ b/src/Plugin/BasePlugin.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -21,5 +21,4 @@ abstract class BasePlugin
{
use BasePluginInfo;
}
-
-
\ No newline at end of file
+
diff --git a/src/Plugin/BasePluginInfo.php b/src/Plugin/BasePluginInfo.php
index 69806a5..7d3f83a 100644
--- a/src/Plugin/BasePluginInfo.php
+++ b/src/Plugin/BasePluginInfo.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -138,4 +138,4 @@ trait BasePluginInfo
return $name . $value;
}
-}
\ No newline at end of file
+}
diff --git a/src/Plugin/BasePluginRW.php b/src/Plugin/BasePluginRW.php
index 48524e0..c4f1939 100644
--- a/src/Plugin/BasePluginRW.php
+++ b/src/Plugin/BasePluginRW.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -23,5 +23,4 @@ abstract class BasePluginRW extends BaseResourcePoly
{
use BasePluginInfo;
}
-
-
\ No newline at end of file
+
diff --git a/src/Plugin/Plugin.php b/src/Plugin/Plugin.php
index 84e7cdc..f54d7a4 100644
--- a/src/Plugin/Plugin.php
+++ b/src/Plugin/Plugin.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -240,4 +240,4 @@ class Plugin extends SingleTon
}
}
-}
\ No newline at end of file
+}
diff --git a/src/Request/MultiRequest.php b/src/Request/MultiRequest.php
index 376e58b..50db72b 100644
--- a/src/Request/MultiRequest.php
+++ b/src/Request/MultiRequest.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -161,4 +161,4 @@ class MultiRequest
}
-}
\ No newline at end of file
+}
diff --git a/src/Request/Request.php b/src/Request/Request.php
index 875598d..4a56f73 100644
--- a/src/Request/Request.php
+++ b/src/Request/Request.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/Schedule/Schedule.php b/src/Schedule/Schedule.php
index 0466f84..9d4dec8 100644
--- a/src/Schedule/Schedule.php
+++ b/src/Schedule/Schedule.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/Sign/Sign.php b/src/Sign/Sign.php
index cd14e6e..71120c1 100644
--- a/src/Sign/Sign.php
+++ b/src/Sign/Sign.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/Task/Task.php b/src/Task/Task.php
index 8da2657..a5e76b7 100644
--- a/src/Task/Task.php
+++ b/src/Task/Task.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/TaskQueue/TaskQueue.php b/src/TaskQueue/TaskQueue.php
index b9b3b57..22c1f26 100644
--- a/src/TaskQueue/TaskQueue.php
+++ b/src/TaskQueue/TaskQueue.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -117,4 +117,3 @@ class TaskQueue extends SingleTon
return basename(str_replace('\\', '/', __CLASS__));
}
}
-
\ No newline at end of file
diff --git a/src/TimeLock/TimeLock.php b/src/TimeLock/TimeLock.php
index 3f526d7..220deab 100644
--- a/src/TimeLock/TimeLock.php
+++ b/src/TimeLock/TimeLock.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -195,4 +195,3 @@ class TimeLock extends SingleTon
}
-
\ No newline at end of file
diff --git a/src/User/User.php b/src/User/User.php
index c8600f6..d4ead7c 100644
--- a/src/User/User.php
+++ b/src/User/User.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -17,7 +17,7 @@
namespace Bhp\User;
-use Bhp\Api\Vip\ApiUser;
+use Bhp\Api\Vip\ApiOcr;
use Bhp\Log\Log;
use Bhp\Util\Common\Common;
use Bhp\Util\DesignPattern\SingleTon;
@@ -61,7 +61,7 @@ class User extends SingleTon
*/
public static function isVip(string $title = '用户信息', array $scope = [1, 2], string $info = '大会员'): bool
{
- $response = ApiUser::userInfo();
+ $response = ApiOcr::userInfo();
//
if ($response['code']) {
Log::warning("$title: 获取大会员信息失败 {$response['code']} -> {$response['message']}");
diff --git a/src/Util/ArrayR/ArrayR.php b/src/Util/ArrayR/ArrayR.php
index d1c3add..ad248ce 100644
--- a/src/Util/ArrayR/ArrayR.php
+++ b/src/Util/ArrayR/ArrayR.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/Util/AsciiTable/AsciiTable.php b/src/Util/AsciiTable/AsciiTable.php
index 765c7ef..6a89d34 100644
--- a/src/Util/AsciiTable/AsciiTable.php
+++ b/src/Util/AsciiTable/AsciiTable.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -371,4 +371,4 @@ class AsciiTable
}
return $th_list;
}
-}
\ No newline at end of file
+}
diff --git a/src/Util/Common/Common.php b/src/Util/Common/Common.php
index 1376bd2..c5f3abb 100644
--- a/src/Util/Common/Common.php
+++ b/src/Util/Common/Common.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/Util/DesignPattern/SingleTon.php b/src/Util/DesignPattern/SingleTon.php
index 8d75239..78e8d35 100644
--- a/src/Util/DesignPattern/SingleTon.php
+++ b/src/Util/DesignPattern/SingleTon.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -86,4 +86,4 @@ class SingleTon
}
return self::$_instances[$className];
}
-}
\ No newline at end of file
+}
diff --git a/src/Util/Exceptions/GetConfigException.php b/src/Util/Exceptions/GetConfigException.php
index 15a2bc1..085ae60 100644
--- a/src/Util/Exceptions/GetConfigException.php
+++ b/src/Util/Exceptions/GetConfigException.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -31,4 +31,4 @@ class GetConfigException extends Exception
{
parent::__construct($message, $code, $previous);
}
-}
\ No newline at end of file
+}
diff --git a/src/Util/Exceptions/HttpClientInitException.php b/src/Util/Exceptions/HttpClientInitException.php
index e38dfac..9b399f9 100644
--- a/src/Util/Exceptions/HttpClientInitException.php
+++ b/src/Util/Exceptions/HttpClientInitException.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -31,4 +31,4 @@ class HttpClientInitException extends Exception
{
parent::__construct($message, $code, $previous);
}
-}
\ No newline at end of file
+}
diff --git a/src/Util/Exceptions/MethodNotFoundException.php b/src/Util/Exceptions/MethodNotFoundException.php
index 9f4da2f..a196145 100644
--- a/src/Util/Exceptions/MethodNotFoundException.php
+++ b/src/Util/Exceptions/MethodNotFoundException.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -32,5 +32,4 @@ class MethodNotFoundException extends Exception
parent::__construct($message, $code, $previous);
}
}
-
-
\ No newline at end of file
+
diff --git a/src/Util/Exceptions/NoLoginException.php b/src/Util/Exceptions/NoLoginException.php
index 63b3dcc..17e7bec 100644
--- a/src/Util/Exceptions/NoLoginException.php
+++ b/src/Util/Exceptions/NoLoginException.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/Util/Exceptions/ResponseEmptyException.php b/src/Util/Exceptions/ResponseEmptyException.php
index 092c4d9..4094497 100644
--- a/src/Util/Exceptions/ResponseEmptyException.php
+++ b/src/Util/Exceptions/ResponseEmptyException.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -31,4 +31,4 @@ class ResponseEmptyException extends Exception
{
parent::__construct($message, $code, $previous);
}
-}
\ No newline at end of file
+}
diff --git a/src/Util/Exceptions/SingletonException.php b/src/Util/Exceptions/SingletonException.php
index 726cda7..ea20bd1 100644
--- a/src/Util/Exceptions/SingletonException.php
+++ b/src/Util/Exceptions/SingletonException.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -31,4 +31,4 @@ class SingletonException extends Exception
{
parent::__construct($message, $code, $previous);
}
-}
\ No newline at end of file
+}
diff --git a/src/Util/Exceptions/TaskException.php b/src/Util/Exceptions/TaskException.php
index 23e6462..9289fd2 100644
--- a/src/Util/Exceptions/TaskException.php
+++ b/src/Util/Exceptions/TaskException.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/Util/Fake/Fake.php b/src/Util/Fake/Fake.php
index d91a811..21069d7 100644
--- a/src/Util/Fake/Fake.php
+++ b/src/Util/Fake/Fake.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/Util/Os/File.php b/src/Util/Os/File.php
index 7793ef9..eb8adef 100644
--- a/src/Util/Os/File.php
+++ b/src/Util/Os/File.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -260,4 +260,4 @@ class File
}
return false;
}
-}
\ No newline at end of file
+}
diff --git a/src/Util/Os/Path.php b/src/Util/Os/Path.php
index d8e9c3a..19f3ce2 100644
--- a/src/Util/Os/Path.php
+++ b/src/Util/Os/Path.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -56,4 +56,4 @@ class Path
}
-}
\ No newline at end of file
+}
diff --git a/src/Util/Qrcode/Lib/Constants.php b/src/Util/Qrcode/Lib/Constants.php
index 32b2712..d72cdd8 100644
--- a/src/Util/Qrcode/Lib/Constants.php
+++ b/src/Util/Qrcode/Lib/Constants.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/Util/Qrcode/Lib/FrameFiller.php b/src/Util/Qrcode/Lib/FrameFiller.php
index 67079ae..5de774f 100644
--- a/src/Util/Qrcode/Lib/FrameFiller.php
+++ b/src/Util/Qrcode/Lib/FrameFiller.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/Util/Qrcode/Lib/QrBitStream.php b/src/Util/Qrcode/Lib/QrBitStream.php
index 3334d9d..7f253d6 100644
--- a/src/Util/Qrcode/Lib/QrBitStream.php
+++ b/src/Util/Qrcode/Lib/QrBitStream.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -197,4 +197,4 @@ class QrBitStream
return $data;
}
-}
\ No newline at end of file
+}
diff --git a/src/Util/Qrcode/Lib/QrCode.php b/src/Util/Qrcode/Lib/QrCode.php
index 7e3bbee..69b3751 100644
--- a/src/Util/Qrcode/Lib/QrCode.php
+++ b/src/Util/Qrcode/Lib/QrCode.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/Util/Qrcode/Lib/QrEncode.php b/src/Util/Qrcode/Lib/QrEncode.php
index d4cdcc6..0420455 100644
--- a/src/Util/Qrcode/Lib/QrEncode.php
+++ b/src/Util/Qrcode/Lib/QrEncode.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/Util/Qrcode/Lib/QrImage.php b/src/Util/Qrcode/Lib/QrImage.php
index 83993ac..0feff00 100644
--- a/src/Util/Qrcode/Lib/QrImage.php
+++ b/src/Util/Qrcode/Lib/QrImage.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -86,4 +86,4 @@ class QrImage
return $target_image;
}
-}
\ No newline at end of file
+}
diff --git a/src/Util/Qrcode/Lib/QrInput.php b/src/Util/Qrcode/Lib/QrInput.php
index 62cecb9..9b7421e 100644
--- a/src/Util/Qrcode/Lib/QrInput.php
+++ b/src/Util/Qrcode/Lib/QrInput.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/Util/Qrcode/Lib/QrInputItem.php b/src/Util/Qrcode/Lib/QrInputItem.php
index 529e4f5..bfd9362 100644
--- a/src/Util/Qrcode/Lib/QrInputItem.php
+++ b/src/Util/Qrcode/Lib/QrInputItem.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/Util/Qrcode/Lib/QrMask.php b/src/Util/Qrcode/Lib/QrMask.php
index 5b7e331..3a150ea 100644
--- a/src/Util/Qrcode/Lib/QrMask.php
+++ b/src/Util/Qrcode/Lib/QrMask.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/Util/Qrcode/Lib/QrRawCode.php b/src/Util/Qrcode/Lib/QrRawCode.php
index 4515b76..e35fa4e 100644
--- a/src/Util/Qrcode/Lib/QrRawCode.php
+++ b/src/Util/Qrcode/Lib/QrRawCode.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/Util/Qrcode/Lib/QrRs.php b/src/Util/Qrcode/Lib/QrRs.php
index cce14c7..b628acb 100644
--- a/src/Util/Qrcode/Lib/QrRs.php
+++ b/src/Util/Qrcode/Lib/QrRs.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -41,4 +41,4 @@ class QrRs
return $rs;
}
-}
\ No newline at end of file
+}
diff --git a/src/Util/Qrcode/Lib/QrRsBlock.php b/src/Util/Qrcode/Lib/QrRsBlock.php
index 6689708..7e8e28e 100644
--- a/src/Util/Qrcode/Lib/QrRsBlock.php
+++ b/src/Util/Qrcode/Lib/QrRsBlock.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/Util/Qrcode/Lib/QrRsItem.php b/src/Util/Qrcode/Lib/QrRsItem.php
index cc42115..b2e6325 100644
--- a/src/Util/Qrcode/Lib/QrRsItem.php
+++ b/src/Util/Qrcode/Lib/QrRsItem.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -170,4 +170,4 @@ class QrRsItem
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/Util/Qrcode/Lib/QrSpec.php b/src/Util/Qrcode/Lib/QrSpec.php
index ae92778..4eb5be2 100644
--- a/src/Util/Qrcode/Lib/QrSpec.php
+++ b/src/Util/Qrcode/Lib/QrSpec.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -597,4 +597,4 @@ class QrSpec
return ($spec[0] + $spec[3]) * $spec[2];
}
-}
\ No newline at end of file
+}
diff --git a/src/Util/Qrcode/Lib/QrSplit.php b/src/Util/Qrcode/Lib/QrSplit.php
index 655bff7..8343b8f 100644
--- a/src/Util/Qrcode/Lib/QrSplit.php
+++ b/src/Util/Qrcode/Lib/QrSplit.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/Util/Qrcode/Lib/QrStr.php b/src/Util/Qrcode/Lib/QrStr.php
index e95719d..2f1cff3 100644
--- a/src/Util/Qrcode/Lib/QrStr.php
+++ b/src/Util/Qrcode/Lib/QrStr.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -31,4 +31,4 @@ class QrStr
{
$src_tab[$y] = substr_replace($src_tab[$y], ($replLen !== false) ? substr($repl, 0, $replLen) : $repl, $x, ($replLen !== false) ? $replLen : strlen($repl));
}
-}
\ No newline at end of file
+}
diff --git a/src/Util/Qrcode/Lib/QrTools.php b/src/Util/Qrcode/Lib/QrTools.php
index 9349e56..67b4002 100644
--- a/src/Util/Qrcode/Lib/QrTools.php
+++ b/src/Util/Qrcode/Lib/QrTools.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/Util/Qrcode/Qrcode.php b/src/Util/Qrcode/Qrcode.php
index 4999c4e..a010bd8 100644
--- a/src/Util/Qrcode/Qrcode.php
+++ b/src/Util/Qrcode/Qrcode.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/src/Util/Resource/BaseResource.php b/src/Util/Resource/BaseResource.php
index ee3148d..c2943df 100644
--- a/src/Util/Resource/BaseResource.php
+++ b/src/Util/Resource/BaseResource.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -151,4 +151,4 @@ abstract class BaseResource extends SingleTon
*/
abstract protected function getFilePath(string $filename): string;
-}
\ No newline at end of file
+}
diff --git a/src/Util/Resource/BaseResourcePoly.php b/src/Util/Resource/BaseResourcePoly.php
index db34f2f..3124fbe 100644
--- a/src/Util/Resource/BaseResourcePoly.php
+++ b/src/Util/Resource/BaseResourcePoly.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -150,4 +150,4 @@ abstract class BaseResourcePoly
*/
abstract protected function getFilePath(string $filename): string;
-}
\ No newline at end of file
+}
diff --git a/src/Util/Resource/Collection.php b/src/Util/Resource/Collection.php
index 3db27a7..1f15cde 100644
--- a/src/Util/Resource/Collection.php
+++ b/src/Util/Resource/Collection.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -215,4 +215,4 @@ class Collection extends \Toolkit\Stdlib\Std\Collection
'allowed_classes' => self::class
]);
}
-}
\ No newline at end of file
+}
diff --git a/src/Util/Resource/CollectionInterface.php b/src/Util/Resource/CollectionInterface.php
index 3c45701..a0f3fb5 100644
--- a/src/Util/Resource/CollectionInterface.php
+++ b/src/Util/Resource/CollectionInterface.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -59,4 +59,4 @@ interface CollectionInterface extends ArrayAccess, Countable, IteratorAggregate,
* clear all data
*/
public function clear(): void;
-}
\ No newline at end of file
+}
diff --git a/src/Util/Resource/Resource.php b/src/Util/Resource/Resource.php
index 61e96a2..c16ff0e 100644
--- a/src/Util/Resource/Resource.php
+++ b/src/Util/Resource/Resource.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -106,4 +106,3 @@ class Resource extends Collection
}
-
\ No newline at end of file
diff --git a/src/Util/UUID/UUID.php b/src/Util/UUID/UUID.php
index fa0f18b..65d30b2 100644
--- a/src/Util/UUID/UUID.php
+++ b/src/Util/UUID/UUID.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
* Source: https://raw.githubusercontent.com/abmmhasan/UUID/main/src/Uuid.php
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
diff --git a/src/core/Core.php b/src/core/Core.php
index a6ce109..1aac663 100644
--- a/src/core/Core.php
+++ b/src/core/Core.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -103,4 +103,4 @@ class Core extends SingleTon
}
-}
\ No newline at end of file
+}
diff --git a/tests/AsciiTableTest.php b/tests/AsciiTableTest.php
index d6ab240..a8a7607 100644
--- a/tests/AsciiTableTest.php
+++ b/tests/AsciiTableTest.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
diff --git a/tests/bootstrap.php b/tests/bootstrap.php
index c6d6206..4bfa96c 100644
--- a/tests/bootstrap.php
+++ b/tests/bootstrap.php
@@ -5,7 +5,7 @@
* Author: Lkeme
* License: The MIT License
* Email: Useri@live.cn
- * Updated: 2022 ~ 2023
+ * Updated: 2023 ~ 2024
*
* _____ _ _ _ _ _ _____ _ _____ _____ _____
* | _ \ | | | | | | | | | | | ____| | | | _ \ | ____| | _ \ & /l、
@@ -38,4 +38,4 @@ if (is_file(dirname(__DIR__, 3) . '/autoload.php')) {
require dirname(__DIR__, 3) . '/autoload.php';
} elseif (is_file(dirname(__DIR__) . '/vendor/autoload.php')) {
require dirname(__DIR__) . '/vendor/autoload.php';
-}
\ No newline at end of file
+}