mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2026-09-29 00:32:06 +08:00
🎈 perf(github_utils): 支持github url下载遍历 (#1632)
* 🎈 perf(github_utils): 支持github url下载遍历 * 🐞 fix(http_utils): 修复一些下载问题 * 🦄 refactor(http_utils): 部分重构 * chore(version): Update version to v0.2.2-e6f17c4 --------- Co-authored-by: AkashiCoin <AkashiCoin@users.noreply.github.com>
This commit is contained in:
@@ -1,23 +1,27 @@
|
||||
from collections.abc import Generator
|
||||
|
||||
from .consts import GITHUB_REPO_URL_PATTERN
|
||||
from .func import get_fastest_raw_format, get_fastest_archive_format
|
||||
from .func import get_fastest_raw_formats, get_fastest_archive_formats
|
||||
from .models import RepoAPI, RepoInfo, GitHubStrategy, JsdelivrStrategy
|
||||
|
||||
__all__ = [
|
||||
"parse_github_url",
|
||||
"get_fastest_raw_format",
|
||||
"get_fastest_archive_format",
|
||||
"api_strategy",
|
||||
"get_fastest_raw_formats",
|
||||
"get_fastest_archive_formats",
|
||||
"GithubUtils",
|
||||
]
|
||||
|
||||
|
||||
def parse_github_url(github_url: str) -> "RepoInfo":
|
||||
if matched := GITHUB_REPO_URL_PATTERN.match(github_url):
|
||||
return RepoInfo(**{k: v for k, v in matched.groupdict().items() if v})
|
||||
raise ValueError("github地址格式错误")
|
||||
class GithubUtils:
|
||||
# 使用
|
||||
jsdelivr_api = RepoAPI(JsdelivrStrategy()) # type: ignore
|
||||
github_api = RepoAPI(GitHubStrategy()) # type: ignore
|
||||
|
||||
@classmethod
|
||||
def iter_api_strategies(cls) -> Generator[RepoAPI]:
|
||||
yield from [cls.github_api, cls.jsdelivr_api]
|
||||
|
||||
# 使用
|
||||
jsdelivr_api = RepoAPI(JsdelivrStrategy()) # type: ignore
|
||||
github_api = RepoAPI(GitHubStrategy()) # type: ignore
|
||||
|
||||
api_strategy = [github_api, jsdelivr_api]
|
||||
@classmethod
|
||||
def parse_github_url(cls, github_url: str) -> "RepoInfo":
|
||||
if matched := GITHUB_REPO_URL_PATTERN.match(github_url):
|
||||
return RepoInfo(**{k: v for k, v in matched.groupdict().items() if v})
|
||||
raise ValueError("github地址格式错误")
|
||||
|
||||
Reference in New Issue
Block a user