This commit is contained in:
jxxghp 2023-10-18 19:26:21 +08:00
parent 2e4536edb6
commit 3d34c26731
55 changed files with 142 additions and 137 deletions

View File

@ -48,7 +48,7 @@ def wechat_verify(echostr: str, msg_signature: str,
sEncodingAESKey=settings.WECHAT_ENCODING_AESKEY, sEncodingAESKey=settings.WECHAT_ENCODING_AESKEY,
sReceiveId=settings.WECHAT_CORPID) sReceiveId=settings.WECHAT_CORPID)
except Exception as err: except Exception as err:
logger.error(f"微信请求验证失败: {err}") logger.error(f"微信请求验证失败: {str(err)}")
return str(err) return str(err)
ret, sEchoStr = wxcpt.VerifyURL(sMsgSignature=msg_signature, ret, sEchoStr = wxcpt.VerifyURL(sMsgSignature=msg_signature,
sTimeStamp=timestamp, sTimeStamp=timestamp,

View File

@ -45,7 +45,7 @@ class ChainBase(metaclass=ABCMeta):
with open(cache_path, 'rb') as f: with open(cache_path, 'rb') as f:
return pickle.load(f) return pickle.load(f)
except Exception as err: except Exception as err:
logger.error(f"加载缓存 {filename} 出错:{err}") logger.error(f"加载缓存 {filename} 出错:{str(err)}")
return None return None
@staticmethod @staticmethod
@ -57,7 +57,7 @@ class ChainBase(metaclass=ABCMeta):
with open(settings.TEMP_PATH / filename, 'wb') as f: with open(settings.TEMP_PATH / filename, 'wb') as f:
pickle.dump(cache, f) pickle.dump(cache, f)
except Exception as err: except Exception as err:
logger.error(f"保存缓存 {filename} 出错:{err}") logger.error(f"保存缓存 {filename} 出错:{str(err)}")
finally: finally:
# 主动资源回收 # 主动资源回收
del cache del cache
@ -107,7 +107,7 @@ class ChainBase(metaclass=ABCMeta):
# 中止继续执行 # 中止继续执行
break break
except Exception as err: except Exception as err:
logger.error(f"运行模块 {method} 出错:{module.__class__.__name__} - {err}\n{traceback.print_exc()}") logger.error(f"运行模块 {method} 出错:{module.__class__.__name__} - {str(err)}\n{traceback.print_exc()}")
return result return result
def recognize_media(self, meta: MetaBase = None, def recognize_media(self, meta: MetaBase = None,

View File

@ -161,4 +161,4 @@ class SystemChain(ChainBase, metaclass=Singleton):
logger.warn("未找到版本号") logger.warn("未找到版本号")
return None return None
except Exception as err: except Exception as err:
logger.error(f"加载版本文件 {version_file} 出错:{err}") logger.error(f"加载版本文件 {version_file} 出错:{str(err)}")

View File

@ -72,7 +72,7 @@ class PluginManager(metaclass=Singleton):
# 设置事件注册状态可用 # 设置事件注册状态可用
eventmanager.enable_events_hander(plugin_id) eventmanager.enable_events_hander(plugin_id)
except Exception as err: except Exception as err:
logger.error(f"加载插件 {plugin_id} 出错:{err} - {traceback.format_exc()}") logger.error(f"加载插件 {plugin_id} 出错:{str(err)} - {traceback.format_exc()}")
def reload_plugin(self, plugin_id: str, conf: dict): def reload_plugin(self, plugin_id: str, conf: dict):
""" """

View File

@ -45,4 +45,4 @@ def update_db():
alembic_cfg.set_main_option('sqlalchemy.url', f"sqlite:///{db_location}") alembic_cfg.set_main_option('sqlalchemy.url', f"sqlite:///{db_location}")
upgrade(alembic_cfg, 'head') upgrade(alembic_cfg, 'head')
except Exception as e: except Exception as e:
logger.error(f'数据库更新失败:{e}') logger.error(f'数据库更新失败:{str(e)}')

View File

@ -16,7 +16,12 @@ def db_persist(func):
def wrapper(*args, **kwargs): def wrapper(*args, **kwargs):
with DBLock: with DBLock:
db: Session = kwargs.get("db") or args[1] db: Session = kwargs.get("db")
if not db:
for arg in args:
if isinstance(arg, Session):
db = arg
break
try: try:
if db: if db:
db.close() db.close()

View File

@ -49,11 +49,11 @@ class PlaywrightHelper:
# 回调函数 # 回调函数
return callback(page) return callback(page)
except Exception as e: except Exception as e:
logger.error(f"网页操作失败: {e}") logger.error(f"网页操作失败: {str(e)}")
finally: finally:
browser.close() browser.close()
except Exception as e: except Exception as e:
logger.error(f"网页操作失败: {e}") logger.error(f"网页操作失败: {str(e)}")
return None return None
def get_page_source(self, url: str, def get_page_source(self, url: str,
@ -85,12 +85,12 @@ class PlaywrightHelper:
page.wait_for_load_state("networkidle", timeout=timeout * 1000) page.wait_for_load_state("networkidle", timeout=timeout * 1000)
source = page.content() source = page.content()
except Exception as e: except Exception as e:
logger.error(f"获取网页源码失败: {e}") logger.error(f"获取网页源码失败: {str(e)}")
source = None source = None
finally: finally:
browser.close() browser.close()
except Exception as e: except Exception as e:
logger.error(f"获取网页源码失败: {e}") logger.error(f"获取网页源码失败: {str(e)}")
return source return source

View File

@ -162,8 +162,8 @@ class CookieHelper:
page.click(submit_xpath) page.click(submit_xpath)
page.wait_for_load_state("networkidle", timeout=30 * 1000) page.wait_for_load_state("networkidle", timeout=30 * 1000)
except Exception as e: except Exception as e:
logger.error(f"仿真登录失败:{e}") logger.error(f"仿真登录失败:{str(e)}")
return None, None, f"仿真登录失败:{e}" return None, None, f"仿真登录失败:{str(e)}"
# 登录后的源码 # 登录后的源码
html_text = page.content() html_text = page.content()
if not html_text: if not html_text:

View File

@ -15,7 +15,7 @@ class DisplayHelper(metaclass=Singleton):
self._display = Display(visible=False, size=(1024, 768)) self._display = Display(visible=False, size=(1024, 768))
self._display.start() self._display.start()
except Exception as err: except Exception as err:
logger.error(f"DisplayHelper init error: {err}") logger.error(f"DisplayHelper init error: {str(err)}")
def stop(self): def stop(self):
if self._display: if self._display:

View File

@ -95,7 +95,7 @@ class TorrentHelper:
logger.warn(f"触发了站点首次种子下载,且无法自动跳过:{url}") logger.warn(f"触发了站点首次种子下载,且无法自动跳过:{url}")
break break
except Exception as err: except Exception as err:
logger.warn(f"触发了站点首次种子下载,尝试自动跳过时出现错误:{err},链接:{url}") logger.warn(f"触发了站点首次种子下载,尝试自动跳过时出现错误:{str(err)},链接:{url}")
if not skip_flag: if not skip_flag:
return None, None, "", [], "种子数据有误请确认链接是否正确如为PT站点则需手工在站点下载一次种子" return None, None, "", [], "种子数据有误请确认链接是否正确如为PT站点则需手工在站点下载一次种子"
# 种子内容 # 种子内容
@ -113,7 +113,7 @@ class TorrentHelper:
# 成功拿到种子数据 # 成功拿到种子数据
return file_path, req.content, folder_name, file_list, "" return file_path, req.content, folder_name, file_list, ""
except Exception as err: except Exception as err:
logger.error(f"种子文件解析失败:{err}") logger.error(f"种子文件解析失败:{str(err)}")
# 种子数据仍然错误 # 种子数据仍然错误
return None, None, "", [], "种子数据有误,请确认链接是否正确" return None, None, "", [], "种子数据有误,请确认链接是否正确"
# 返回失败 # 返回失败
@ -160,7 +160,7 @@ class TorrentHelper:
logger.debug(f"解析种子:{torrent_path.name} => 目录:{folder_name},文件清单:{file_list}") logger.debug(f"解析种子:{torrent_path.name} => 目录:{folder_name},文件清单:{file_list}")
return folder_name, file_list return folder_name, file_list
except Exception as err: except Exception as err:
logger.error(f"种子文件解析失败:{err}") logger.error(f"种子文件解析失败:{str(err)}")
return "", [] return "", []
@staticmethod @staticmethod

View File

@ -530,5 +530,5 @@ class DoubanModule(_ModuleBase):
file_path=file, file_path=file,
transfer_type=transfer_type) transfer_type=transfer_type)
except Exception as e: except Exception as e:
logger.error(f"刮削文件 {file} 失败,原因:{e}") logger.error(f"刮削文件 {file} 失败,原因:{str(e)}")
logger.info(f"{path} 刮削完成") logger.info(f"{path} 刮削完成")

View File

@ -57,7 +57,7 @@ class DoubanScraper:
season=meta.begin_season, season=meta.begin_season,
season_path=file_path.parent) season_path=file_path.parent)
except Exception as e: except Exception as e:
logger.error(f"{file_path} 刮削失败:{e}") logger.error(f"{file_path} 刮削失败:{str(e)}")
@staticmethod @staticmethod
def __gen_common_nfo(mediainfo: MediaInfo, doc, root): def __gen_common_nfo(mediainfo: MediaInfo, doc, root):
@ -187,7 +187,7 @@ class DoubanScraper:
else: else:
logger.info(f"{file_path.stem}图片下载失败,请检查网络连通性") logger.info(f"{file_path.stem}图片下载失败,请检查网络连通性")
except Exception as err: except Exception as err:
logger.error(f"{file_path.stem}图片下载失败:{err}") logger.error(f"{file_path.stem}图片下载失败:{str(err)}")
def __save_nfo(self, doc, file_path: Path): def __save_nfo(self, doc, file_path: Path):
""" """

View File

@ -382,5 +382,5 @@ class FanartModule(_ModuleBase):
if ret: if ret:
return ret.json() return ret.json()
except Exception as err: except Exception as err:
logger.error(f"获取{queryid}的Fanart图片失败{err}") logger.error(f"获取{queryid}的Fanart图片失败{str(err)}")
return None return None

View File

@ -590,7 +590,7 @@ class FileTransferModule(_ModuleBase):
if path.is_relative_to(libpath): if path.is_relative_to(libpath):
return libpath return libpath
except Exception as e: except Exception as e:
logger.debug(f"计算媒体库路径时出错:{e}") logger.debug(f"计算媒体库路径时出错:{str(e)}")
continue continue
return path return path
@ -618,7 +618,7 @@ class FileTransferModule(_ModuleBase):
max_length = len(relative) max_length = len(relative)
target_path = path target_path = path
except Exception as e: except Exception as e:
logger.debug(f"计算目标路径时出错:{e}") logger.debug(f"计算目标路径时出错:{str(e)}")
continue continue
if target_path: if target_path:
return target_path return target_path

View File

@ -92,7 +92,7 @@ class IndexerModule(_ModuleBase):
if result_array: if result_array:
break break
except Exception as err: except Exception as err:
logger.error(f"{site.get('name')} 搜索出错:{err}") logger.error(f"{site.get('name')} 搜索出错:{str(err)}")
# 索引花费的时间 # 索引花费的时间
seconds = round((datetime.now() - start_time).seconds, 1) seconds = round((datetime.now() - start_time).seconds, 1)

View File

@ -254,7 +254,7 @@ class TorrentSpider:
# 解码为字符串 # 解码为字符串
page_source = raw_data.decode(encoding) page_source = raw_data.decode(encoding)
except Exception as e: except Exception as e:
logger.debug(f"chardet解码失败{e}") logger.debug(f"chardet解码失败{str(e)}")
# 探测utf-8解码 # 探测utf-8解码
if re.search(r"charset=\"?utf-8\"?", ret.text, re.IGNORECASE): if re.search(r"charset=\"?utf-8\"?", ret.text, re.IGNORECASE):
ret.encoding = "utf-8" ret.encoding = "utf-8"
@ -661,4 +661,4 @@ class TorrentSpider:
return self.torrents_info_array return self.torrents_info_array
except Exception as err: except Exception as err:
self.is_error = True self.is_error = True
logger.warn(f"错误:{self.indexername} {err}") logger.warn(f"错误:{self.indexername} {str(err)}")

View File

@ -284,7 +284,7 @@ class Plex(metaclass=Singleton):
if is_subpath(path, Path(location)): if is_subpath(path, Path(location)):
return lib.key, str(path) return lib.key, str(path)
except Exception as err: except Exception as err:
logger.error(f"查找媒体库出错:{err}") logger.error(f"查找媒体库出错:{str(err)}")
return "", "" return "", ""
def get_iteminfo(self, itemid: str) -> Optional[schemas.MediaServerItem]: def get_iteminfo(self, itemid: str) -> Optional[schemas.MediaServerItem]:
@ -313,7 +313,7 @@ class Plex(metaclass=Singleton):
path=path, path=path,
) )
except Exception as err: except Exception as err:
logger.error(f"获取项目详情出错:{err}") logger.error(f"获取项目详情出错:{str(err)}")
return None return None
@staticmethod @staticmethod
@ -372,7 +372,7 @@ class Plex(metaclass=Singleton):
path=path, path=path,
) )
except Exception as err: except Exception as err:
logger.error(f"获取媒体库列表出错:{err}") logger.error(f"获取媒体库列表出错:{str(err)}")
yield None yield None
def get_webhook_message(self, form: any) -> Optional[schemas.WebhookEventInfo]: def get_webhook_message(self, form: any) -> Optional[schemas.WebhookEventInfo]:

