Files
Auto_Bangumi/src/module/rss/rss_analyser.py
EstrellaXD 5c71b9d35d - Rewrite config class
- Change multiprocessing to thread
- black all code
2023-05-06 23:47:44 +08:00

53 lines
1.8 KiB
Python

import re
import logging
from module.network import RequestContent
from module.parser import TitleParser
from module.models import BangumiData, Config
from module.database import DataOperator
logger = logging.getLogger(__name__)
class RSSAnalyser:
def __init__(self, settings: Config):
self._title_analyser = TitleParser()
self.settings = settings
def rss_to_datas(self, rss_link: str) -> list[BangumiData]:
with RequestContent() as req:
rss_torrents = req.get_torrents(rss_link)
title_list = [torrent.name for torrent in rss_torrents]
data_list = []
with DataOperator() as op:
add_title_list = op.not_exist_titles(title_list)
_id = op.gen_id()
for raw_title in add_title_list:
data = self._title_analyser.raw_parser(
raw=raw_title, _id=_id, settings=self.settings
)
if data is not None and op.match_title(data.official_title) is None:
data_list.append(data)
_id += 1
op.insert_list(data_list)
return data_list
def rss_to_data(self, url, _filter: bool = True) -> BangumiData:
with RequestContent() as req:
rss_torrents = req.get_torrents(url, _filter)
for torrent in rss_torrents:
try:
data = self._title_analyser.raw_parser(
torrent.name, settings=self.settings
)
return data
except Exception as e:
logger.debug(e)
def run(self, rss_link: str):
logger.info("Start collecting RSS info.")
try:
return self.rss_to_datas(rss_link)
except Exception as e:
logger.debug(e)