mirror of
https://github.com/JoeanAmier/XHS-Downloader.git
synced 2026-03-22 06:57:16 +08:00
refactor: 重构运行提示传递逻辑
This commit is contained in:
@@ -71,9 +71,10 @@ class Manager:
|
||||
author_archive: bool,
|
||||
write_mtime: bool,
|
||||
script_server: bool,
|
||||
_print: bool,
|
||||
cleaner: "Cleaner",
|
||||
print_object,
|
||||
):
|
||||
self.print = print_object
|
||||
self.root = root
|
||||
self.cleaner = cleaner
|
||||
self.temp = root.joinpath("Temp")
|
||||
@@ -95,9 +96,7 @@ class Manager:
|
||||
self.download_record = self.check_bool(download_record, True)
|
||||
self.proxy_tip = None
|
||||
self.proxy = self.__check_proxy(proxy)
|
||||
self.print_proxy_tip(
|
||||
_print,
|
||||
)
|
||||
self.print_proxy_tip()
|
||||
self.timeout = timeout
|
||||
self.request_client = AsyncClient(
|
||||
headers=self.headers
|
||||
@@ -249,14 +248,13 @@ class Manager:
|
||||
),
|
||||
WARNING,
|
||||
)
|
||||
return None
|
||||
|
||||
def print_proxy_tip(
|
||||
self,
|
||||
_print: bool = True,
|
||||
log=None,
|
||||
) -> None:
|
||||
if _print and self.proxy_tip:
|
||||
logging(log, *self.proxy_tip)
|
||||
if self.proxy_tip:
|
||||
logging(self.print, *self.proxy_tip)
|
||||
|
||||
@classmethod
|
||||
def clean_cookie(cls, cookie_string: str) -> str:
|
||||
|
||||
@@ -23,12 +23,12 @@ class Mapping:
|
||||
self.folder_mode = manager.folder_mode
|
||||
self.database = mapping
|
||||
self.switch = manager.author_archive
|
||||
self.print = manager.print
|
||||
|
||||
async def update_cache(
|
||||
self,
|
||||
id_: str,
|
||||
alias: str,
|
||||
log=None,
|
||||
):
|
||||
if not self.switch:
|
||||
return
|
||||
@@ -37,7 +37,6 @@ class Mapping:
|
||||
id_,
|
||||
alias,
|
||||
a,
|
||||
log,
|
||||
)
|
||||
await self.database.add(id_, alias)
|
||||
|
||||
@@ -49,11 +48,10 @@ class Mapping:
|
||||
id_: str,
|
||||
alias: str,
|
||||
old_alias: str,
|
||||
log,
|
||||
):
|
||||
if not (old_folder := self.root.joinpath(f"{id_}_{old_alias}")).is_dir():
|
||||
logging(
|
||||
log,
|
||||
self.print,
|
||||
_("{old_folder} 文件夹不存在,跳过处理").format(
|
||||
old_folder=old_folder.name
|
||||
),
|
||||
@@ -63,13 +61,11 @@ class Mapping:
|
||||
old_folder,
|
||||
id_,
|
||||
alias,
|
||||
log,
|
||||
)
|
||||
self.__scan_file(
|
||||
id_,
|
||||
alias,
|
||||
old_alias,
|
||||
log,
|
||||
)
|
||||
|
||||
def __rename_folder(
|
||||
@@ -77,17 +73,15 @@ class Mapping:
|
||||
old_folder: Path,
|
||||
id_: str,
|
||||
alias: str,
|
||||
log,
|
||||
):
|
||||
new_folder = self.root.joinpath(f"{id_}_{alias}")
|
||||
self.__rename(
|
||||
old_folder,
|
||||
new_folder,
|
||||
_("文件夹"),
|
||||
log,
|
||||
)
|
||||
logging(
|
||||
log,
|
||||
self.print,
|
||||
_("文件夹 {old_folder} 已重命名为 {new_folder}").format(
|
||||
old_folder=old_folder.name, new_folder=new_folder.name
|
||||
),
|
||||
@@ -98,7 +92,6 @@ class Mapping:
|
||||
old_: Path,
|
||||
alias: str,
|
||||
old_alias: str,
|
||||
log,
|
||||
) -> Path:
|
||||
if old_alias in old_.name:
|
||||
new_ = old_.parent / old_.name.replace(old_alias, alias, 1)
|
||||
@@ -106,10 +99,9 @@ class Mapping:
|
||||
old_,
|
||||
new_,
|
||||
_("文件夹"),
|
||||
log,
|
||||
)
|
||||
logging(
|
||||
log,
|
||||
self.print,
|
||||
_("文件夹 {old_} 重命名为 {new_}").format(
|
||||
old_=old_.name, new_=new_.name
|
||||
),
|
||||
@@ -122,7 +114,6 @@ class Mapping:
|
||||
id_: str,
|
||||
alias: str,
|
||||
old_alias: str,
|
||||
log,
|
||||
):
|
||||
root = self.root.joinpath(f"{id_}_{alias}")
|
||||
item_list = root.iterdir()
|
||||
@@ -133,7 +124,6 @@ class Mapping:
|
||||
f,
|
||||
alias,
|
||||
old_alias,
|
||||
log,
|
||||
)
|
||||
files = f.iterdir()
|
||||
self.__batch_rename(
|
||||
@@ -141,7 +131,6 @@ class Mapping:
|
||||
files,
|
||||
alias,
|
||||
old_alias,
|
||||
log,
|
||||
)
|
||||
else:
|
||||
self.__batch_rename(
|
||||
@@ -149,7 +138,6 @@ class Mapping:
|
||||
item_list,
|
||||
alias,
|
||||
old_alias,
|
||||
log,
|
||||
)
|
||||
|
||||
def __batch_rename(
|
||||
@@ -158,7 +146,6 @@ class Mapping:
|
||||
files,
|
||||
alias: str,
|
||||
old_alias: str,
|
||||
log,
|
||||
):
|
||||
for old_file in files:
|
||||
if old_alias not in old_file.name:
|
||||
@@ -168,7 +155,6 @@ class Mapping:
|
||||
old_file,
|
||||
alias,
|
||||
old_alias,
|
||||
log,
|
||||
)
|
||||
|
||||
def __rename_file(
|
||||
@@ -177,36 +163,33 @@ class Mapping:
|
||||
old_file: Path,
|
||||
alias: str,
|
||||
old_alias: str,
|
||||
log,
|
||||
):
|
||||
new_file = root.joinpath(old_file.name.replace(old_alias, alias, 1))
|
||||
self.__rename(
|
||||
old_file,
|
||||
new_file,
|
||||
_("文件"),
|
||||
log,
|
||||
)
|
||||
logging(
|
||||
log,
|
||||
self.print,
|
||||
_("文件 {old_file} 重命名为 {new_file}").format(
|
||||
old_file=old_file.name, new_file=new_file.name
|
||||
),
|
||||
)
|
||||
return True
|
||||
|
||||
@staticmethod
|
||||
def __rename(
|
||||
self,
|
||||
old_: Path,
|
||||
new_: Path,
|
||||
type_=_("文件"),
|
||||
log=None,
|
||||
) -> bool:
|
||||
try:
|
||||
old_.rename(new_)
|
||||
return True
|
||||
except PermissionError as e:
|
||||
logging(
|
||||
log,
|
||||
self.print,
|
||||
_("{type} {old}被占用,重命名失败: {error}").format(
|
||||
type=type_, old=old_.name, error=e
|
||||
),
|
||||
@@ -215,7 +198,7 @@ class Mapping:
|
||||
return False
|
||||
except FileExistsError as e:
|
||||
logging(
|
||||
log,
|
||||
self.print,
|
||||
_("{type} {new}名称重复,重命名失败: {error}").format(
|
||||
type=type_, new=new_.name, error=e
|
||||
),
|
||||
@@ -224,7 +207,7 @@ class Mapping:
|
||||
return False
|
||||
except OSError as e:
|
||||
logging(
|
||||
log,
|
||||
self.print,
|
||||
_("处理{type} {old}时发生预期之外的错误: {error}").format(
|
||||
type=type_, old=old_.name, error=e
|
||||
),
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
from asyncio import sleep
|
||||
from random import uniform
|
||||
from typing import Callable
|
||||
|
||||
from rich import print
|
||||
from rich.text import Text
|
||||
@@ -37,15 +38,16 @@ def retry_limited(function):
|
||||
return inner
|
||||
|
||||
|
||||
def logging(log, text, style=INFO):
|
||||
def logging(log: Callable, text, style=INFO):
|
||||
string = Text(text, style=style)
|
||||
if log:
|
||||
log.write(
|
||||
func = log()
|
||||
if func is print:
|
||||
func(string)
|
||||
else:
|
||||
func.write(
|
||||
string,
|
||||
scroll_end=True,
|
||||
)
|
||||
else:
|
||||
print(string)
|
||||
|
||||
|
||||
async def sleep_time(
|
||||
|
||||
Reference in New Issue
Block a user