View File

@ -57,10 +57,10 @@ class Qbittorrent(metaclass=Singleton):
try: try:
qbt.auth_log_in() qbt.auth_log_in()
except qbittorrentapi.LoginFailed as e: except qbittorrentapi.LoginFailed as e:
logger.error(f"qbittorrent 登录失败:{e}") logger.error(f"qbittorrent 登录失败:{str(e)}")
return qbt return qbt
except Exception as err: except Exception as err:
logger.error(f"qbittorrent 连接出错:{err}") logger.error(f"qbittorrent 连接出错:{str(err)}")
return None return None
def get_torrents(self, ids: Union[str, list] = None, def get_torrents(self, ids: Union[str, list] = None,
@ -86,7 +86,7 @@ class Qbittorrent(metaclass=Singleton):
return results, False return results, False
return torrents or [], False return torrents or [], False
except Exception as err: except Exception as err:
logger.error(f"获取种子列表出错:{err}") logger.error(f"获取种子列表出错:{str(err)}")
return [], True return [], True
def get_completed_torrents(self, ids: Union[str, list] = None, def get_completed_torrents(self, ids: Union[str, list] = None,
@ -126,7 +126,7 @@ class Qbittorrent(metaclass=Singleton):
self.qbc.torrents_delete_tags(torrent_hashes=ids, tags=tag) self.qbc.torrents_delete_tags(torrent_hashes=ids, tags=tag)
return True return True
except Exception as err: except Exception as err:
logger.error(f"移除种子Tag出错{err}") logger.error(f"移除种子Tag出错{str(err)}")
return False return False
def set_torrents_tag(self, ids: Union[str, list], tags: list): def set_torrents_tag(self, ids: Union[str, list], tags: list):
@ -139,7 +139,7 @@ class Qbittorrent(metaclass=Singleton):
# 打标签 # 打标签
self.qbc.torrents_add_tags(tags=tags, torrent_hashes=ids) self.qbc.torrents_add_tags(tags=tags, torrent_hashes=ids)
except Exception as err: except Exception as err:
logger.error(f"设置种子Tag出错{err}") logger.error(f"设置种子Tag出错{str(err)}")
def torrents_set_force_start(self, ids: Union[str, list]): def torrents_set_force_start(self, ids: Union[str, list]):
""" """
@ -150,7 +150,7 @@ class Qbittorrent(metaclass=Singleton):
try: try:
self.qbc.torrents_set_force_start(enable=True, torrent_hashes=ids) self.qbc.torrents_set_force_start(enable=True, torrent_hashes=ids)
except Exception as err: except Exception as err:
logger.error(f"设置强制作种出错:{err}") logger.error(f"设置强制作种出错:{str(err)}")
def __get_last_add_torrentid_by_tag(self, tags: Union[str, list], def __get_last_add_torrentid_by_tag(self, tags: Union[str, list],
status: Union[str, list] = None) -> Optional[str]: status: Union[str, list] = None) -> Optional[str]:
@ -161,7 +161,7 @@ class Qbittorrent(metaclass=Singleton):
try: try:
torrents, _ = self.get_torrents(status=status, tags=tags) torrents, _ = self.get_torrents(status=status, tags=tags)
except Exception as err: except Exception as err:
logger.error(f"获取种子列表出错:{err}") logger.error(f"获取种子列表出错:{str(err)}")
return None return None
if torrents: if torrents:
return torrents[0].get("hash") return torrents[0].get("hash")
@ -249,7 +249,7 @@ class Qbittorrent(metaclass=Singleton):
**kwargs) **kwargs)
return True if qbc_ret and str(qbc_ret).find("Ok") != -1 else False return True if qbc_ret and str(qbc_ret).find("Ok") != -1 else False
except Exception as err: except Exception as err:
logger.error(f"添加种子出错:{err}") logger.error(f"添加种子出错:{str(err)}")
return False return False
def start_torrents(self, ids: Union[str, list]) -> bool: def start_torrents(self, ids: Union[str, list]) -> bool:
@ -262,7 +262,7 @@ class Qbittorrent(metaclass=Singleton):
self.qbc.torrents_resume(torrent_hashes=ids) self.qbc.torrents_resume(torrent_hashes=ids)
return True return True
except Exception as err: except Exception as err:
logger.error(f"启动种子出错:{err}") logger.error(f"启动种子出错:{str(err)}")
return False return False
def stop_torrents(self, ids: Union[str, list]) -> bool: def stop_torrents(self, ids: Union[str, list]) -> bool:
@ -275,7 +275,7 @@ class Qbittorrent(metaclass=Singleton):
self.qbc.torrents_pause(torrent_hashes=ids) self.qbc.torrents_pause(torrent_hashes=ids)
return True return True
except Exception as err: except Exception as err:
logger.error(f"暂停种子出错:{err}") logger.error(f"暂停种子出错:{str(err)}")
return False return False
def delete_torrents(self, delete_file: bool, ids: Union[str, list]) -> bool: def delete_torrents(self, delete_file: bool, ids: Union[str, list]) -> bool:
@ -290,7 +290,7 @@ class Qbittorrent(metaclass=Singleton):
self.qbc.torrents_delete(delete_files=delete_file, torrent_hashes=ids) self.qbc.torrents_delete(delete_files=delete_file, torrent_hashes=ids)
return True return True
except Exception as err: except Exception as err:
logger.error(f"删除种子出错:{err}") logger.error(f"删除种子出错:{str(err)}")
return False return False
def get_files(self, tid: str) -> Optional[TorrentFilesList]: def get_files(self, tid: str) -> Optional[TorrentFilesList]:
@ -302,7 +302,7 @@ class Qbittorrent(metaclass=Singleton):
try: try:
return self.qbc.torrents_files(torrent_hash=tid) return self.qbc.torrents_files(torrent_hash=tid)
except Exception as err: except Exception as err:
logger.error(f"获取种子文件列表出错:{err}") logger.error(f"获取种子文件列表出错:{str(err)}")
return None return None
def set_files(self, **kwargs) -> bool: def set_files(self, **kwargs) -> bool:
@ -319,7 +319,7 @@ class Qbittorrent(metaclass=Singleton):
priority=kwargs.get("priority")) priority=kwargs.get("priority"))
return True return True
except Exception as err: except Exception as err:
logger.error(f"设置种子文件状态出错:{err}") logger.error(f"设置种子文件状态出错:{str(err)}")
return False return False
def transfer_info(self) -> Optional[TransferInfoDictionary]: def transfer_info(self) -> Optional[TransferInfoDictionary]:
@ -331,7 +331,7 @@ class Qbittorrent(metaclass=Singleton):
try: try:
return self.qbc.transfer_info() return self.qbc.transfer_info()
except Exception as err: except Exception as err:
logger.error(f"获取传输信息出错:{err}") logger.error(f"获取传输信息出错:{str(err)}")
return None return None
def set_speed_limit(self, download_limit: float = None, upload_limit: float = None) -> bool: def set_speed_limit(self, download_limit: float = None, upload_limit: float = None) -> bool:
@ -349,7 +349,7 @@ class Qbittorrent(metaclass=Singleton):
self.qbc.transfer.download_limit = int(download_limit) self.qbc.transfer.download_limit = int(download_limit)
return True return True
except Exception as err: except Exception as err:
logger.error(f"设置速度限制出错:{err}") logger.error(f"设置速度限制出错:{str(err)}")
return False return False
def recheck_torrents(self, ids: Union[str, list]): def recheck_torrents(self, ids: Union[str, list]):
@ -361,7 +361,7 @@ class Qbittorrent(metaclass=Singleton):
try: try:
return self.qbc.torrents_recheck(torrent_hashes=ids) return self.qbc.torrents_recheck(torrent_hashes=ids)
except Exception as err: except Exception as err:
logger.error(f"重新校验种子出错:{err}") logger.error(f"重新校验种子出错:{str(err)}")
return False return False
def add_trackers(self, ids: Union[str, list], trackers: list): def add_trackers(self, ids: Union[str, list], trackers: list):
@ -373,5 +373,5 @@ class Qbittorrent(metaclass=Singleton):
try: try:
return self.qbc.torrents_add_trackers(torrent_hashes=ids, urls=trackers) return self.qbc.torrents_add_trackers(torrent_hashes=ids, urls=trackers)
except Exception as err: except Exception as err:
logger.error(f"添加tracker出错{err}") logger.error(f"添加tracker出错{str(err)}")
return False return False

