mirror of
https://github.com/EstrellaXD/Auto_Bangumi.git
synced 2026-04-09 05:29:51 +08:00
Update main process
This commit is contained in:
@@ -2,13 +2,12 @@ import os
|
||||
import time
|
||||
import logging
|
||||
|
||||
from module.conf import setup_logger, LOG_PATH, DATA_PATH, RSSLink, VERSION
|
||||
from module.utils import load_program_data, save_program_data
|
||||
from module.conf import setup_logger, LOG_PATH, RSSLink, VERSION
|
||||
|
||||
from module.core import DownloadClient
|
||||
from module.manager import Renamer, FullSeasonGet
|
||||
from module.rss import RSSAnalyser
|
||||
from module.models import ProgramData, Config
|
||||
from module.models import Config
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
@@ -19,35 +18,17 @@ def reset_log():
|
||||
os.remove(LOG_PATH)
|
||||
|
||||
|
||||
def load_data_file(rss_link: str, data_version) -> ProgramData:
|
||||
empty_data = ProgramData(
|
||||
rss_link=rss_link,
|
||||
data_version=data_version,
|
||||
)
|
||||
if not os.path.exists(DATA_PATH):
|
||||
program_data = empty_data
|
||||
save_program_data(DATA_PATH, program_data)
|
||||
logger.info("Building data information...")
|
||||
else:
|
||||
program_data = load_program_data(DATA_PATH)
|
||||
if program_data.rss_link != rss_link or program_data.data_version != data_version:
|
||||
program_data = empty_data
|
||||
logger.info("Rebuilding data information...")
|
||||
return program_data
|
||||
|
||||
|
||||
def main_process(program_data: ProgramData, download_client: DownloadClient, _settings: Config):
|
||||
def main_process(rss_link: str, download_client: DownloadClient, _settings: Config):
|
||||
rename = Renamer(download_client, _settings)
|
||||
rss_analyser = RSSAnalyser(_settings)
|
||||
while True:
|
||||
times = 0
|
||||
if _settings.rss_parser.enable:
|
||||
rss_analyser.run(program_data.bangumi_info, program_data.rss_link)
|
||||
download_client.add_rules(program_data.bangumi_info, program_data.rss_link)
|
||||
if _settings.bangumi_manage.eps_complete and program_data.bangumi_info != []:
|
||||
FullSeasonGet(settings=_settings).eps_complete(program_data.bangumi_info, download_client)
|
||||
extra_data = rss_analyser.run(rss_link=rss_link)
|
||||
download_client.add_rules(extra_data, rss_link)
|
||||
if _settings.bangumi_manage.eps_complete:
|
||||
FullSeasonGet(settings=_settings).eps_complete(download_client)
|
||||
logger.info("Running....")
|
||||
save_program_data(DATA_PATH, program_data)
|
||||
while times < _settings.program.rename_times:
|
||||
if _settings.bangumi_manage.enable:
|
||||
rename.rename()
|
||||
@@ -77,6 +58,5 @@ def run(settings: Config):
|
||||
download_client.auth()
|
||||
download_client.init_downloader()
|
||||
download_client.rss_feed(rss_link)
|
||||
bangumi_data = load_data_file(rss_link, settings.data_version)
|
||||
# 主程序循环
|
||||
main_process(bangumi_data, download_client, settings)
|
||||
main_process(rss_link, download_client, settings)
|
||||
|
||||
@@ -30,11 +30,11 @@ class DataConnector:
|
||||
);
|
||||
"""
|
||||
)
|
||||
self._conn.commit()
|
||||
|
||||
def __enter__(self):
|
||||
return self
|
||||
|
||||
def __exit__(self, exc_type, exc_val, exc_tb):
|
||||
self._conn.commit()
|
||||
self._conn.close()
|
||||
|
||||
|
||||
@@ -5,7 +5,8 @@ from module.models import BangumiData
|
||||
|
||||
|
||||
class DataOperator(DataConnector):
|
||||
def data_to_db(self, data: BangumiData) -> dict:
|
||||
@staticmethod
|
||||
def data_to_db(data: BangumiData) -> dict:
|
||||
db_data = data.dict()
|
||||
for key, value in db_data.items():
|
||||
if isinstance(value, bool):
|
||||
@@ -13,8 +14,9 @@ class DataOperator(DataConnector):
|
||||
elif isinstance(value, list):
|
||||
db_data[key] = ",".join(value)
|
||||
return db_data
|
||||
|
||||
def db_to_data(self, db_data: dict) -> BangumiData:
|
||||
|
||||
@staticmethod
|
||||
def db_to_data(db_data: dict) -> BangumiData:
|
||||
for key, item in db_data.items():
|
||||
if isinstance(item, int):
|
||||
if key not in ["id", "offset", "season"]:
|
||||
@@ -56,6 +58,7 @@ class DataOperator(DataConnector):
|
||||
:rss
|
||||
)
|
||||
''', db_data)
|
||||
self._conn.commit()
|
||||
|
||||
def insert_list(self, data: list[BangumiData]):
|
||||
db_data = [self.data_to_db(x) for x in data]
|
||||
@@ -90,6 +93,7 @@ class DataOperator(DataConnector):
|
||||
:rss
|
||||
)
|
||||
''', db_data)
|
||||
self._conn.commit()
|
||||
|
||||
def update(self, data: BangumiData) -> bool:
|
||||
db_data = self.data_to_db(data)
|
||||
@@ -108,6 +112,7 @@ class DataOperator(DataConnector):
|
||||
filter = :filter
|
||||
WHERE id = :id
|
||||
''', db_data)
|
||||
self._conn.commit()
|
||||
return self._cursor.rowcount == 1
|
||||
|
||||
def search(self, _id: int) -> BangumiData | None:
|
||||
|
||||
@@ -9,7 +9,7 @@ def getClient(settings: Config):
|
||||
password = settings.downloader.password
|
||||
ssl = settings.downloader.ssl
|
||||
if type == "qbittorrent":
|
||||
from .qb_downloader import QbDownloader
|
||||
from module.downloader.client.qb_downloader import QbDownloader
|
||||
return QbDownloader(host, username, password, ssl)
|
||||
else:
|
||||
raise Exception(f"Unsupported downloader type: {type}")
|
||||
|
||||
@@ -6,7 +6,7 @@ from aria2p import Client, ClientException, API
|
||||
|
||||
from module.conf import settings
|
||||
|
||||
from .exceptions import ConflictError
|
||||
from module.downloader.exceptions import ConflictError
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
0
src/module/downloader/client/tr_downloader.py
Normal file
0
src/module/downloader/client/tr_downloader.py
Normal file
Reference in New Issue
Block a user