fix wechat message

This commit is contained in:
jxxghp
2023-06-10 23:07:26 +08:00
parent 2a6b6c5c80
commit bfa78c5afb
7 changed files with 34 additions and 9 deletions

View File

@ -130,8 +130,10 @@ class ChainBase(AbstractSingleton, metaclass=Singleton):
return self.run_module("post_medias_message", title=title, items=items, userid=userid) return self.run_module("post_medias_message", title=title, items=items, userid=userid)
def post_torrents_message(self, title: str, items: List[Context], def post_torrents_message(self, title: str, items: List[Context],
mediainfo: MediaInfo,
userid: Union[str, int] = None) -> Optional[bool]: userid: Union[str, int] = None) -> Optional[bool]:
return self.run_module("post_torrents_message", title=title, items=items, userid=userid) return self.run_module("post_torrents_message", title=title, mediainfo=mediainfo,
items=items, userid=userid)
def scrape_metadata(self, path: Path, mediainfo: MediaInfo) -> None: def scrape_metadata(self, path: Path, mediainfo: MediaInfo) -> None:
return self.run_module("scrape_metadata", path=path, mediainfo=mediainfo) return self.run_module("scrape_metadata", path=path, mediainfo=mediainfo)

View File

@ -114,6 +114,7 @@ class UserMessageChain(ChainBase):
logger.info(f"搜索到 {len(contexts)} 条数据,开始发送选择消息 ...") logger.info(f"搜索到 {len(contexts)} 条数据,开始发送选择消息 ...")
self.__post_torrents_message(title=mediainfo.title, self.__post_torrents_message(title=mediainfo.title,
items=contexts[:self._page_size], items=contexts[:self._page_size],
mediainfo=mediainfo,
userid=userid, userid=userid,
total=len(contexts)) total=len(contexts))
@ -212,6 +213,7 @@ class UserMessageChain(ChainBase):
# 发送种子数据 # 发送种子数据
self.__post_torrents_message(title=self._current_media.title, self.__post_torrents_message(title=self._current_media.title,
items=cache_list[start:end], items=cache_list[start:end],
mediainfo=self._current_media,
userid=userid, userid=userid,
total=len(cache_list)) total=len(cache_list))
else: else:
@ -242,6 +244,7 @@ class UserMessageChain(ChainBase):
if cache_type == "Torrent": if cache_type == "Torrent":
# 发送种子数据 # 发送种子数据
self.__post_torrents_message(title=self._current_media.title, self.__post_torrents_message(title=self._current_media.title,
mediainfo=self._current_media,
items=cache_list, userid=userid, total=total) items=cache_list, userid=userid, total=total)
else: else:
# 发送媒体数据 # 发送媒体数据
@ -305,12 +308,14 @@ class UserMessageChain(ChainBase):
userid=userid userid=userid
) )
def __post_torrents_message(self, title: str, items: list, userid: str, total: int): def __post_torrents_message(self, title: str, items: list,
mediainfo: MediaInfo, userid: str, total: int):
""" """
发送种子列表消息 发送种子列表消息
""" """
self.post_torrents_message( self.post_torrents_message(
title=f"{title}】共找到{total}条相关资源请回复对应数字下载0: 自动选择 p: 上一页 n: 下一页)", title=f"{title}】共找到{total}条相关资源请回复对应数字下载0: 自动选择 p: 上一页 n: 下一页)",
items=items, items=items,
mediainfo=mediainfo,
userid=userid userid=userid
) )

View File

@ -211,11 +211,13 @@ class _ModuleBase(metaclass=ABCMeta):
pass pass
def post_torrents_message(self, title: str, items: List[Context], def post_torrents_message(self, title: str, items: List[Context],
mediainfo: MediaInfo,
userid: Union[str, int] = None) -> Optional[bool]: userid: Union[str, int] = None) -> Optional[bool]:
""" """
发送种子信息选择列表 发送种子信息选择列表
:param title: 标题 :param title: 标题
:param items: 消息列表 :param items: 消息列表
:param mediainfo: 识别的媒体信息
:param userid: 用户ID :param userid: 用户ID
:return: 成功或失败 :return: 成功或失败
""" """

View File

