From 1404a5c29daf1654ac2cde8cfd78dd1c21361fcd Mon Sep 17 00:00:00 2001 From: root Date: Wed, 7 Jun 2023 23:30:12 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=80=9A=E7=9F=A5?= =?UTF-8?q?=E6=A0=87=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/module/notification/notification.py | 10 ++++++---- src/module/notification/plugin/bark.py | 4 ++-- src/module/notification/plugin/server_chan.py | 4 ++-- src/module/notification/plugin/slack.py | 4 ++-- src/module/notification/plugin/telegram.py | 2 +- src/module/notification/plugin/wecom.py | 10 +++++----- 6 files changed, 18 insertions(+), 16 deletions(-) diff --git a/src/module/notification/notification.py b/src/module/notification/notification.py index 22bde17a..d94841e0 100644 --- a/src/module/notification/notification.py +++ b/src/module/notification/notification.py @@ -32,7 +32,7 @@ class PostNotification: ) @staticmethod - def _gen_message(notify: Notification) -> str: + def _gen_message(notify: Notification) -> (str, str): with BangumiDatabase() as db: poster_path = db.match_poster(notify.official_title) if poster_path: @@ -44,12 +44,14 @@ class PostNotification: text = f""" 番剧名称:{notify.official_title}\n季度: 第{notify.season}季\n更新集数: 第{notify.episode}集\n """ - return text + + title = f"""{notify.official_title}S{notify.season}E{notify.episode}""" + return text, title def send_msg(self, notify: Notification) -> bool: - text = self._gen_message(notify) + text, title = self._gen_message(notify) try: - self.notifier.post_msg(text) + self.notifier.post_msg(text, title) 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..05e8b693 100644 --- a/src/module/notification/plugin/bark.py +++ b/src/module/notification/plugin/bark.py @@ -11,8 +11,8 @@ 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} + def post_msg(self, text, title: str) -> bool: + data = {"title": 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..e2fed8ba 100644 --- a/src/module/notification/plugin/server_chan.py +++ b/src/module/notification/plugin/server_chan.py @@ -12,9 +12,9 @@ class ServerChanNotification(RequestContent): super().__init__() self.notification_url = f"https://sctapi.ftqq.com/{token}.send" - def post_msg(self, text: str) -> bool: + def post_msg(self, text: str, title: str) -> bool: data = { - "title": "AutoBangumi 番剧更新", + "title": 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..43097657 100644 --- a/src/module/notification/plugin/slack.py +++ b/src/module/notification/plugin/slack.py @@ -11,8 +11,8 @@ 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} + def post_msg(self, text: str, title: str) -> bool: + data = {"title": 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..94211f73 100644 --- a/src/module/notification/plugin/telegram.py +++ b/src/module/notification/plugin/telegram.py @@ -11,7 +11,7 @@ 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: + def post_msg(self, text: str, title: str) -> bool: 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..78bb6649 100644 --- a/src/module/notification/plugin/wecom.py +++ b/src/module/notification/plugin/wecom.py @@ -13,7 +13,7 @@ class WecomNotification(RequestContent): self.notification_url = f"{chat_id}" self.token = token - def post_msg(self, text: str) -> bool: + def post_msg(self, text: str, title: str) -> bool: ##Change message format to match Wecom push better info = text.split(":") print(info) @@ -24,10 +24,10 @@ class WecomNotification(RequestContent): if picurl == "": 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) From ea11bb8a6a4330b20cf2deb7164a060f4eb9abb7 Mon Sep 17 00:00:00 2001 From: EstrellaXD Date: Thu, 8 Jun 2023 11:01:52 +0800 Subject: [PATCH 2/2] change: Update notify method, make it easy to custom. --- src/module/models/bangumi.py | 1 + src/module/notification/notification.py | 23 +++++++++---------- src/module/notification/plugin/bark.py | 14 +++++++++-- src/module/notification/plugin/server_chan.py | 13 +++++++++-- src/module/notification/plugin/slack.py | 13 +++++++++-- src/module/notification/plugin/telegram.py | 13 +++++++++-- src/module/notification/plugin/wecom.py | 21 +++++++++++------ 7 files changed, 71 insertions(+), 27 deletions(-) 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 d94841e0..1e13ff67 100644 --- a/src/module/notification/notification.py +++ b/src/module/notification/notification.py @@ -32,26 +32,25 @@ class PostNotification: ) @staticmethod - def _gen_message(notify: Notification) -> (str, 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 - """ - - title = f"""{notify.official_title}S{notify.season}E{notify.episode}""" - return text, title + 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, title = self._gen_message(notify) + self._get_poster(notify) try: - self.notifier.post_msg(text, title) + 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 05e8b693..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, title: str) -> bool: - data = {"title": title, "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 e2fed8ba..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, title: 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": title, + "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 43097657..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: str, title: str) -> bool: - data = {"title": title, "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 94211f73..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, title: 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 78bb6649..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,15 +15,20 @@ class WecomNotification(RequestContent): self.notification_url = f"{chat_id}" self.token = token - def post_msg(self, text: str, title: 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,