From eab8d9d4a76a39a8829203459d45a192bf5a28c0 Mon Sep 17 00:00:00 2001 From: Attente <19653207+wikrin@users.noreply.github.com> Date: Sat, 28 Sep 2024 00:16:57 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=B7=B2=E5=AE=8C=E6=88=90=E8=AE=A2?= =?UTF-8?q?=E9=98=85=E8=A2=AB=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1=E9=87=8D?= =?UTF-8?q?=E5=A4=8D=E6=B7=BB=E5=8A=A0=E8=80=8C=E4=BA=92=E7=9B=B8=E8=A6=86?= =?UTF-8?q?=E7=9B=96=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 3 ++- plugins/bangumicoll/__init__.py | 23 ++++++++++++++++++----- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 9a6f9e7..651a73d 100644 --- a/package.json +++ b/package.json @@ -3,11 +3,12 @@ "name": "Bangumi收藏订阅", "description": "Bangumi用户收藏添加到订阅", "labels": "订阅", - "version": "1.1", + "version": "1.2", "icon": "https://raw.githubusercontent.com/wikrin/MoviePilot-Plugins/main/icons/bangumi_b.png", "author": "Attente", "level": 2, "history": { + "v1.2": "修复已完成订阅条目重复添加的问题", "v1.1": "新增根据收藏状态移除由此插件添加的订阅", "v1.0": "将bangumi用户收藏添加到 MP 订阅,部分功能未实现" } diff --git a/plugins/bangumicoll/__init__.py b/plugins/bangumicoll/__init__.py index 52a0dbc..adddc34 100644 --- a/plugins/bangumicoll/__init__.py +++ b/plugins/bangumicoll/__init__.py @@ -16,6 +16,9 @@ from app.utils.http import RequestUtils from app.db.subscribe_oper import SubscribeOper from app.helper.subscribe import SubscribeHelper from app.schemas.types import NotificationType +from app.db import db_query +from app.db.models.subscribehistory import SubscribeHistory +from sqlalchemy.orm import Session class BangumiColl(_PluginBase): @@ -26,7 +29,7 @@ class BangumiColl(_PluginBase): # 插件图标 plugin_icon = "https://raw.githubusercontent.com/wikrin/MoviePilot-Plugins/main/icons/bangumi_b.png" # 插件版本 - plugin_version = "1.1" + plugin_version = "1.2" # 插件作者 plugin_author = "Attente" # 作者主页 @@ -421,8 +424,10 @@ class BangumiColl(_PluginBase): for i in self.subscribechain.subscribeoper.list() if i.bangumiid and i.username == "Bangumi订阅" } + ## 获取历史订阅 + db_hist = self.get_subscribe_history() # 新增条目 - new_sub = items.keys() - db_sub.keys() + new_sub = items.keys() - db_sub.keys() - db_hist logger.debug(f"待新增条目:{new_sub}") # 移除条目 del_sub = db_sub.keys() - items.keys() @@ -481,7 +486,7 @@ class BangumiColl(_PluginBase): # 额外参数 kwargs = { "save_path": self._save_path, - "sites": self._sites, + "sites": str(self._sites), } # 添加到订阅 self.subscribechain.add( @@ -527,8 +532,7 @@ class BangumiColl(_PluginBase): def are_dates(date_str1, date_str2, threshold_days: int = 7) -> bool: """ 对比两个日期字符串是否接近 - :param date_str1: 第一个日期字符串,格式为'YYYY-MM-DD' - :param date_str2: 第二个日期字符串,格式为'YYYY-MM-DD' + :param date_str: 日期字符串,格式为'YYYY-MM-DD' :param threshold_days: 阈值天数,默认为7天 :return: 如果两个日期之间的差异小于等于阈值天数,则返回True,否则返回False """ @@ -544,3 +548,12 @@ class BangumiColl(_PluginBase): # 比较差异和阈值 return delta <= threshold + + @db_query + def get_subscribe_history(self, db: Session = None) -> set: + ''' + 获取已完成的订阅 + ''' + result = db.query(SubscribeHistory).filter(SubscribeHistory.bangumiid != None).all() + return set([i.bangumiid for i in result]) + \ No newline at end of file