View File

@ -151,7 +151,7 @@ class SlackModule(_ModuleBase):
try: try:
msg_json: dict = json.loads(body) msg_json: dict = json.loads(body)
except Exception as err: except Exception as err:
logger.debug(f"解析Slack消息失败{err}") logger.debug(f"解析Slack消息失败{str(err)}")
return None return None
if msg_json: if msg_json:
if msg_json.get("type") == "message": if msg_json.get("type") == "message":

View File

@ -34,7 +34,7 @@ class Slack:
ssl_check_enabled=False, ssl_check_enabled=False,
url_verification_enabled=False) url_verification_enabled=False)
except Exception as err: except Exception as err:
logger.error(f"Slack初始化失败: {err}") logger.error(f"Slack初始化失败: {str(err)}")
return return
self._client = slack_app.client self._client = slack_app.client
@ -335,5 +335,5 @@ class Slack:
conversation_id = channel.get("id") conversation_id = channel.get("id")
break break
except Exception as e: except Exception as e:
logger.error(f"查找Slack公共频道失败: {e}") logger.error(f"查找Slack公共频道失败: {str(e)}")
return conversation_id return conversation_id

View File

@ -122,7 +122,7 @@ class SubtitleModule(_ModuleBase):
shutil.rmtree(zip_path) shutil.rmtree(zip_path)
zip_file.unlink() zip_file.unlink()
except Exception as err: except Exception as err:
logger.error(f"删除临时文件失败:{err}") logger.error(f"删除临时文件失败:{str(err)}")
else: else:
sub_file = settings.TEMP_PATH / file_name sub_file = settings.TEMP_PATH / file_name
# 保存 # 保存

