mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2025-12-15 06:12:53 +08:00
86 lines
2.5 KiB
Python
86 lines
2.5 KiB
Python
from configs.config import HIBIAPI
|
||
from services.log import logger
|
||
from models.omega_pixiv_illusts import OmegaPixivIllusts
|
||
from pathlib import Path
|
||
from nonebot import Driver
|
||
from typing import List
|
||
from datetime import datetime
|
||
import nonebot
|
||
import asyncio
|
||
import os
|
||
|
||
|
||
__zx_plugin_name__ = "更新扩展图库Omega [Hidden]"
|
||
__plugin_version__ = 0.1
|
||
__plugin_author__ = "HibiKier"
|
||
|
||
nonebot.load_plugins("plugins/pix_gallery")
|
||
|
||
driver: Driver = nonebot.get_driver()
|
||
illust_url = f"{HIBIAPI}/api/pixiv/illust"
|
||
|
||
|
||
@driver.on_startup
|
||
async def _init_omega_pixiv_illusts():
|
||
omega_pixiv_illusts = None
|
||
for file in os.listdir("."):
|
||
if "omega_pixiv_illusts" in file and ".sql" in file:
|
||
omega_pixiv_illusts = Path() / file
|
||
if omega_pixiv_illusts:
|
||
with open(omega_pixiv_illusts, "r", encoding="utf8") as f:
|
||
lines = f.readlines()
|
||
tasks = []
|
||
length = len([x for x in lines if "INSERT INTO" in x.upper()])
|
||
all_pid = await OmegaPixivIllusts.get_all_pid()
|
||
index = 0
|
||
logger.info("检测到OmegaPixivIllusts数据库,准备开始更新....")
|
||
for line in lines:
|
||
if "INSERT INTO" in line.upper():
|
||
index += 1
|
||
tasks.append(
|
||
asyncio.ensure_future(_tasks(line, all_pid, length, index))
|
||
)
|
||
await asyncio.gather(*tasks)
|
||
omega_pixiv_illusts.unlink()
|
||
|
||
|
||
async def _tasks(line: str, all_pid: List[int], length: int, index: int):
|
||
data = line.split("VALUES", maxsplit=1)[-1].strip()
|
||
if data.startswith("("):
|
||
data = data[1:]
|
||
if data.endswith(");"):
|
||
data = data[:-2]
|
||
x = data.split(maxsplit=3)
|
||
pid = int(x[1][:-1].strip())
|
||
if pid in all_pid:
|
||
logger.info(f"添加OmegaPixivIllusts图库数据已存在 ---> pid:{pid}")
|
||
return
|
||
uid = int(x[2][:-1].strip())
|
||
x = x[3].split(", '")
|
||
title = x[0].strip()[1:-1]
|
||
tmp = x[1].split(", ")
|
||
author = tmp[0].strip()[:-1]
|
||
nsfw_tag = int(tmp[1])
|
||
width = int(tmp[2])
|
||
height = int(tmp[3])
|
||
tags = x[2][:-1]
|
||
url = x[3][:-1]
|
||
if await OmegaPixivIllusts.add_image_data(
|
||
pid,
|
||
title,
|
||
width,
|
||
height,
|
||
url,
|
||
uid,
|
||
author,
|
||
nsfw_tag,
|
||
tags,
|
||
datetime.min,
|
||
datetime.min,
|
||
):
|
||
logger.info(
|
||
f"成功添加OmegaPixivIllusts图库数据 pid:{pid} 本次预计存储 {length} 张,已更新第 {index} 张"
|
||
)
|
||
else:
|
||
logger.info(f"添加OmegaPixivIllusts图库数据已存在 ---> pid:{pid}")
|