mirror of
https://github.com/EstrellaXD/Auto_Bangumi.git
synced 2026-05-11 10:35:50 +08:00
112 lines
3.9 KiB
Python
112 lines
3.9 KiB
Python
import os
|
|
import time
|
|
import logging
|
|
|
|
from conf import settings
|
|
from conf.argument_parser import parse
|
|
from conf.log import setup_logger
|
|
from utils import json_config
|
|
|
|
from mikanani.rss_collector import RSSCollector
|
|
from core.download_client import DownloadClient
|
|
from core.renamer import Renamer
|
|
from network.request import RequestsURL
|
|
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
def load_data_file():
|
|
info_path = settings.info_path
|
|
if not os.path.exists(info_path):
|
|
bangumi_data = {
|
|
"rss_link": settings.rss_link,
|
|
"data_version": settings.data_version,
|
|
"first_run": True,
|
|
"bangumi_info": []
|
|
}
|
|
else:
|
|
bangumi_data = json_config.load(info_path)
|
|
if bangumi_data["data_version"] != settings.data_version or bangumi_data["rss_link"] != settings.rss_link:
|
|
bangumi_data["bangumi_info"] = []
|
|
bangumi_data["data_version"] = settings.data_version
|
|
bangumi_data["first_run"] = True
|
|
bangumi_data["rss_link"] = settings.rss_link
|
|
logger.info("Rebuilding data information...")
|
|
return bangumi_data
|
|
|
|
|
|
def save_data_file(bangumi_data):
|
|
info_path = settings.info_path
|
|
json_config.save(info_path, bangumi_data)
|
|
|
|
|
|
def show_info():
|
|
logger.info(" _ ____ _ ")
|
|
logger.info(" /\ | | | _ \ (_)")
|
|
logger.info(" / \ _ _| |_ ___ | |_) | __ _ _ __ __ _ _ _ _ __ ___ _ ")
|
|
logger.info(" / /\ \| | | | __/ _ \| _ < / _` | '_ \ / _` | | | | '_ ` _ \| |")
|
|
logger.info(" / ____ \ |_| | || (_) | |_) | (_| | | | | (_| | |_| | | | | | | |")
|
|
logger.info(" /_/ \_\__,_|\__\___/|____/ \__,_|_| |_|\__, |\__,_|_| |_| |_|_|")
|
|
logger.info(" __/ | ")
|
|
logger.info(" |___/ ")
|
|
logger.info(f"Version {settings.version} Author: EstrellaXD Twitter: https://twitter.com/Estrella_Pan")
|
|
logger.info("GitHub: https://github.com/EstrellaXD/Auto_Bangumi/")
|
|
logger.info("Starting AutoBangumi...")
|
|
|
|
|
|
def run():
|
|
# DEBUG 模式初始化
|
|
args = parse()
|
|
if args.debug:
|
|
try:
|
|
from conf.const_dev import DEV_SETTINGS
|
|
settings.init(DEV_SETTINGS)
|
|
except ModuleNotFoundError:
|
|
logger.debug("Please copy `const_dev.py` to `const_dev.py` to use custom settings")
|
|
else:
|
|
settings.init()
|
|
# 初始化
|
|
setup_logger()
|
|
show_info()
|
|
time.sleep(3)
|
|
download_client = DownloadClient()
|
|
url_request = RequestsURL()
|
|
download_client.init_downloader()
|
|
if settings.rss_link is None:
|
|
logger.error("Please add RIGHT RSS url.")
|
|
quit()
|
|
download_client.rss_feed()
|
|
rss_collector = RSSCollector(url_request)
|
|
rename = Renamer(download_client)
|
|
# 主程序循环
|
|
while True:
|
|
bangumi_data = load_data_file()
|
|
try:
|
|
# 解析 RSS
|
|
rss_collector.collect(bangumi_data)
|
|
# 历史剧集收集
|
|
if settings.enable_eps_complete:
|
|
download_client.eps_collect(bangumi_data["bangumi_info"], url_request)
|
|
url_request.close()
|
|
download_client.add_rules(bangumi_data["bangumi_info"], settings.rss_link)
|
|
# 首次等待
|
|
if bangumi_data["first_run"]:
|
|
logger.info(f"Waiting for downloading torrents...")
|
|
time.sleep(settings.first_sleep)
|
|
bangumi_data["first_run"] = False
|
|
save_data_file(bangumi_data)
|
|
# rename
|
|
if settings.method != "none":
|
|
rename.refresh()
|
|
rename.run()
|
|
time.sleep(settings.sleep_time)
|
|
except Exception as e:
|
|
if args.debug:
|
|
raise e
|
|
logger.exception(e)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
run()
|