View File

@ -50,7 +50,7 @@ class SynologyChatModule(_ModuleBase):
return CommingMessage(channel=MessageChannel.SynologyChat, return CommingMessage(channel=MessageChannel.SynologyChat,
userid=user_id, username=user_name, text=text) userid=user_id, username=user_name, text=text)
except Exception as err: except Exception as err:
logger.debug(f"解析SynologyChat消息失败{err}") logger.debug(f"解析SynologyChat消息失败{str(err)}")
return None return None
@checkMessage(MessageChannel.SynologyChat) @checkMessage(MessageChannel.SynologyChat)

View File

@ -63,7 +63,7 @@ class TelegramModule(_ModuleBase):
try: try:
message: dict = json.loads(body) message: dict = json.loads(body)
except Exception as err: except Exception as err:
logger.debug(f"解析Telegram消息失败{err}") logger.debug(f"解析Telegram消息失败{str(err)}")
return None return None
if message: if message:
text = message.get("text") text = message.get("text")

View File

@ -54,7 +54,7 @@ class Telegram(metaclass=Singleton):
try: try:
_bot.infinity_polling(long_polling_timeout=30, logger_level=None) _bot.infinity_polling(long_polling_timeout=30, logger_level=None)
except Exception as err: except Exception as err:
logger.error(f"Telegram消息接收服务异常{err}") logger.error(f"Telegram消息接收服务异常{str(err)}")
# 启动线程来运行 infinity_polling # 启动线程来运行 infinity_polling
self._polling_thread = threading.Thread(target=run_polling) self._polling_thread = threading.Thread(target=run_polling)

View File

@ -32,7 +32,7 @@ class CategoryHelper(metaclass=Singleton):
logger.warn(f"二级分类策略配置文件格式出现严重错误!请检查:{str(e)}") logger.warn(f"二级分类策略配置文件格式出现严重错误!请检查:{str(e)}")
self._categorys = {} self._categorys = {}
except Exception as err: except Exception as err:
logger.warn(f"二级分类策略配置文件加载出错:{err}") logger.warn(f"二级分类策略配置文件加载出错:{str(err)}")
if self._categorys: if self._categorys:
self._movie_categorys = self._categorys.get('movie') self._movie_categorys = self._categorys.get('movie')

View File

@ -125,7 +125,7 @@ class TmdbScraper:
f"https://{settings.TMDB_IMAGE_DOMAIN}/t/p/original{episode_image}", f"https://{settings.TMDB_IMAGE_DOMAIN}/t/p/original{episode_image}",
file_path.with_suffix(Path(episode_image).suffix)) file_path.with_suffix(Path(episode_image).suffix))
except Exception as e: except Exception as e:
logger.error(f"{file_path} 刮削失败:{e}") logger.error(f"{file_path} 刮削失败:{str(e)}")
@staticmethod @staticmethod
def __gen_common_nfo(mediainfo: MediaInfo, doc, root): def __gen_common_nfo(mediainfo: MediaInfo, doc, root):
@ -355,7 +355,7 @@ class TmdbScraper:
except RequestException as err: except RequestException as err:
raise err raise err
except Exception as err: except Exception as err:
logger.error(f"{file_path.stem}图片下载失败:{err}") logger.error(f"{file_path.stem}图片下载失败:{str(err)}")
def __save_nfo(self, doc, file_path: Path): def __save_nfo(self, doc, file_path: Path):
""" """

View File

@ -210,10 +210,10 @@ class TmdbHelper:
else: else:
movies = self.search.movies(term=name) movies = self.search.movies(term=name)
except TMDbException as err: except TMDbException as err:
logger.error(f"连接TMDB出错{err}") logger.error(f"连接TMDB出错{str(err)}")
return None return None
except Exception as e: except Exception as e:
logger.error(f"连接TMDB出错{e}") logger.error(f"连接TMDB出错{str(e)}")
print(traceback.print_exc()) print(traceback.print_exc())
return None return None
logger.debug(f"API返回{str(self.search.total_results)}") logger.debug(f"API返回{str(self.search.total_results)}")
@ -258,10 +258,10 @@ class TmdbHelper:
else: else:
tvs = self.search.tv_shows(term=name) tvs = self.search.tv_shows(term=name)
except TMDbException as err: except TMDbException as err:
logger.error(f"连接TMDB出错{err}") logger.error(f"连接TMDB出错{str(err)}")
return None return None
except Exception as e: except Exception as e:
logger.error(f"连接TMDB出错{e}") logger.error(f"连接TMDB出错{str(e)}")
print(traceback.print_exc()) print(traceback.print_exc())
return None return None
logger.debug(f"API返回{str(self.search.total_results)}") logger.debug(f"API返回{str(self.search.total_results)}")
@ -320,10 +320,10 @@ class TmdbHelper:
try: try:
tvs = self.search.tv_shows(term=name) tvs = self.search.tv_shows(term=name)
except TMDbException as err: except TMDbException as err:
logger.error(f"连接TMDB出错{err}") logger.error(f"连接TMDB出错{str(err)}")
return None return None
except Exception as e: except Exception as e:
logger.error(f"连接TMDB出错{e}") logger.error(f"连接TMDB出错{str(e)}")
print(traceback.print_exc()) print(traceback.print_exc())
return None return None
@ -400,10 +400,10 @@ class TmdbHelper:
try: try:
multis = self.search.multi(term=name) or [] multis = self.search.multi(term=name) or []
except TMDbException as err: except TMDbException as err:
logger.error(f"连接TMDB出错{err}") logger.error(f"连接TMDB出错{str(err)}")
return None return None
except Exception as e: except Exception as e:
logger.error(f"连接TMDB出错{e}") logger.error(f"连接TMDB出错{str(e)}")
print(traceback.print_exc()) print(traceback.print_exc())
return None return None
logger.debug(f"API返回{str(self.search.total_results)}") logger.debug(f"API返回{str(self.search.total_results)}")
@ -508,7 +508,7 @@ class TmdbHelper:
else: else:
logger.info("%s TMDB网站未查询到媒体信息" % name) logger.info("%s TMDB网站未查询到媒体信息" % name)
except Exception as err: except Exception as err:
logger.error(f"从TheDbMovie网站查询出错{err}") logger.error(f"从TheDbMovie网站查询出错{str(err)}")
return None return None
return None return None

View File

@ -33,4 +33,4 @@ class TheTvDbModule(_ModuleBase):
logger.info(f"开始获取TVDB信息: {tvdbid} ...") logger.info(f"开始获取TVDB信息: {tvdbid} ...")
return self.tvdb[tvdbid].data return self.tvdb[tvdbid].data
except Exception as err: except Exception as err:
logger.error(f"获取TVDB信息失败: {err}") logger.error(f"获取TVDB信息失败: {str(err)}")

View File

