LittlePaimon/__init__.py
2022-07-12 15:37:07 +08:00

53 lines
1.8 KiB
Python

import asyncio
import hashlib
import shutil
from pathlib import Path
from littlepaimon_utils.files import load_json, download
from nonebot import get_driver, logger
driver = get_driver()
resource_list = load_json(path=Path(__file__).parent / 'resource_list.json')
old_resource_path = Path(__file__).parent / 'res'
new_resource_path = Path().cwd() / 'resources' / 'LittlePaimon'
old_user_data_path = Path(__file__).parent / 'user_data'
new_user_data_path = Path().cwd() / 'data' / 'LittlePaimon' / 'user_data'
# @driver.on_startup
async def check_resource():
# 迁移旧用户数据文件
if old_user_data_path.exists():
new_user_data_path.mkdir(parents=True, exist_ok=True)
for file in old_user_data_path.iterdir():
shutil.move(file, new_user_data_path)
# 迁移旧资源文件
if old_resource_path.exists():
new_resource_path.mkdir(parents=True, exist_ok=True)
for file in old_resource_path.iterdir():
shutil.move(file, new_resource_path)
# 检验资源文件并下载
for resource in resource_list:
res_path = new_resource_path / resource['path'].replace('LittlePaimon/', '')
download_url = 'http://genshin.cherishmoon.fun/res/' + resource['path'].replace('LittlePaimon/', '')
if res_path.exists():
if hashlib.md5(res_path.read_bytes()).hexdigest() == resource['hash'] or not resource['lock']:
continue
else:
res_path.unlink()
try:
await download(download_url, res_path)
await asyncio.sleep(0.3)
except Exception as e:
logger.warning(resource['path'].split('/')[-1] + 'download failed: ' + str(e))
@driver.on_startup
def _():
logger.info('检查LittlePaimon资源文件')
asyncio.ensure_future(check_resource())