From 7a0e8caf70c2222d443614bda6a97c1995b50809 Mon Sep 17 00:00:00 2001 From: EstrellaXD Date: Wed, 10 May 2023 12:12:13 +0800 Subject: [PATCH] Fix #249 --- src/module/database/operator.py | 11 ++++++----- src/module/rss/rss_analyser.py | 33 ++++++++++++++++++--------------- 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/src/module/database/operator.py b/src/module/database/operator.py index bc623308..6df09e9f 100644 --- a/src/module/database/operator.py +++ b/src/module/database/operator.py @@ -87,10 +87,12 @@ class DataOperator(DataConnector): return self._cursor.rowcount == 1 def update_rss(self, title_raw, rss_set: str): - # Update rss and select all data + # Update rss and added self._cursor.execute( """ - UPDATE bangumi SET rss_link = :rss_link WHERE title_raw = :title_raw + UPDATE bangumi + SET rss_link = :rss_link AND added = 0 + WHERE title_raw = :title_raw """, {"rss_link": rss_set, "title_raw": title_raw}, ) @@ -159,11 +161,10 @@ class DataOperator(DataConnector): for title in title_dict.copy().keys(): for title_raw, rss_set in data: if title_raw in title: - if rss_link in rss_set: - title_dict.pop(title) - else: + if rss_link not in rss_set: rss_set += "," + rss_link self.update_rss(title_raw, rss_set) + title_dict.pop(title) break return title_dict diff --git a/src/module/rss/rss_analyser.py b/src/module/rss/rss_analyser.py index 46147d8e..526a5f89 100644 --- a/src/module/rss/rss_analyser.py +++ b/src/module/rss/rss_analyser.py @@ -13,6 +13,21 @@ class RSSAnalyser: def __init__(self): self._title_analyser = TitleParser() + def official_title_parser(self, data: BangumiData, mikan_title: str): + if settings.rss_parser.parser_type == "mikan": + data.official_title = mikan_title + elif settings.rss_parser.parser_type == "tmdb": + tmdb_title, season, year = self._title_analyser.tmdb_parser( + data.official_title, + data.season, + settings.rss_parser.language + ) + data.official_title = tmdb_title + data.year = year + data.season = season + else: + pass + def rss_to_data(self, rss_link: str, full_parse: bool = True) -> list[BangumiData]: with RequestContent() as req: rss_torrents = req.get_torrents(rss_link) @@ -31,22 +46,10 @@ class RSSAnalyser: raw=raw_title, rss_link=rss_link, _id=_id ) if data and data.title_raw not in [i.title_raw for i in new_data]: - poster_link, official_title = req.get_mikan_info(homepage) + poster_link, mikan_title = req.get_mikan_info(homepage) data.poster_link = poster_link # Official title type - if settings.rss_parser.parser_type == "mikan": - data.official_title = official_title - elif settings.rss_parser.parser_type == "tmdb": - official_title, season, year = self._title_analyser.tmdb_parser( - data.official_title, - data.season, - settings.rss_parser.language - ) - data.official_title = official_title - data.year = year - data.season = season - else: - pass + self.official_title_parser(data, mikan_title) if not full_parse: op.insert(data) return [data] @@ -67,5 +70,5 @@ class RSSAnalyser: if __name__ == '__main__': from module.conf import setup_logger setup_logger() - link = "https://mikanani.me/RSS/Bangumi?bangumiId=2906&subgroupid=552" + link = "https://mikan.estrella.cloud/RSS/Bangumi?bangumiId=2906&subgroupid=552" data = RSSAnalyser().rss_to_data(link)