change: Update notify method, make it easy to custom.

This commit is contained in:
EstrellaXD
2023-06-08 11:01:52 +08:00
parent 1404a5c29d
commit ea11bb8a6a
7 changed files with 71 additions and 27 deletions

View File

@@ -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

View File

@@ -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}")

View File

@@ -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

View File

@@ -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)

View File

@@ -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

View File

@@ -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,

View File

@@ -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,