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 +}