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 1/2] 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): """ From 401049064ef0409d68c0842e37cfa0acc9d75a85 Mon Sep 17 00:00:00 2001 From: InfinityPacer <160988576+InfinityPacer@users.noreply.github.com> Date: Sun, 15 Dec 2024 00:10:41 +0800 Subject: [PATCH 2/2] fix(WebHook): v1.1 --- package.json | 8 ++++++-- plugins/webhook/__init__.py | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index f27986c..1d5ba1f 100644 --- a/package.json +++ b/package.json @@ -247,11 +247,15 @@ "WebHook": { "name": "Webhook", "description": "事件发生时向第三方地址发送请求。", - "version": "1.0", + "version": "1.1", "icon": "webhook.png", "author": "jxxghp", "level": 1, - "v2": true + "v2": true, + "history": { + "v1.1": "兼容MoviePilot V2 版本", + "v1.0": "新增Webhook插件,支持事件发生时向第三方地址发送请求" + } }, "ChatGPT": { "name": "ChatGPT", diff --git a/plugins/webhook/__init__.py b/plugins/webhook/__init__.py index 1d6f04d..6fb57ba 100644 --- a/plugins/webhook/__init__.py +++ b/plugins/webhook/__init__.py @@ -16,7 +16,7 @@ class WebHook(_PluginBase): # 插件图标 plugin_icon = "webhook.png" # 插件版本 - plugin_version = "1.0" + plugin_version = "1.1" # 插件作者 plugin_author = "jxxghp" # 作者主页