@ -45,7 +45,7 @@ class Transmission(metaclass=Singleton):
timeout=60) timeout=60)
return trt return trt
except Exception as err: except Exception as err:
logger.error(f"transmission 连接出错:{err}") logger.error(f"transmission 连接出错:{str(err)}")
return None return None
def is_inactive(self) -> bool: def is_inactive(self) -> bool:
@ -73,7 +73,7 @@ class Transmission(metaclass=Singleton):
try: try:
torrents = self.trc.get_torrents(ids=ids, arguments=self._trarg) torrents = self.trc.get_torrents(ids=ids, arguments=self._trarg)
except Exception as err: except Exception as err:
logger.error(f"获取种子列表出错:{err}") logger.error(f"获取种子列表出错:{str(err)}")
return [], True return [], True
if status and not isinstance(status, list): if status and not isinstance(status, list):
status = [status] status = [status]
@ -104,7 +104,7 @@ class Transmission(metaclass=Singleton):
torrents, error = self.get_torrents(status=["seeding", "seed_pending"], ids=ids, tags=tags) torrents, error = self.get_torrents(status=["seeding", "seed_pending"], ids=ids, tags=tags)
return None if error else torrents or [] return None if error else torrents or []
except Exception as err: except Exception as err:
logger.error(f"获取已完成的种子列表出错:{err}") logger.error(f"获取已完成的种子列表出错:{str(err)}")
return None return None
def get_downloading_torrents(self, ids: Union[str, list] = None, def get_downloading_torrents(self, ids: Union[str, list] = None,
@ -121,7 +121,7 @@ class Transmission(metaclass=Singleton):
tags=tags) tags=tags)
return None if error else torrents or [] return None if error else torrents or []
except Exception as err: except Exception as err:
logger.error(f"获取正在下载的种子列表出错:{err}") logger.error(f"获取正在下载的种子列表出错:{str(err)}")
return None return None
def set_torrent_tag(self, ids: str, tags: list) -> bool: def set_torrent_tag(self, ids: str, tags: list) -> bool:
@ -136,7 +136,7 @@ class Transmission(metaclass=Singleton):
self.trc.change_torrent(labels=tags, ids=ids) self.trc.change_torrent(labels=tags, ids=ids)
return True return True
except Exception as err: except Exception as err:
logger.error(f"设置种子标签出错:{err}") logger.error(f"设置种子标签出错:{str(err)}")
return False return False
def add_torrent(self, content: Union[str, bytes], def add_torrent(self, content: Union[str, bytes],
@ -162,7 +162,7 @@ class Transmission(metaclass=Singleton):
labels=labels, labels=labels,
cookies=cookie) cookies=cookie)
except Exception as err: except Exception as err:
logger.error(f"添加种子出错:{err}") logger.error(f"添加种子出错:{str(err)}")
return None return None
def start_torrents(self, ids: Union[str, list]) -> bool: def start_torrents(self, ids: Union[str, list]) -> bool:
@ -175,7 +175,7 @@ class Transmission(metaclass=Singleton):
self.trc.start_torrent(ids=ids) self.trc.start_torrent(ids=ids)
return True return True
except Exception as err: except Exception as err:
logger.error(f"启动种子出错:{err}") logger.error(f"启动种子出错:{str(err)}")
return False return False
def stop_torrents(self, ids: Union[str, list]) -> bool: def stop_torrents(self, ids: Union[str, list]) -> bool:
@ -188,7 +188,7 @@ class Transmission(metaclass=Singleton):
self.trc.stop_torrent(ids=ids) self.trc.stop_torrent(ids=ids)
return True return True
except Exception as err: except Exception as err:
logger.error(f"停止种子出错:{err}") logger.error(f"停止种子出错:{str(err)}")
return False return False
def delete_torrents(self, delete_file: bool, ids: Union[str, list]) -> bool: def delete_torrents(self, delete_file: bool, ids: Union[str, list]) -> bool:
@ -203,7 +203,7 @@ class Transmission(metaclass=Singleton):
self.trc.remove_torrent(delete_data=delete_file, ids=ids) self.trc.remove_torrent(delete_data=delete_file, ids=ids)
return True return True
except Exception as err: except Exception as err:
logger.error(f"删除种子出错:{err}") logger.error(f"删除种子出错:{str(err)}")
return False return False
def get_files(self, tid: str) -> Optional[List[File]]: def get_files(self, tid: str) -> Optional[List[File]]:
@ -217,7 +217,7 @@ class Transmission(metaclass=Singleton):
try: try:
torrent = self.trc.get_torrent(tid) torrent = self.trc.get_torrent(tid)
except Exception as err: except Exception as err:
logger.error(f"获取种子文件列表出错:{err}") logger.error(f"获取种子文件列表出错:{str(err)}")
return None return None
if torrent: if torrent:
return torrent.files() return torrent.files()
@ -234,7 +234,7 @@ class Transmission(metaclass=Singleton):
self.trc.change_torrent(ids=tid, files_wanted=file_ids) self.trc.change_torrent(ids=tid, files_wanted=file_ids)
return True return True
except Exception as err: except Exception as err:
logger.error(f"设置下载文件状态出错:{err}") logger.error(f"设置下载文件状态出错:{str(err)}")
return False return False
def transfer_info(self) -> Optional[SessionStats]: def transfer_info(self) -> Optional[SessionStats]:
@ -246,7 +246,7 @@ class Transmission(metaclass=Singleton):
try: try:
return self.trc.session_stats() return self.trc.session_stats()
except Exception as err: except Exception as err:
logger.error(f"获取传输信息出错:{err}") logger.error(f"获取传输信息出错:{str(err)}")
return None return None
def set_speed_limit(self, download_limit: float = None, upload_limit: float = None) -> bool: def set_speed_limit(self, download_limit: float = None, upload_limit: float = None) -> bool:
@ -268,7 +268,7 @@ class Transmission(metaclass=Singleton):
) )
return True return True
except Exception as err: except Exception as err:
logger.error(f"设置速度限制出错:{err}") logger.error(f"设置速度限制出错:{str(err)}")
return False return False
def recheck_torrents(self, ids: Union[str, list]): def recheck_torrents(self, ids: Union[str, list]):
@ -280,7 +280,7 @@ class Transmission(metaclass=Singleton):
try: try:
return self.trc.verify_torrent(ids=ids) return self.trc.verify_torrent(ids=ids)
except Exception as err: except Exception as err:
logger.error(f"重新校验种子出错:{err}") logger.error(f"重新校验种子出错:{str(err)}")
return False return False
def add_trackers(self, ids: Union[str, list], trackers: list): def add_trackers(self, ids: Union[str, list], trackers: list):
@ -292,7 +292,7 @@ class Transmission(metaclass=Singleton):
try: try:
return self.trc.change_torrent(ids=ids, tracker_list=[trackers]) return self.trc.change_torrent(ids=ids, tracker_list=[trackers])
except Exception as err: except Exception as err:
logger.error(f"添加Tracker出错{err}") logger.error(f"添加Tracker出错{str(err)}")
return False return False
def change_torrent(self, def change_torrent(self,
@ -347,5 +347,5 @@ class Transmission(metaclass=Singleton):
seedIdleMode=seedIdleMode, seedIdleMode=seedIdleMode,
seedIdleLimit=seedIdleLimit) seedIdleLimit=seedIdleLimit)
except Exception as err: except Exception as err:
logger.error(f"设置种子出错:{err}") logger.error(f"设置种子出错:{str(err)}")
return False return False

View File

@ -117,7 +117,7 @@ class WechatModule(_ModuleBase):
return CommingMessage(channel=MessageChannel.Wechat, return CommingMessage(channel=MessageChannel.Wechat,
userid=user_id, username=user_id, text=content) userid=user_id, username=user_id, text=content)
except Exception as err: except Exception as err:
logger.error(f"微信消息处理发生错误:{err}") logger.error(f"微信消息处理发生错误:{str(err)}")
return None return None
@checkMessage(MessageChannel.Wechat) @checkMessage(MessageChannel.Wechat)

View File

@ -76,7 +76,7 @@ class WeChat(metaclass=Singleton):
else: else:
logger.error(f"获取微信access_token失败未获取到返回信息") logger.error(f"获取微信access_token失败未获取到返回信息")
except Exception as e: except Exception as e:
logger.error(f"获取微信access_token失败错误信息{e}") logger.error(f"获取微信access_token失败错误信息{str(e)}")
return None return None
return self._access_token return self._access_token
@ -271,7 +271,7 @@ class WeChat(metaclass=Singleton):
logger.error(f"发送请求失败,未获取到返回信息") logger.error(f"发送请求失败,未获取到返回信息")
return False return False
except Exception as err: except Exception as err:
logger.error(f"发送请求失败,错误信息:{err}") logger.error(f"发送请求失败,错误信息:{str(err)}")
return False return False
def create_menus(self, commands: Dict[str, dict]): def create_menus(self, commands: Dict[str, dict]):

View File

