From cb4da86daa472f617493f1cd38e88510d0fac118 Mon Sep 17 00:00:00 2001 From: daqyt Date: Fri, 29 Nov 2024 22:15:08 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=87=AA=E5=8A=A8=E9=80=89?= =?UTF-8?q?=E6=8B=A9=E6=9C=80=E4=BC=98=E9=95=9C=E5=83=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tooldelta/cfg.py | 34 +++++++++++++++++++++++++++-- tooldelta/constants.py | 7 +----- tooldelta/neo_libs/file_download.py | 34 ++++++++++------------------- tooldelta/plugin_market.py | 14 ++++++------ 4 files changed, 52 insertions(+), 37 deletions(-) diff --git a/tooldelta/cfg.py b/tooldelta/cfg.py index 8dd208b..1877277 100755 --- a/tooldelta/cfg.py +++ b/tooldelta/cfg.py @@ -3,7 +3,8 @@ import os import json from typing import Any - +import requests +from .color_print import Print NoneType = type(None) PLUGINCFG_DEFAULT = {"配置版本": "0.0.1", "配置项": None} @@ -73,7 +74,7 @@ def _CfgShowType(typ: Any) -> str: class Cfg: """配置文件模块""" - + url = None class ConfigError(Exception): """配置文件错误""" @@ -150,6 +151,35 @@ def get_cfg(self, path: str, standard_type: Any): self.check_dict(standard_type, obj) return obj + def geturl(self): + """自动选择最佳镜像地址""" + if self.url: + return self.url + url_list = ["https://github.dqyt.online"] + try: + if not Cfg().get_cfg( + "ToolDelta基本配置.json", {"是否使用github镜像": bool} + )["是否使用github镜像"]: + self.url = "https://raw.githubusercontent.com" + return self.url + if url := Cfg().get_cfg( + "ToolDelta基本配置.json", {"插件市场源": str} + )["插件市场源"]: + self.url = f"{url}/https://raw.githubusercontent.com" + return self.url + except: # noqa: E722 + Print.clean_print("§c未发现配置文件,将选择内置镜像地址") + for url in url_list: + try: + response = requests.get(url) + if response.status_code == 200: + self.url = f"{url}/https://raw.githubusercontent.com" + return self.url + except requests.RequestException: + continue + self.url = "https://github.dqyt.online/https://raw.githubusercontent.com" + return self.url + @staticmethod def default_cfg(path: str, default: dict, force: bool = False) -> None: """生成默认配置文件 diff --git a/tooldelta/constants.py b/tooldelta/constants.py index c7cfa51..02ad735 100644 --- a/tooldelta/constants.py +++ b/tooldelta/constants.py @@ -11,16 +11,11 @@ ╚═════════════════════════════════════════════════════════════════════════╝§r""" "ToolDelta标志" -PLUGIN_MARKET_SOURCE_OFFICIAL = ( - "http://github.dqyt.online/https://raw.githubusercontent.com/ToolDelta-Basic/PluginMarket/main" -) -"插件市场源" - LAUNCH_CFG: dict = { "启动器启动模式(请不要手动更改此项, 改为0可重置)": 0, "是否记录日志": True, "是否使用github镜像": True, - "插件市场源": PLUGIN_MARKET_SOURCE_OFFICIAL, + "插件市场源": '', } "默认登录配置" diff --git a/tooldelta/neo_libs/file_download.py b/tooldelta/neo_libs/file_download.py index a06cf55..7d819da 100644 --- a/tooldelta/neo_libs/file_download.py +++ b/tooldelta/neo_libs/file_download.py @@ -5,7 +5,7 @@ import brotli import requests -from tooldelta import constants, urlmethod +from tooldelta import urlmethod from tooldelta.cfg import Config from tooldelta.color_print import Print from tooldelta.sys_args import sys_args_to_dict @@ -16,9 +16,7 @@ def download_libs() -> bool: if "no-download-libs" in sys_args_to_dict(): Print.print_war("将不会进行依赖库的下载和检测更新。") return True - cfgs = Config.get_cfg("ToolDelta基本配置.json", constants.LAUNCH_CFG_STD) - is_mir: bool = cfgs["是否使用github镜像"] - mirror_src, depen_url = get_github_content_url(is_mir) + mirror_src, depen_url = get_github_content_url(Config.geturl()) require_depen = get_required_dependencies(mirror_src)[0] sys_info_fmt = get_system_info() source_dict = require_depen.get(sys_info_fmt) @@ -43,9 +41,7 @@ def download_neomg() -> bool: Print.print_war("将不会进行NeOmega的下载和检测更新。") return True download_libs() - cfgs = Config.get_cfg("ToolDelta基本配置.json", constants.LAUNCH_CFG_STD) - is_mir: bool = cfgs["是否使用github镜像"] - mirror_src, _ = get_github_content_url(is_mir) + mirror_src, _ = get_github_content_url(Config.geturl()) require_depen = get_required_dependencies(mirror_src)[1] sys_info_fmt = get_system_info() source_dict = require_depen[sys_info_fmt][0] @@ -89,21 +85,15 @@ def download_neomg() -> bool: return True -def get_github_content_url(use_special_mirror: bool) -> tuple[str, str]: - if use_special_mirror: - mirror_src = ( - constants.TDSPECIFIC_GITHUB_DOWNLOAD_URL - + "/ToolDelta-Basic/ToolDelta/main" - ) - depen_url = ( - constants.TDSPECIFIC_GITHUB_DOWNLOAD_URL - + "/ToolDelta-Basic/DependencyLibrary/main" - ) - else: - mirror_src = "https://raw.githubusercontent.com/ToolDelta-Basic/ToolDelta/main" - depen_url = ( - "https://raw.githubusercontent.com/ToolDelta-Basic/DependencyLibrary/main" - ) +def get_github_content_url(url) -> tuple[str, str]: + mirror_src = ( + url + + "/ToolDelta-Basic/ToolDelta/main" + ) + depen_url = ( + url + + "/ToolDelta-Basic/DependencyLibrary/main" + ) return mirror_src, depen_url diff --git a/tooldelta/plugin_market.py b/tooldelta/plugin_market.py index 4e0891a..5c73ac4 100755 --- a/tooldelta/plugin_market.py +++ b/tooldelta/plugin_market.py @@ -14,7 +14,6 @@ from .cfg import Cfg from .color_print import Print from .constants import ( - PLUGIN_MARKET_SOURCE_OFFICIAL, TOOLDELTA_CLASSIC_PLUGIN, TOOLDELTA_INJECTED_PLUGIN, TOOLDELTA_PLUGIN_CFG_DIR, @@ -80,12 +79,13 @@ class PluginMarket: def __init__(self): self._plugin_id_name_map: dict | None = None - try: - self.plugins_download_url = Cfg().get_cfg( - "ToolDelta基本配置.json", {"插件市场源": str} - )["插件市场源"] - except Exception: - self.plugins_download_url = PLUGIN_MARKET_SOURCE_OFFICIAL + self.plugins_download_url = f"{Cfg().geturl()}/ToolDelta-Basic/PluginMarket/main" + # try: + # self.plugins_download_url = Cfg().get_cfg( + # "ToolDelta基本配置.json", {"插件市场源": str} + # )["插件市场源"] + # except Exception: + # self.plugins_download_url = PLUGIN_MARKET_SOURCE_OFFICIAL def enter_plugin_market(self, source_url: str | None = None, in_game=False) -> None: """