Merge pull request #600 from InfinityPacer/main

This commit is contained in:
jxxghp
2024-12-15 07:57:02 +08:00
committed by GitHub
2 changed files with 32 additions and 17 deletions

View File

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

View File

@@ -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):
@@ -14,7 +16,7 @@ class WebHook(_PluginBase):
# 插件图标
plugin_icon = "webhook.png"
# 插件版本
plugin_version = "1.0"
plugin_version = "1.1"
# 插件作者
plugin_author = "jxxghp"
# 作者主页
@@ -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):
"""