@ -71,7 +71,7 @@ class AutoBackup(_PluginBase):
trigger=CronTrigger.from_crontab(self._cron), trigger=CronTrigger.from_crontab(self._cron),
name="自动备份") name="自动备份")
except Exception as err: except Exception as err:
logger.error(f"定时任务配置错误:{err}") logger.error(f"定时任务配置错误:{str(err)}")
if self._onlyonce: if self._onlyonce:
logger.info(f"自动备份服务启动,立即运行一次") logger.info(f"自动备份服务启动,立即运行一次")

View File

@ -83,7 +83,7 @@ class AutoClean(_PluginBase):
trigger=CronTrigger.from_crontab(self._cron), trigger=CronTrigger.from_crontab(self._cron),
name="定时清理媒体库") name="定时清理媒体库")
except Exception as err: except Exception as err:
logger.error(f"定时任务配置错误:{err}") logger.error(f"定时任务配置错误:{str(err)}")
if self._onlyonce: if self._onlyonce:
logger.info(f"定时清理媒体库服务启动,立即运行一次") logger.info(f"定时清理媒体库服务启动,立即运行一次")

View File

@ -168,9 +168,9 @@ class AutoSignIn(_PluginBase):
logger.info( logger.info(
f"站点自动签到服务启动,执行周期 {self._start_time}点-{self._end_time}点 每{self._cron}小时执行一次") f"站点自动签到服务启动,执行周期 {self._start_time}点-{self._end_time}点 每{self._cron}小时执行一次")
except Exception as err: except Exception as err:
logger.error(f"定时任务配置错误:{err}") logger.error(f"定时任务配置错误:{str(err)}")
# 推送实时消息 # 推送实时消息
self.systemmessage.put(f"执行周期配置错误:{err}") self.systemmessage.put(f"执行周期配置错误:{str(err)}")
self._cron = "" self._cron = ""
self._enabled = False self._enabled = False
self.__update_config() self.__update_config()

View File

@ -70,7 +70,7 @@ class _ISiteSigninHandler(metaclass=ABCMeta):
# 解码为字符串 # 解码为字符串
return raw_data.decode(encoding) return raw_data.decode(encoding)
except Exception as e: except Exception as e:
logger.error(f"chardet解码失败{e}") logger.error(f"chardet解码失败{str(e)}")
return res.text return res.text
else: else:
return res.text return res.text

View File

@ -48,7 +48,7 @@ class PTerClub(_ISiteSigninHandler):
try: try:
sign_dict = json.loads(html_text) sign_dict = json.loads(html_text)
except Exception as e: except Exception as e:
logger.error(f"{site} 签到失败,签到接口返回数据异常,错误信息:{e}") logger.error(f"{site} 签到失败,签到接口返回数据异常,错误信息:{str(e)}")
return False, '签到失败,签到接口返回数据异常' return False, '签到失败,签到接口返回数据异常'
if sign_dict['status'] == '1': if sign_dict['status'] == '1':
# {"status":"1","data":" (签到已成功300)","message":"<p>这是您的第<b>237</b>次签到, # {"status":"1","data":" (签到已成功300)","message":"<p>这是您的第<b>237</b>次签到,

View File

@ -141,7 +141,7 @@ class Tjupt(_ISiteSigninHandler):
proxy=proxy, proxy=proxy,
site=site) site=site)
except (FileNotFoundError, IOError, OSError) as e: except (FileNotFoundError, IOError, OSError) as e:
logger.debug(f"查询本地已知答案失败:{e},继续请求豆瓣查询") logger.debug(f"查询本地已知答案失败:{str(e)},继续请求豆瓣查询")
# 本地不存在正确答案则请求豆瓣查询匹配 # 本地不存在正确答案则请求豆瓣查询匹配
for value, answer in answers: for value, answer in answers:
@ -236,7 +236,7 @@ class Tjupt(_ISiteSigninHandler):
with open(self._answer_file, 'w') as f: with open(self._answer_file, 'w') as f:
f.write(formatted_data) f.write(formatted_data)
except (FileNotFoundError, IOError, OSError) as e: except (FileNotFoundError, IOError, OSError) as e:
logger.debug(f"签到成功写入本地文件失败:{e}") logger.debug(f"签到成功写入本地文件失败:{str(e)}")
@staticmethod @staticmethod
def _tohash(img, shape=(10, 10)): def _tohash(img, shape=(10, 10)):

View File

@ -84,9 +84,9 @@ class BestFilmVersion(_PluginBase):
trigger=CronTrigger.from_crontab(self._cron), trigger=CronTrigger.from_crontab(self._cron),
name="收藏洗版") name="收藏洗版")
except Exception as err: except Exception as err:
logger.error(f"定时任务配置错误:{err}") logger.error(f"定时任务配置错误:{str(err)}")
# 推送实时消息 # 推送实时消息
self.systemmessage.put(f"执行周期配置错误:{err}") self.systemmessage.put(f"执行周期配置错误:{str(err)}")
else: else:
self._scheduler.add_job(self.sync, "interval", minutes=30, name="收藏洗版") self._scheduler.add_job(self.sync, "interval", minutes=30, name="收藏洗版")

View File

@ -236,8 +236,8 @@ class BrushFlow(_PluginBase):
try: try:
self._scheduler.add_job(self.brush, 'interval', minutes=self._cron) self._scheduler.add_job(self.brush, 'interval', minutes=self._cron)
except Exception as e: except Exception as e:
logger.error(f"站点刷流服务启动失败:{e}") logger.error(f"站点刷流服务启动失败:{str(e)}")
self.systemmessage.put(f"站点刷流服务启动失败:{e}") self.systemmessage.put(f"站点刷流服务启动失败:{str(e)}")
return return
if self._onlyonce: if self._onlyonce:
logger.info(f"站点刷流服务启动,立即运行一次") logger.info(f"站点刷流服务启动,立即运行一次")

View File

@ -92,9 +92,9 @@ class DoubanSync(_PluginBase):
trigger=CronTrigger.from_crontab(self._cron), trigger=CronTrigger.from_crontab(self._cron),
name="豆瓣想看") name="豆瓣想看")
except Exception as err: except Exception as err:
logger.error(f"定时任务配置错误:{err}") logger.error(f"定时任务配置错误:{str(err)}")
# 推送实时消息 # 推送实时消息
self.systemmessage.put(f"执行周期配置错误:{err}") self.systemmessage.put(f"执行周期配置错误:{str(err)}")
else: else:
self._scheduler.add_job(self.sync, "interval", minutes=30, name="豆瓣想看") self._scheduler.add_job(self.sync, "interval", minutes=30, name="豆瓣想看")
@ -541,7 +541,7 @@ class DoubanSync(_PluginBase):
"time": datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") "time": datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
}) })
except Exception as err: except Exception as err:
logger.error(f'同步用户 {user_id} 豆瓣想看数据出错:{err}') logger.error(f'同步用户 {user_id} 豆瓣想看数据出错:{str(err)}')
logger.info(f"用户 {user_id} 豆瓣想看同步完成") logger.info(f"用户 {user_id} 豆瓣想看同步完成")
# 保存历史记录 # 保存历史记录
self.save_data('history', history) self.save_data('history', history)

View File

@ -68,7 +68,7 @@ class DownloadingMsg(_PluginBase):
seconds=int(self._seconds), seconds=int(self._seconds),
name="下载进度推送") name="下载进度推送")
except Exception as err: except Exception as err:
logger.error(f"定时任务配置错误:{err}") logger.error(f"定时任务配置错误:{str(err)}")
# 启动任务 # 启动任务
if self._scheduler.get_jobs(): if self._scheduler.get_jobs():

View File

@ -69,7 +69,7 @@ class InvitesSignin(_PluginBase):
trigger=CronTrigger.from_crontab(self._cron), trigger=CronTrigger.from_crontab(self._cron),
name="药丸签到") name="药丸签到")
except Exception as err: except Exception as err:
logger.error(f"定时任务配置错误:{err}") logger.error(f"定时任务配置错误:{str(err)}")
if self._onlyonce: if self._onlyonce:
logger.info(f"药丸签到服务启动,立即运行一次") logger.info(f"药丸签到服务启动,立即运行一次")

