mirror of
https://github.com/KimigaiiWuyi/GenshinUID.git
synced 2025-07-02 04:53:31 +00:00
66 lines
2.3 KiB
Python
66 lines
2.3 KiB
Python
import os
|
|
import shutil
|
|
from typing import List
|
|
from pathlib import Path
|
|
|
|
from nonebot.log import logger
|
|
from nonebot import require, load_plugins
|
|
|
|
dir_ = Path(__file__).parent
|
|
require('nonebot_plugin_apscheduler')
|
|
|
|
|
|
def copy_and_delete_files():
|
|
if "player" in os.listdir(dir_) or "resource" in os.listdir(dir_):
|
|
logger.info("检测到未迁移的文件夹,执行迁移")
|
|
is_first = True
|
|
for path in dir_.iterdir():
|
|
if path.name.startswith("genshinuid_") or path.name == "utils":
|
|
if is_first:
|
|
logger.info("检测到残留文件夹,执行删除")
|
|
is_first = False
|
|
try:
|
|
shutil.rmtree(path)
|
|
logger.info(f"删除文件夹:{path}")
|
|
except OSError as e:
|
|
logger.warning(f"无法删除文件夹:{e}")
|
|
elif path.name in {"resource", "player"}:
|
|
dst = Path().joinpath(
|
|
(
|
|
"data/GenshinUID/"
|
|
f"{'players' if path.name == 'player' else path.name}"
|
|
)
|
|
)
|
|
try:
|
|
shutil.copytree(
|
|
path,
|
|
dst,
|
|
dirs_exist_ok=True,
|
|
)
|
|
logger.success(f"复制文件夹 {path} -> {dst} 成功")
|
|
except shutil.Error as e:
|
|
failed_src: List[Path] = []
|
|
exc: str
|
|
src: str
|
|
for tup in e.args[0]:
|
|
src, dst, exc = tup
|
|
failed_src.append(Path(src).absolute())
|
|
logger.warning(f"复制文件夹 {src} -> {dst} 失败:{exc}")
|
|
now_src = {i.absolute() for i in path.iterdir()}
|
|
successful_src = filter(lambda x: x not in now_src, failed_src)
|
|
for i in successful_src:
|
|
try:
|
|
shutil.rmtree(i)
|
|
except OSError as e:
|
|
logger.warning(f"删除文件夹 {i} 失败:{e.strerror}")
|
|
else:
|
|
try:
|
|
shutil.rmtree(path)
|
|
logger.success(f"删除文件夹 {path} 成功")
|
|
except OSError as e:
|
|
logger.warning(f"删除文件夹 {path} 失败:{e.strerror}")
|
|
|
|
|
|
copy_and_delete_files()
|
|
load_plugins(str(dir_ / "GenshinUID"))
|