使用HKFRP下载资源文件

This commit is contained in:
KimigaiiWuyi 2023-08-18 00:25:35 +08:00
parent 659c4d358c
commit eb80dff00f

View File

@ -4,12 +4,30 @@ from pathlib import Path
from typing import List, Tuple from typing import List, Tuple
from bs4 import BeautifulSoup from bs4 import BeautifulSoup
from aiohttp import TCPConnector
from gsuid_core.logger import logger from gsuid_core.logger import logger
from aiohttp.client import ClientSession from aiohttp.client import ClientSession
from .download_url import PATH_MAP, download_file from .download_url import PATH_MAP, download_file
MINIGG_FILE = 'http://file.microgg.cn/KimigaiiWuyi/resource/' # MINIGG_FILE = 'http://file.microgg.cn/KimigaiiWuyi/resource/'
BASE_TAG = '[HKFRP]'
BASE_URL = 'http://hk-1.5gbps-2.lcf.icu:10200'
RESOURCE_FILE = f'{BASE_URL}/resource/'
WIKI_FILE = f'{BASE_URL}/wiki/'
NAMECARD_FILE = RESOURCE_FILE + 'char_namecard'
SIDE_FILE = RESOURCE_FILE + 'char_side'
STAND_FILE = RESOURCE_FILE + 'char_stand'
CHARS_FILE = RESOURCE_FILE + 'chars'
GACHA_FILE = RESOURCE_FILE + 'gacha_img'
ICON_FILE = RESOURCE_FILE + 'icon'
REL_FILE = RESOURCE_FILE + 'reliquaries'
WEAPON_FILE = RESOURCE_FILE + 'weapon'
GUIDE_FILE = WIKI_FILE + 'guide'
REF_FILE = WIKI_FILE + 'ref'
'''
NAMECARD_FILE = MINIGG_FILE + 'char_namecard' NAMECARD_FILE = MINIGG_FILE + 'char_namecard'
SIDE_FILE = MINIGG_FILE + 'char_side' SIDE_FILE = MINIGG_FILE + 'char_side'
STAND_FILE = MINIGG_FILE + 'char_stand' STAND_FILE = MINIGG_FILE + 'char_stand'
@ -20,6 +38,8 @@ REL_FILE = MINIGG_FILE + 'reliquaries'
WEAPON_FILE = MINIGG_FILE + 'weapon' WEAPON_FILE = MINIGG_FILE + 'weapon'
GUIDE_FILE = MINIGG_FILE + 'guide' GUIDE_FILE = MINIGG_FILE + 'guide'
REF_FILE = MINIGG_FILE + 'ref_image' REF_FILE = MINIGG_FILE + 'ref_image'
'''
FILE_TO_PATH = { FILE_TO_PATH = {
NAMECARD_FILE: 6, NAMECARD_FILE: 6,
@ -59,11 +79,11 @@ async def download_all_file_from_miniggicu():
list(filter(lambda x: x is not None, await asyncio.gather(*tasks))) list(filter(lambda x: x is not None, await asyncio.gather(*tasks)))
) )
tasks.clear() tasks.clear()
logger.info('[minigg.icu]下载完成!') logger.info(f'{BASE_TAG}下载完成!')
failed_list: List[Tuple[str, int, str]] = [] failed_list: List[Tuple[str, int, str]] = []
TASKS = [] TASKS = []
async with ClientSession() as sess: async with ClientSession(connector=TCPConnector(verify_ssl=False)) as sess:
for file in [ for file in [
NAMECARD_FILE, NAMECARD_FILE,
SIDE_FILE, SIDE_FILE,
@ -82,7 +102,7 @@ async def download_all_file_from_miniggicu():
data_list = pre_data.find_all('a') data_list = pre_data.find_all('a')
size_list = [i for i in content_bs.strings] size_list = [i for i in content_bs.strings]
logger.info( logger.info(
f'[minigg.icu]数据库[{FILE_TO_NAME[file]}]中存在{len(data_list)}个内容!' f'{BASE_TAG}数据库[{FILE_TO_NAME[file]}]中存在{len(data_list)}个内容!'
) )
temp_num = 0 temp_num = 0
for index, data in enumerate(data_list): for index, data in enumerate(data_list):
@ -103,7 +123,7 @@ async def download_all_file_from_miniggicu():
or not is_diff or not is_diff
): ):
logger.info( logger.info(
f'[minigg.icu]开始下载[{FILE_TO_NAME[file]}]_[{name}]...' f'{BASE_TAG}开始下载[{FILE_TO_NAME[file]}]_[{name}]...'
) )
temp_num += 1 temp_num += 1
TASKS.append( TASKS.append(
@ -118,13 +138,13 @@ async def download_all_file_from_miniggicu():
else: else:
await _download(TASKS) await _download(TASKS)
if temp_num == 0: if temp_num == 0:
im = f'[minigg.icu]数据库[{FILE_TO_NAME[file]}]无需下载!' im = f'{BASE_TAG}数据库[{FILE_TO_NAME[file]}]无需下载!'
else: else:
im = f'[minigg.icu]数据库[{FILE_TO_NAME[file]}]已下载{temp_num}个内容!' im = f'{BASE_TAG}数据库[{FILE_TO_NAME[file]}]已下载{temp_num}个内容!'
temp_num = 0 temp_num = 0
logger.info(im) logger.info(im)
if failed_list: if failed_list:
logger.info(f'[minigg.icu]开始重新下载失败的{len(failed_list)}个文件...') logger.info(f'{BASE_TAG}开始重新下载失败的{len(failed_list)}个文件...')
for url, file, name in failed_list: for url, file, name in failed_list:
TASKS.append( TASKS.append(
asyncio.wait_for( asyncio.wait_for(
@ -137,4 +157,4 @@ async def download_all_file_from_miniggicu():
else: else:
await _download(TASKS) await _download(TASKS)
if count := len(failed_list): if count := len(failed_list):
logger.error(f'[minigg.icu]仍有{count}个文件未下载,请使用命令 `下载全部资源` 重新下载') logger.error(f'{BASE_TAG}仍有{count}个文件未下载,请使用命令 `下载全部资源` 重新下载')