View File

@ -79,8 +79,8 @@ class LibraryScraper(_PluginBase):
trigger=CronTrigger.from_crontab(self._cron), trigger=CronTrigger.from_crontab(self._cron),
name="媒体库刮削") name="媒体库刮削")
except Exception as e: except Exception as e:
logger.error(f"媒体库刮削服务启动失败,原因:{e}") logger.error(f"媒体库刮削服务启动失败,原因:{str(e)}")
self.systemmessage.put(f"媒体库刮削服务启动失败,原因:{e}") self.systemmessage.put(f"媒体库刮削服务启动失败,原因:{str(e)}")
else: else:
logger.info(f"媒体库刮削服务启动周期每7天") logger.info(f"媒体库刮削服务启动周期每7天")
self._scheduler.add_job(func=self.__libraryscraper, self._scheduler.add_job(func=self.__libraryscraper,

View File

@ -90,9 +90,9 @@ class MediaSyncDel(_PluginBase):
trigger=CronTrigger.from_crontab(self._cron), trigger=CronTrigger.from_crontab(self._cron),
name="媒体库同步删除") name="媒体库同步删除")
except Exception as err: except Exception as err:
logger.error(f"定时任务配置错误:{err}") logger.error(f"定时任务配置错误:{str(err)}")
# 推送实时消息 # 推送实时消息
self.systemmessage.put(f"执行周期配置错误:{err}") self.systemmessage.put(f"执行周期配置错误:{str(err)}")
else: else:
self._scheduler.add_job(self.sync_del_by_log, "interval", minutes=30, name="媒体库同步删除") self._scheduler.add_job(self.sync_del_by_log, "interval", minutes=30, name="媒体库同步删除")
@ -996,7 +996,7 @@ class MediaSyncDel(_PluginBase):
return delete_flag, True, handle_cnt return delete_flag, True, handle_cnt
except Exception as e: except Exception as e:
logger.error(f"删种失败: {e}") logger.error(f"删种失败: {str(e)}")
return False, False, 0 return False, False, 0
def __del_seed(self, download, download_id, action_flag, handle_cnt): def __del_seed(self, download, download_id, action_flag, handle_cnt):

View File

@ -351,7 +351,7 @@ class MessageForward(_PluginBase):
logger.error(f"转发消息 {title} 失败,未获取到返回信息") logger.error(f"转发消息 {title} 失败,未获取到返回信息")
return False return False
except Exception as err: except Exception as err:
logger.error(f"转发消息 {title} 异常,错误信息:{err}") logger.error(f"转发消息 {title} 异常,错误信息:{str(err)}")
return False return False
def __get_access_token(self, corpid: str, appsecret: str): def __get_access_token(self, corpid: str, appsecret: str):
@ -377,7 +377,7 @@ class MessageForward(_PluginBase):
logger.error(f"{corpid} {appsecret} 获取token失败") logger.error(f"{corpid} {appsecret} 获取token失败")
return None, None, None return None, None, None
except Exception as e: except Exception as e:
logger.error(f"获取微信access_token失败错误信息{e}") logger.error(f"获取微信access_token失败错误信息{str(e)}")
return None, None, None return None, None, None
def stop_service(self): def stop_service(self):

View File

@ -63,7 +63,7 @@ class MoviePilotUpdateNotify(_PluginBase):
trigger=CronTrigger.from_crontab(self._cron), trigger=CronTrigger.from_crontab(self._cron),
name="检查MoviePilot更新") name="检查MoviePilot更新")
except Exception as err: except Exception as err:
logger.error(f"定时任务配置错误:{err}") logger.error(f"定时任务配置错误:{str(err)}")
# 启动任务 # 启动任务
if self._scheduler.get_jobs(): if self._scheduler.get_jobs():

View File

@ -73,7 +73,7 @@ class NAStoolSync(_PluginBase):
"site": self._site, "site": self._site,
} }
) )
logger.error(f"无法打开数据库文件 {self._nt_db_path},请检查路径是否正确:{e}") logger.error(f"无法打开数据库文件 {self._nt_db_path},请检查路径是否正确:{str(e)}")
return return
# 创建游标cursor来执行execute语句 # 创建游标cursor来执行execute语句

View File

@ -610,7 +610,7 @@ class PersonMeta(_PluginBase):
else: else:
logger.debug(f"人物 {people.get('Name')} 未找到中文数据") logger.debug(f"人物 {people.get('Name')} 未找到中文数据")
except Exception as err: except Exception as err:
logger.error(f"更新人物信息失败:{err}") logger.error(f"更新人物信息失败:{str(err)}")
return None return None
def __get_douban_actors(self, mediainfo: MediaInfo, season: int = None) -> List[dict]: def __get_douban_actors(self, mediainfo: MediaInfo, season: int = None) -> List[dict]:
@ -652,7 +652,7 @@ class PersonMeta(_PluginBase):
if res: if res:
return res.json() return res.json()
except Exception as err: except Exception as err:
logger.error(f"获取Emby媒体项详情失败{err}") logger.error(f"获取Emby媒体项详情失败{str(err)}")
return {} return {}
def __get_jellyfin_iteminfo() -> dict: def __get_jellyfin_iteminfo() -> dict:
@ -668,7 +668,7 @@ class PersonMeta(_PluginBase):
result['FileName'] = Path(result['Path']).name result['FileName'] = Path(result['Path']).name
return result return result
except Exception as err: except Exception as err:
logger.error(f"获取Jellyfin媒体项详情失败{err}") logger.error(f"获取Jellyfin媒体项详情失败{str(err)}")
return {} return {}
def __get_plex_iteminfo() -> dict: def __get_plex_iteminfo() -> dict:
@ -702,7 +702,7 @@ class PersonMeta(_PluginBase):
iteminfo['CommunityRating'] = plexitem.audienceRating iteminfo['CommunityRating'] = plexitem.audienceRating
return iteminfo return iteminfo
except Exception as err: except Exception as err:
logger.error(f"获取Plex媒体项详情失败{err}") logger.error(f"获取Plex媒体项详情失败{str(err)}")
return {} return {}
if server == "emby": if server == "emby":
@ -732,7 +732,7 @@ class PersonMeta(_PluginBase):
if res: if res:
return res.json() return res.json()
except Exception as err: except Exception as err:
logger.error(f"获取Emby媒体的所有子媒体项失败{err}") logger.error(f"获取Emby媒体的所有子媒体项失败{str(err)}")
return {} return {}
def __get_jellyfin_items() -> dict: def __get_jellyfin_items() -> dict:
@ -748,7 +748,7 @@ class PersonMeta(_PluginBase):
if res: if res:
return res.json() return res.json()
except Exception as err: except Exception as err:
logger.error(f"获取Jellyfin媒体的所有子媒体项失败{err}") logger.error(f"获取Jellyfin媒体的所有子媒体项失败{str(err)}")
return {} return {}
def __get_plex_items() -> dict: def __get_plex_items() -> dict:
@ -814,7 +814,7 @@ class PersonMeta(_PluginBase):
items['Items'].append(item) items['Items'].append(item)
return items return items
except Exception as err: except Exception as err:
logger.error(f"获取Plex媒体的所有子媒体项失败{err}") logger.error(f"获取Plex媒体的所有子媒体项失败{str(err)}")
return {} return {}
if server == "emby": if server == "emby":
@ -848,7 +848,7 @@ class PersonMeta(_PluginBase):
logger.error(f"更新Emby媒体项详情失败错误码{res.status_code}") logger.error(f"更新Emby媒体项详情失败错误码{res.status_code}")
return False return False
except Exception as err: except Exception as err:
logger.error(f"更新Emby媒体项详情失败{err}") logger.error(f"更新Emby媒体项详情失败{str(err)}")
return False return False
def __set_jellyfin_iteminfo(): def __set_jellyfin_iteminfo():
@ -869,7 +869,7 @@ class PersonMeta(_PluginBase):
logger.error(f"更新Jellyfin媒体项详情失败错误码{res.status_code}") logger.error(f"更新Jellyfin媒体项详情失败错误码{res.status_code}")
return False return False
except Exception as err: except Exception as err:
logger.error(f"更新Jellyfin媒体项详情失败{err}") logger.error(f"更新Jellyfin媒体项详情失败{str(err)}")
return False return False
def __set_plex_iteminfo(): def __set_plex_iteminfo():
@ -887,7 +887,7 @@ class PersonMeta(_PluginBase):
plexitem.editTitle(iteminfo['Name']).editSummary(iteminfo['Overview']).reload() plexitem.editTitle(iteminfo['Name']).editSummary(iteminfo['Overview']).reload()
return True return True
except Exception as err: except Exception as err:
logger.error(f"更新Plex媒体项详情失败{err}") logger.error(f"更新Plex媒体项详情失败{str(err)}")
return False return False
if server == "emby": if server == "emby":
@ -920,7 +920,7 @@ class PersonMeta(_PluginBase):
else: else:
logger.warn(f"{imageurl} 图片下载失败,请检查网络连通性") logger.warn(f"{imageurl} 图片下载失败,请检查网络连通性")
except Exception as err: except Exception as err:
logger.error(f"下载图片失败:{err}") logger.error(f"下载图片失败:{str(err)}")
return None return None
def __set_emby_item_image(_base64: str): def __set_emby_item_image(_base64: str):

