From 0368938004dabc02d1610985230e5e907d890d13 Mon Sep 17 00:00:00 2001 From: InfinityPacer <160988576+InfinityPacer@users.noreply.github.com> Date: Sun, 15 Dec 2024 00:07:25 +0800 Subject: [PATCH] fix(WebHook): add compatibility with MoviePilot v2 --- plugins/webhook/__init__.py | 39 ++++++++++++++++++++++++------------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/plugins/webhook/__init__.py b/plugins/webhook/__init__.py index 7a624e9..1d6f04d 100644 --- a/plugins/webhook/__init__.py +++ b/plugins/webhook/__init__.py @@ -1,9 +1,11 @@ -from app.plugins import _PluginBase +from typing import Any, List, Dict, Tuple + +from app.core.config import settings from app.core.event import eventmanager +from app.log import logger +from app.plugins import _PluginBase from app.schemas.types import EventType from app.utils.http import RequestUtils -from typing import Any, List, Dict, Tuple -from app.log import logger class WebHook(_PluginBase): @@ -134,6 +136,9 @@ class WebHook(_PluginBase): if not self._enabled or not self._webhook_url: return + if not event or not event.event_type: + return + def __to_dict(_event): """ 递归将对象转换为字典 @@ -159,21 +164,27 @@ class WebHook(_PluginBase): else: return str(_event) + version = getattr(settings, "VERSION_FLAG", "v1") + event_type = event.event_type if version == "v1" else event.event_type.value + event_info = { - "type": event.event_type, + "type": event_type, "data": __to_dict(event.event_data) } - if self._method == 'POST': - ret = RequestUtils(content_type="application/json").post_res(self._webhook_url, json=event_info) - else: - ret = RequestUtils().get_res(self._webhook_url, params=event_info) - if ret: - logger.info("发送成功:%s" % self._webhook_url) - elif ret is not None: - logger.error(f"发送失败,状态码:{ret.status_code},返回信息:{ret.text} {ret.reason}") - else: - logger.error("发送失败,未获取到返回信息") + try: + if self._method == 'POST': + ret = RequestUtils(content_type="application/json").post_res(self._webhook_url, json=event_info) + else: + ret = RequestUtils().get_res(self._webhook_url, params=event_info) + if ret: + logger.info(f"发送成功:{self._webhook_url}") + elif ret is not None: + logger.error(f"发送失败,状态码:{ret.status_code},返回信息:{ret.text} {ret.reason}") + else: + logger.error("发送失败,未获取到返回信息") + except Exception as e: + logger.error(f"发送请求时发生异常:{e}") def stop_service(self): """