From eb0c55998b3d2d048aff3880d0e8f33e13ffb9f2 Mon Sep 17 00:00:00 2001 From: KimigaiiWuyi <444835641@qq.com> Date: Thu, 23 Nov 2023 04:22:19 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20=E4=BF=AE=E5=A4=8D`core=E5=BA=94?= =?UTF-8?q?=E7=94=A8=E8=AE=BE=E7=BD=AE=E4=BB=A3=E7=90=86`=E7=9A=84git?= =?UTF-8?q?=E9=93=BE=E6=8E=A5=E8=AF=86=E5=88=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gsuid_core/utils/api/mys/models.py | 45 +++++++++++++++++++++ gsuid_core/utils/api/mys/request.py | 5 ++- gsuid_core/utils/plugins_update/_plugins.py | 16 ++++++-- 3 files changed, 61 insertions(+), 5 deletions(-) diff --git a/gsuid_core/utils/api/mys/models.py b/gsuid_core/utils/api/mys/models.py index 9cd8ce9..7befc3c 100644 --- a/gsuid_core/utils/api/mys/models.py +++ b/gsuid_core/utils/api/mys/models.py @@ -16,6 +16,51 @@ else: # 玩家、武器、圣遗物、角色模型 +class PostDrawRole(TypedDict): + role_id: int + name: str + jump_type: str + jump_target: str + jump_start_time: str + jump_end_time: str + role_gender: int + take_picture: str + gal_xml: str + gal_resource: str + is_partake: bool + bgm: str + + +class PostDrawTask(TypedDict): + task_id: int + status: str + + +class _PostDraw(TypedDict): + nick_name: str + uid: int + region: str + role: List[PostDrawRole] + draw_notice: bool + CurrentTime: str + gender: int + is_show_remind: bool + is_compensate_num: str + current_compensate_num: int + guide_task: bool + guide_compensate: bool + guide_draw: bool + task_infos: List[PostDrawTask] + is_year_subscribe: bool + has_compensate_role: bool + + +class PostDraw(TypedDict): + retcode: int + message: str + data: _PostDraw + + class MihoyoRole(TypedDict): AvatarUrl: str nickname: str diff --git a/gsuid_core/utils/api/mys/request.py b/gsuid_core/utils/api/mys/request.py index c463002..c33523b 100644 --- a/gsuid_core/utils/api/mys/request.py +++ b/gsuid_core/utils/api/mys/request.py @@ -48,6 +48,7 @@ from .models import ( GachaLog, MysGoods, MysOrder, + PostDraw, SignInfo, SignList, AbyssData, @@ -811,7 +812,9 @@ class MysApi(BaseMysApi): return cast(BsIndex, data['data']) return data - async def post_draw(self, uid: str, role_id: int) -> Union[int, Dict]: + async def post_draw( + self, uid: str, role_id: int + ) -> Union[int, PostDraw, Dict]: server_id = self.RECOGNIZE_SERVER.get(uid[0]) ck = await self.get_ck(uid, 'OWNER') if ck is None: diff --git a/gsuid_core/utils/plugins_update/_plugins.py b/gsuid_core/utils/plugins_update/_plugins.py index 5e61d5d..4b01133 100644 --- a/gsuid_core/utils/plugins_update/_plugins.py +++ b/gsuid_core/utils/plugins_update/_plugins.py @@ -1,4 +1,5 @@ import os +import re import time import asyncio import subprocess @@ -17,7 +18,6 @@ from .api import CORE_PATH, PLUGINS_PATH, plugins_lib plugins_list: Dict[str, Dict[str, str]] = {} is_update_dep = core_plugins_config.get_config('AutoUpdateDep').data -proxy_url: str = core_plugins_config.get_config('ProxyURL').data # 传入一个path对象 @@ -135,6 +135,8 @@ async def get_plugins_url(name: str) -> Optional[Dict[str, str]]: def install_plugins(plugins: Dict[str, str]) -> str: + proxy_url: str = core_plugins_config.get_config('ProxyURL').data + plugin_name = plugins['link'].split('/')[-1] if proxy_url and not proxy_url.endswith('/'): _proxy_url = proxy_url + '/' @@ -201,6 +203,8 @@ def check_status(plugin_name: str) -> int: async def set_proxy(repo: Path, proxy: Optional[str] = None) -> str: plugin_name = repo.name + proxy_url: str = core_plugins_config.get_config('ProxyURL').data + try: process = await asyncio.create_subprocess_shell( 'git remote get-url origin', @@ -219,10 +223,14 @@ async def set_proxy(repo: Path, proxy: Optional[str] = None) -> str: logger.info(f'[core插件设置代理] {plugin_name} git地址为SSH, 无需设置代理') return f'{plugin_name} 无需设置代理' - if original_url.count('https://') >= 2: - main_url = 'https://' + original_url.split('https://')[-1] + _main_url = re.search(r"https:\/\/github[\s\S]+?git", original_url) + if _main_url: + main_url = _main_url[0] else: - main_url = original_url + logger.info(f'[core插件设置代理] {plugin_name} 未发现有效git地址') + return f'{plugin_name} 未发现有效git地址' + + # _proxy_url = re.search(r'^(https?:\/\/.+?)\/', original_url) if proxy is None: _proxy_url = proxy_url