View File

@ -100,9 +100,9 @@ class RssSubscribe(_PluginBase):
trigger=CronTrigger.from_crontab(self._cron), trigger=CronTrigger.from_crontab(self._cron),
name="RSS订阅") name="RSS订阅")
except Exception as err: except Exception as err:
logger.error(f"定时任务配置错误:{err}") logger.error(f"定时任务配置错误:{str(err)}")
# 推送实时消息 # 推送实时消息
self.systemmessage.put(f"执行周期配置错误:{err}") self.systemmessage.put(f"执行周期配置错误:{str(err)}")
else: else:
self._scheduler.add_job(self.check, "interval", minutes=30, name="RSS订阅") self._scheduler.add_job(self.check, "interval", minutes=30, name="RSS订阅")
@ -658,7 +658,7 @@ class RssSubscribe(_PluginBase):
"time": datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") "time": datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
}) })
except Exception as err: except Exception as err:
logger.error(f'刷新RSS数据出错{err}') logger.error(f'刷新RSS数据出错{str(err)}')
logger.info(f"RSS {url} 刷新完成") logger.info(f"RSS {url} 刷新完成")
# 保存历史记录 # 保存历史记录
self.save_data('history', history) self.save_data('history', history)

View File

@ -128,9 +128,9 @@ class SiteStatistic(_PluginBase):
trigger=CronTrigger.from_crontab(self._cron), trigger=CronTrigger.from_crontab(self._cron),
name="站点数据统计") name="站点数据统计")
except Exception as err: except Exception as err:
logger.error(f"定时任务配置错误:{err}") logger.error(f"定时任务配置错误:{str(err)}")
# 推送实时消息 # 推送实时消息
self.systemmessage.put(f"执行周期配置错误:{err}") self.systemmessage.put(f"执行周期配置错误:{str(err)}")
else: else:
triggers = TimerUtils.random_scheduler(num_executions=1, triggers = TimerUtils.random_scheduler(num_executions=1,
begin_hour=0, begin_hour=0,
@ -836,7 +836,7 @@ class SiteStatistic(_PluginBase):
if site_schema.match(html_text): if site_schema.match(html_text):
return site_schema return site_schema
except Exception as e: except Exception as e:
logger.error(f"站点匹配失败 {e}") logger.error(f"站点匹配失败 {str(e)}")
return None return None
def build(self, site_info: CommentedMap) -> Optional[ISiteUserInfo]: def build(self, site_info: CommentedMap) -> Optional[ISiteUserInfo]:

View File

@ -123,7 +123,7 @@ class NexusPhpSiteUserInfo(ISiteUserInfo):
if bonus_match and bonus_match.group(1).strip(): if bonus_match and bonus_match.group(1).strip():
self.bonus = StringUtils.str_float(bonus_match.group(1).strip('"')) self.bonus = StringUtils.str_float(bonus_match.group(1).strip('"'))
except Exception as err: except Exception as err:
logger.error(f"{self.site_name} 解析魔力值出错, 错误信息: {err}") logger.error(f"{self.site_name} 解析魔力值出错, 错误信息: {str(err)}")
@staticmethod @staticmethod
def _parse_ucoin(html): def _parse_ucoin(html):

View File

@ -38,7 +38,7 @@ class NexusRabbitSiteUserInfo(NexusPhpSiteUserInfo):
try: try:
torrents = json.loads(html_text).get('data') torrents = json.loads(html_text).get('data')
except Exception as e: except Exception as e:
logger.error(f"解析做种信息失败: {e}") logger.error(f"解析做种信息失败: {str(e)}")
return return
page_seeding_size = 0 page_seeding_size = 0

View File

@ -101,7 +101,7 @@ class SyncDownloadFiles(_PluginBase):
name="自动同步下载器文件记录") name="自动同步下载器文件记录")
logger.info(f"自动同步下载器文件记录服务启动,时间间隔 {self._time} 小时") logger.info(f"自动同步下载器文件记录服务启动,时间间隔 {self._time} 小时")
except Exception as err: except Exception as err:
logger.error(f"定时任务配置错误:{err}") logger.error(f"定时任务配置错误:{str(err)}")
# 启动任务 # 启动任务
if self._scheduler.get_jobs(): if self._scheduler.get_jobs():

View File

@ -109,8 +109,8 @@ class TorrentTransfer(_PluginBase):
self._scheduler.add_job(self.transfer, self._scheduler.add_job(self.transfer,
CronTrigger.from_crontab(self._cron)) CronTrigger.from_crontab(self._cron))
except Exception as e: except Exception as e:
logger.error(f"转移做种服务启动失败:{e}") logger.error(f"转移做种服务启动失败:{str(e)}")
self.systemmessage.put(f"转移做种服务启动失败:{e}") self.systemmessage.put(f"转移做种服务启动失败:{str(e)}")
return return
if self._onlyonce: if self._onlyonce:
logger.info(f"转移做种服务启动,立即运行一次") logger.info(f"转移做种服务启动,立即运行一次")
@ -594,7 +594,7 @@ class TorrentTransfer(_PluginBase):
torrent_main = bdecode(content) torrent_main = bdecode(content)
main_announce = torrent_main.get('announce') main_announce = torrent_main.get('announce')
except Exception as err: except Exception as err:
logger.warn(f"解析种子文件 {torrent_file} 失败:{err}") logger.warn(f"解析种子文件 {torrent_file} 失败:{str(err)}")
fail += 1 fail += 1
continue continue
@ -623,7 +623,7 @@ class TorrentTransfer(_PluginBase):
# 编码并保存到临时文件 # 编码并保存到临时文件
torrent_file.write_bytes(bencode(torrent_main)) torrent_file.write_bytes(bencode(torrent_main))
except Exception as err: except Exception as err:
logger.error(f"解析fastresume文件 {fastresume_file} 出错:{err}") logger.error(f"解析fastresume文件 {fastresume_file} 出错:{str(err)}")
fail += 1 fail += 1
continue continue

View File

@ -220,7 +220,7 @@ class Scheduler(metaclass=Singleton):
try: try:
job["func"](*args, **kwargs) job["func"](*args, **kwargs)
except Exception as e: except Exception as e:
logger.error(f"定时任务 {job_id} 执行失败:{e}") logger.error(f"定时任务 {job_id} 执行失败:{str(e)}")
self._jobs[job_id]["running"] = False self._jobs[job_id]["running"] = False
def list(self) -> List[schemas.ScheduleInfo]: def list(self) -> List[schemas.ScheduleInfo]: