Skip to content

Commit

Permalink
增加自动选择最优镜像
Browse files Browse the repository at this point in the history
  • Loading branch information
daqyt committed Nov 29, 2024
1 parent 04bd926 commit cb4da86
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 37 deletions.
34 changes: 32 additions & 2 deletions tooldelta/cfg.py
Original file line number Diff line number Diff line change
Expand Up @@ -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}
Expand Down Expand Up @@ -73,7 +74,7 @@ def _CfgShowType(typ: Any) -> str:

class Cfg:
"""配置文件模块"""

url = None
class ConfigError(Exception):
"""配置文件错误"""

Expand Down Expand Up @@ -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:
"""生成默认配置文件
Expand Down
7 changes: 1 addition & 6 deletions tooldelta/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
"插件市场源": '',
}
"默认登录配置"

Expand Down
34 changes: 12 additions & 22 deletions tooldelta/neo_libs/file_download.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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)
Expand All @@ -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]
Expand Down Expand Up @@ -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


Expand Down
14 changes: 7 additions & 7 deletions tooldelta/plugin_market.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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:
"""
Expand Down

0 comments on commit cb4da86

Please sign in to comment.