From 7e1246402563ce1dbfd3419bb968511f469345c4 Mon Sep 17 00:00:00 2001 From: KotaHv <92137267+KotaHv@users.noreply.github.com> Date: Wed, 24 Jan 2024 03:33:49 +0800 Subject: [PATCH 1/3] fix: delete a bangumi did not remove associated RSS --- backend/src/module/database/rss.py | 7 +++++++ backend/src/module/manager/torrent.py | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/backend/src/module/database/rss.py b/backend/src/module/database/rss.py index 99a00abe9..2df9983b7 100644 --- a/backend/src/module/database/rss.py +++ b/backend/src/module/database/rss.py @@ -94,3 +94,10 @@ def delete_all(self): condition = delete(RSSItem) self.session.exec(condition) self.session.commit() + + def delete_by_name(self, name: str): + statement = select(RSSItem).where(RSSItem.name == name) + rss = self.session.exec(statement).first() + self.session.delete(rss) + self.session.commit() + logger.debug(f"[Database] Delete RSS Item name: {name}.") diff --git a/backend/src/module/manager/torrent.py b/backend/src/module/manager/torrent.py index cfe8d4a39..4574b1bae 100644 --- a/backend/src/module/manager/torrent.py +++ b/backend/src/module/manager/torrent.py @@ -40,7 +40,7 @@ def delete_rule(self, _id: int | str, file: bool = False): data = self.bangumi.search_id(int(_id)) if isinstance(data, Bangumi): with DownloadClient() as client: - self.rss.delete(data.official_title) + self.rss.delete_by_name(data.official_title) self.bangumi.delete_one(int(_id)) if file: torrent_message = self.delete_torrents(data, client) From 6b276b78b6e73cb2975ea25550f829da0b01895c Mon Sep 17 00:00:00 2001 From: KotaHv <92137267+KotaHv@users.noreply.github.com> Date: Sat, 25 May 2024 03:25:02 +0800 Subject: [PATCH 2/3] Revert "fix: delete a bangumi did not remove associated RSS" This reverts commit 7e1246402563ce1dbfd3419bb968511f469345c4. --- backend/src/module/database/rss.py | 7 ------- backend/src/module/manager/torrent.py | 2 +- 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/backend/src/module/database/rss.py b/backend/src/module/database/rss.py index 2df9983b7..99a00abe9 100644 --- a/backend/src/module/database/rss.py +++ b/backend/src/module/database/rss.py @@ -94,10 +94,3 @@ def delete_all(self): condition = delete(RSSItem) self.session.exec(condition) self.session.commit() - - def delete_by_name(self, name: str): - statement = select(RSSItem).where(RSSItem.name == name) - rss = self.session.exec(statement).first() - self.session.delete(rss) - self.session.commit() - logger.debug(f"[Database] Delete RSS Item name: {name}.") diff --git a/backend/src/module/manager/torrent.py b/backend/src/module/manager/torrent.py index 4574b1bae..cfe8d4a39 100644 --- a/backend/src/module/manager/torrent.py +++ b/backend/src/module/manager/torrent.py @@ -40,7 +40,7 @@ def delete_rule(self, _id: int | str, file: bool = False): data = self.bangumi.search_id(int(_id)) if isinstance(data, Bangumi): with DownloadClient() as client: - self.rss.delete_by_name(data.official_title) + self.rss.delete(data.official_title) self.bangumi.delete_one(int(_id)) if file: torrent_message = self.delete_torrents(data, client) From 9de7acecce0736eedb485a4bd53cd2f6194ecc1a Mon Sep 17 00:00:00 2001 From: KotaHv <92137267+KotaHv@users.noreply.github.com> Date: Mon, 10 Jun 2024 22:57:53 +0800 Subject: [PATCH 3/3] fix: Re-fixed delete a bangumi did not remove associated RSS, and prevent deletion of aggregate RSS --- backend/src/module/database/rss.py | 3 +++ backend/src/module/manager/torrent.py | 7 ++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/backend/src/module/database/rss.py b/backend/src/module/database/rss.py index 99a00abe9..a803d4fba 100644 --- a/backend/src/module/database/rss.py +++ b/backend/src/module/database/rss.py @@ -80,6 +80,9 @@ def search_aggregate(self) -> list[RSSItem]: select(RSSItem).where(and_(RSSItem.aggregate, RSSItem.enabled)) ).all() + def search_url(self, url: str) -> RSSItem | None: + return self.session.exec(select(RSSItem).where(RSSItem.url == url)).first() + def delete(self, _id: int) -> bool: condition = delete(RSSItem).where(RSSItem.id == _id) try: diff --git a/backend/src/module/manager/torrent.py b/backend/src/module/manager/torrent.py index cfe8d4a39..d3cab2c1a 100644 --- a/backend/src/module/manager/torrent.py +++ b/backend/src/module/manager/torrent.py @@ -40,7 +40,12 @@ def delete_rule(self, _id: int | str, file: bool = False): data = self.bangumi.search_id(int(_id)) if isinstance(data, Bangumi): with DownloadClient() as client: - self.rss.delete(data.official_title) + rss_links = filter(None, data.rss_link.split(",")) + for rss_link in rss_links: + rss = self.rss.search_url(rss_link) + if rss is None or rss.aggregate: + continue + self.rss.delete(rss.id) self.bangumi.delete_one(int(_id)) if file: torrent_message = self.delete_torrents(data, client)