@ -114,15 +114,18 @@ class TelegramModule(_ModuleBase):
return self.telegram.send_meidas_msg(title=title, medias=items, userid=userid) return self.telegram.send_meidas_msg(title=title, medias=items, userid=userid)
def post_torrents_message(self, title: str, items: List[Context], def post_torrents_message(self, title: str, items: List[Context],
mediainfo: MediaInfo = None,
userid: Union[str, int] = None) -> Optional[bool]: userid: Union[str, int] = None) -> Optional[bool]:
""" """
发送种子信息选择列表 发送种子信息选择列表
:param title: 标题 :param title: 标题
:param items: 消息列表 :param items: 消息列表
:param mediainfo: 媒体信息
:param userid: 用户ID :param userid: 用户ID
:return: 成功或失败 :return: 成功或失败
""" """
return self.telegram.send_torrents_msg(title=title, torrents=items, userid=userid) return self.telegram.send_torrents_msg(title=title, torrents=items,
mediainfo=mediainfo, userid=userid)
def register_commands(self, commands: dict): def register_commands(self, commands: dict):
""" """

View File

@ -126,7 +126,9 @@ class Telegram(metaclass=Singleton):
logger.error(f"发送消息失败:{msg_e}") logger.error(f"发送消息失败:{msg_e}")
return False return False
def send_torrents_msg(self, torrents: List[Context], userid: str = "", title: str = "") -> Optional[bool]: def send_torrents_msg(self, torrents: List[Context],
mediainfo: MediaInfo = None,
userid: str = "", title: str = "") -> Optional[bool]:
""" """
发送列表消息 发送列表消息
""" """
@ -151,7 +153,8 @@ class Telegram(metaclass=Singleton):
else: else:
chat_id = self._telegram_chat_id chat_id = self._telegram_chat_id
return self.__send_request(userid=chat_id, caption=caption) return self.__send_request(userid=chat_id, caption=caption,
image=mediainfo.get_message_image())
except Exception as msg_e: except Exception as msg_e:
logger.error(f"发送消息失败:{msg_e}") logger.error(f"发送消息失败:{msg_e}")

View File

@ -142,11 +142,13 @@ class WechatModule(_ModuleBase):
return self.wechat.send_medias_msg(medias=items, userid=userid) return self.wechat.send_medias_msg(medias=items, userid=userid)
def post_torrents_message(self, title: str, items: List[Context], def post_torrents_message(self, title: str, items: List[Context],
mediainfo: MediaInfo,
userid: Union[str, int] = None) -> Optional[bool]: userid: Union[str, int] = None) -> Optional[bool]:
""" """
发送种子信息选择列表 发送种子信息选择列表
:param title: 标题 :param title: 标题
:param items: 消息列表 :param items: 消息列表
:param mediainfo: 媒体信息
:param userid: 用户ID :param userid: 用户ID
:return: 成功或失败 :return: 成功或失败
""" """

View File

@ -5,6 +5,7 @@ from typing import Optional, List
from app.core.config import settings from app.core.config import settings
from app.core.context import MediaInfo, Context from app.core.context import MediaInfo, Context
from app.core.metainfo import MetaInfo
from app.log import logger from app.log import logger
from app.utils.http import RequestUtils from app.utils.http import RequestUtils
from app.utils.singleton import Singleton from app.utils.singleton import Singleton
@ -188,7 +189,8 @@ class WeChat(metaclass=Singleton):
} }
return self.__post_request(message_url, req_json) return self.__post_request(message_url, req_json)
def send_torrents_msg(self, torrents: List[Context], userid: str = "", title: str = "") -> Optional[bool]: def send_torrents_msg(self, torrents: List[Context], mediainfo: MediaInfo,
userid: str = "", title: str = "") -> Optional[bool]:
""" """
发送列表消息 发送列表消息
""" """
@ -208,10 +210,16 @@ class WeChat(metaclass=Singleton):
index = 1 index = 1
for context in torrents: for context in torrents:
torrent = context.torrent_info torrent = context.torrent_info
meta = MetaInfo(title=torrent.title, subtitle=torrent.description)
torrent_title = f"{torrent.site_name}" \
f"{meta.get_season_episode_string()} " \
f"{meta.get_resource_type_string()} " \
f"{meta.get_volume_factor_string()} " \
f"{torrent.seeders}"
articles.append({ articles.append({
"title": f"{torrent.title}", "title": torrent_title,
"description": f"{torrent.site_name}{torrent.description} " "description": torrent.description if index == 1 else '',
f"{torrent.get_volume_factor_string()} {torrent.seeders}", "picurl": mediainfo.get_message_image() if index == 1 else '',
"url": torrent.page_url "url": torrent.page_url
}) })
index += 1 index += 1