diff --git a/src/module/models/bangumi.py b/src/module/models/bangumi.py index f1c03369..2dd73340 100644 --- a/src/module/models/bangumi.py +++ b/src/module/models/bangumi.py @@ -28,6 +28,7 @@ class Notification(BaseModel): official_title: str = Field(..., alias="official_title", title="番剧名") season: int = Field(..., alias="season", title="番剧季度") episode: int = Field(..., alias="episode", title="番剧集数") + poster_path: str | None = Field(None, alias="poster_path", title="番剧海报路径") @dataclass diff --git a/src/module/notification/notification.py b/src/module/notification/notification.py index 22bde17a..1e13ff67 100644 --- a/src/module/notification/notification.py +++ b/src/module/notification/notification.py @@ -32,24 +32,25 @@ class PostNotification: ) @staticmethod - def _gen_message(notify: Notification) -> str: + def _get_poster(notify: Notification): with BangumiDatabase() as db: poster_path = db.match_poster(notify.official_title) if poster_path: poster_link = "https://mikanani.me" + poster_path - text = f""" - 番剧名称:{notify.official_title}\n季度: 第{notify.season}季\n更新集数: 第{notify.episode}集\n{poster_link}\n - """ + # text = f""" + # 番剧名称:{notify.official_title}\n季度: 第{notify.season}季\n更新集数: 第{notify.episode}集\n{poster_link}\n + # """ else: - text = f""" - 番剧名称:{notify.official_title}\n季度: 第{notify.season}季\n更新集数: 第{notify.episode}集\n - """ - return text + poster_link = "https://mikanani.me" + # text = f""" + # 番剧名称:{notify.official_title}\n季度: 第{notify.season}季\n更新集数: 第{notify.episode}集\n + # """ + notify.poster_path = poster_link def send_msg(self, notify: Notification) -> bool: - text = self._gen_message(notify) + self._get_poster(notify) try: - self.notifier.post_msg(text) + self.notifier.post_msg(notify) logger.debug(f"Send notification: {notify.official_title}") except Exception as e: logger.warning(f"Failed to send notification: {e}") diff --git a/src/module/notification/plugin/bark.py b/src/module/notification/plugin/bark.py index f405ab4b..e825a2c9 100644 --- a/src/module/notification/plugin/bark.py +++ b/src/module/notification/plugin/bark.py @@ -1,5 +1,7 @@ import logging + from module.network import RequestContent +from module.models import Notification logger = logging.getLogger(__name__) @@ -11,8 +13,16 @@ class BarkNotification(RequestContent): self.token = token self.notification_url = "https://api.day.app/push" - def post_msg(self, text) -> bool: - data = {"title": "AutoBangumi 番剧更新", "body": text, "device_key": self.token} + @staticmethod + def gen_message(notify: Notification) -> str: + text = f""" + 番剧名称:{notify.official_title}\n季度: 第{notify.season}季\n更新集数: 第{notify.episode}集\n{notify.poster_path}\n + """ + return text + + def post_msg(self, notify: Notification) -> bool: + text = self.gen_message(notify) + data = {"title": notify.official_title, "body": text, "device_key": self.token} resp = self.post_data(self.notification_url, data) logger.debug(f"Bark notification: {resp.status_code}") return resp.status_code == 200 diff --git a/src/module/notification/plugin/server_chan.py b/src/module/notification/plugin/server_chan.py index 5b4b32d0..9903ed3e 100644 --- a/src/module/notification/plugin/server_chan.py +++ b/src/module/notification/plugin/server_chan.py @@ -1,6 +1,7 @@ import logging from module.network import RequestContent +from module.models import Notification logger = logging.getLogger(__name__) @@ -12,9 +13,17 @@ class ServerChanNotification(RequestContent): super().__init__() self.notification_url = f"https://sctapi.ftqq.com/{token}.send" - def post_msg(self, text: str) -> bool: + @staticmethod + def gen_message(notify: Notification) -> str: + text = f""" + 番剧名称:{notify.official_title}\n季度: 第{notify.season}季\n更新集数: 第{notify.episode}集\n{notify.poster_path}\n + """ + return text + + def post_msg(self, notify: Notification) -> bool: + text = self.gen_message(notify) data = { - "title": "AutoBangumi 番剧更新", + "title": notify.official_title, "desp": text, } resp = self.post_data(self.notification_url, data) diff --git a/src/module/notification/plugin/slack.py b/src/module/notification/plugin/slack.py index 1773e85d..af4a0d83 100644 --- a/src/module/notification/plugin/slack.py +++ b/src/module/notification/plugin/slack.py @@ -1,6 +1,7 @@ import logging from module.network import RequestContent +from module.models import Notification logger = logging.getLogger(__name__) @@ -11,8 +12,16 @@ class SlackNotification(RequestContent): self.token = token self.notification_url = "https://api.day.app/push" - def post_msg(self, text) -> bool: - data = {"title": "AutoBangumi 番剧更新", "body": text, "device_key": self.token} + @staticmethod + def gen_message(notify: Notification) -> str: + text = f""" + 番剧名称:{notify.official_title}\n季度: 第{notify.season}季\n更新集数: 第{notify.episode}集\n{notify.poster_path}\n + """ + return text + + def post_msg(self, notify: Notification) -> bool: + text = self.gen_message(notify) + data = {"title": notify.official_title, "body": text, "device_key": self.token} resp = self.post_data(self.notification_url, data) logger.debug(f"Bark notification: {resp.status_code}") return resp.status_code == 200 \ No newline at end of file diff --git a/src/module/notification/plugin/telegram.py b/src/module/notification/plugin/telegram.py index 71e90c16..b269aea3 100644 --- a/src/module/notification/plugin/telegram.py +++ b/src/module/notification/plugin/telegram.py @@ -1,6 +1,7 @@ import logging -from module.network.request_contents import RequestContent +from module.network import RequestContent +from module.models import Notification logger = logging.getLogger(__name__) @@ -11,7 +12,15 @@ class TelegramNotification(RequestContent): self.notification_url = f"https://api.telegram.org/bot{token}/sendMessage" self.chat_id = chat_id - def post_msg(self, text: str) -> bool: + @staticmethod + def gen_message(notify: Notification) -> str: + text = f""" + 番剧名称:{notify.official_title}\n季度: 第{notify.season}季\n更新集数: 第{notify.episode}集\n{notify.poster_path}\n + """ + return text + + def post_msg(self, notify: Notification) -> bool: + text = self.gen_message(notify) data = { "chat_id": self.chat_id, "text": text, diff --git a/src/module/notification/plugin/wecom.py b/src/module/notification/plugin/wecom.py index c56e97e2..11a63a75 100644 --- a/src/module/notification/plugin/wecom.py +++ b/src/module/notification/plugin/wecom.py @@ -1,5 +1,7 @@ import logging + from module.network import RequestContent +from module.models import Notification logger = logging.getLogger(__name__) @@ -13,21 +15,26 @@ class WecomNotification(RequestContent): self.notification_url = f"{chat_id}" self.token = token - def post_msg(self, text: str) -> bool: + @staticmethod + def gen_message(notify: Notification) -> str: + text = f""" + 番剧名称:{notify.official_title}\n季度: 第{notify.season}季\n更新集数: 第{notify.episode}集\n{notify.poster_path}\n + """ + return text + + def post_msg(self, notify: Notification) -> bool: ##Change message format to match Wecom push better - info = text.split(":") - print(info) - title = "【番剧更新】" + info[1].split("\n")[0].strip() - msg = info[2].split("\n")[0].strip()+" "+info[3].split("\n")[0].strip() - picurl = info[3].split("\n")[1].strip() + title = "【番剧更新】" + notify.official_title + msg = self.gen_message(notify) + picurl = notify.poster_path #Default pic to avoid blank in message. Resolution:1068*455 - if picurl == "": + if picurl == "https://mikanani.me": picurl = "https://article.biliimg.com/bfs/article/d8bcd0408bf32594fd82f27de7d2c685829d1b2e.png" data = { - "key":self.token, - "type": "news", - "title": title, - "msg": msg, + "key":self.token, + "type": "news", + "title": title, + "msg": msg, "picurl":picurl } resp = self.post_data(self.notification_url, data)