From 19b703f9cc8e08f2db51295386b9acb5a07fa1cb Mon Sep 17 00:00:00 2001 From: thsrite Date: Sat, 12 Aug 2023 14:13:33 +0800 Subject: [PATCH 1/6] =?UTF-8?q?fix=20emby=20scripterx=E6=8F=92=E4=BB=B6?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E8=A7=A3=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/modules/emby/__init__.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/app/modules/emby/__init__.py b/app/modules/emby/__init__.py index 4e8e66cc..2616e350 100644 --- a/app/modules/emby/__init__.py +++ b/app/modules/emby/__init__.py @@ -40,7 +40,15 @@ class EmbyModule(_ModuleBase): :param args: 请求参数 :return: 字典,解析为消息时需要包含:title、text、image """ - return self.emby.get_webhook_message(form.get("data")) + if form.get("data"): + result = form.get("data") + else: + pairs = args.split("&") + result = {} + for pair in pairs: + key, value = pair.split("=") + result[key] = value + return self.emby.get_webhook_message(result) def media_exists(self, mediainfo: MediaInfo, itemid: str = None) -> Optional[ExistMediaInfo]: """ From 05d976d257d50a29e8bdbd0024b3eccff3587b75 Mon Sep 17 00:00:00 2001 From: thsrite Date: Sat, 12 Aug 2023 14:29:43 +0800 Subject: [PATCH 2/6] fix --- app/api/endpoints/webhook.py | 13 +++++++++++++ app/modules/emby/__init__.py | 8 ++------ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/app/api/endpoints/webhook.py b/app/api/endpoints/webhook.py index b1daf0ca..a5379aba 100644 --- a/app/api/endpoints/webhook.py +++ b/app/api/endpoints/webhook.py @@ -29,3 +29,16 @@ async def webhook_message(background_tasks: BackgroundTasks, args = request.query_params background_tasks.add_task(start_webhook_chain, body, form, args) return schemas.Response(success=True) + + +@router.get("/", summary="Webhook消息响应", response_model=schemas.Response) +async def webhook_message(background_tasks: BackgroundTasks, + token: str, request: Request) -> Any: + """ + Webhook响应 + """ + if token != settings.API_TOKEN: + return schemas.Response(success=False, message="token认证不通过") + args = request.query_params + background_tasks.add_task(start_webhook_chain, None, None, args) + return schemas.Response(success=True) diff --git a/app/modules/emby/__init__.py b/app/modules/emby/__init__.py index 2616e350..fd1a24bf 100644 --- a/app/modules/emby/__init__.py +++ b/app/modules/emby/__init__.py @@ -40,14 +40,10 @@ class EmbyModule(_ModuleBase): :param args: 请求参数 :return: 字典,解析为消息时需要包含:title、text、image """ - if form.get("data"): + if form and form.get("data"): result = form.get("data") else: - pairs = args.split("&") - result = {} - for pair in pairs: - key, value = pair.split("=") - result[key] = value + result = dict(args) return self.emby.get_webhook_message(result) def media_exists(self, mediainfo: MediaInfo, itemid: str = None) -> Optional[ExistMediaInfo]: From 99aa07348fa009f6cced6e2ecc1783270761e02b Mon Sep 17 00:00:00 2001 From: thsrite Date: Sat, 12 Aug 2023 14:32:47 +0800 Subject: [PATCH 3/6] fix --- app/api/endpoints/webhook.py | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/app/api/endpoints/webhook.py b/app/api/endpoints/webhook.py index a5379aba..7f50549e 100644 --- a/app/api/endpoints/webhook.py +++ b/app/api/endpoints/webhook.py @@ -16,22 +16,7 @@ def start_webhook_chain(body: Any, form: Any, args: Any): WebhookChain().message(body=body, form=form, args=args) -@router.post("/", summary="Webhook消息响应", response_model=schemas.Response) -async def webhook_message(background_tasks: BackgroundTasks, - token: str, request: Request) -> Any: - """ - Webhook响应 - """ - if token != settings.API_TOKEN: - return schemas.Response(success=False, message="token认证不通过") - body = await request.body() - form = await request.form() - args = request.query_params - background_tasks.add_task(start_webhook_chain, body, form, args) - return schemas.Response(success=True) - - -@router.get("/", summary="Webhook消息响应", response_model=schemas.Response) +@router.route(path="/", methods=['GET', 'POST'], name="Webhook消息响应") async def webhook_message(background_tasks: BackgroundTasks, token: str, request: Request) -> Any: """ From c735f0497c64738d6220e0b0bc589c2b771831fb Mon Sep 17 00:00:00 2001 From: thsrite Date: Sat, 12 Aug 2023 14:37:07 +0800 Subject: [PATCH 4/6] fix --- app/api/endpoints/webhook.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/app/api/endpoints/webhook.py b/app/api/endpoints/webhook.py index 7f50549e..a5379aba 100644 --- a/app/api/endpoints/webhook.py +++ b/app/api/endpoints/webhook.py @@ -16,7 +16,22 @@ def start_webhook_chain(body: Any, form: Any, args: Any): WebhookChain().message(body=body, form=form, args=args) -@router.route(path="/", methods=['GET', 'POST'], name="Webhook消息响应") +@router.post("/", summary="Webhook消息响应", response_model=schemas.Response) +async def webhook_message(background_tasks: BackgroundTasks, + token: str, request: Request) -> Any: + """ + Webhook响应 + """ + if token != settings.API_TOKEN: + return schemas.Response(success=False, message="token认证不通过") + body = await request.body() + form = await request.form() + args = request.query_params + background_tasks.add_task(start_webhook_chain, body, form, args) + return schemas.Response(success=True) + + +@router.get("/", summary="Webhook消息响应", response_model=schemas.Response) async def webhook_message(background_tasks: BackgroundTasks, token: str, request: Request) -> Any: """ From d56ecd674eefbd4934c036857bd02990ae797619 Mon Sep 17 00:00:00 2001 From: thsrite Date: Sat, 12 Aug 2023 14:40:57 +0800 Subject: [PATCH 5/6] fix dict --- app/modules/emby/__init__.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/modules/emby/__init__.py b/app/modules/emby/__init__.py index fd1a24bf..07a3d0b8 100644 --- a/app/modules/emby/__init__.py +++ b/app/modules/emby/__init__.py @@ -1,3 +1,4 @@ +import json from pathlib import Path from typing import Optional, Tuple, Union, Any, List, Generator @@ -43,7 +44,7 @@ class EmbyModule(_ModuleBase): if form and form.get("data"): result = form.get("data") else: - result = dict(args) + result = json.dumps(dict(args)) return self.emby.get_webhook_message(result) def media_exists(self, mediainfo: MediaInfo, itemid: str = None) -> Optional[ExistMediaInfo]: From ff5b4200056e81854e456d711d25912fa9389ff1 Mon Sep 17 00:00:00 2001 From: thsrite Date: Sat, 12 Aug 2023 15:00:28 +0800 Subject: [PATCH 6/6] =?UTF-8?q?fix=20emby=20Scripter=20X=E6=96=B9=E5=BC=8F?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/modules/emby/emby.py | 8 ++++++++ app/plugins/mediasyncdel/__init__.py | 20 ++++++++++---------- app/schemas/mediaserver.py | 1 + 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/app/modules/emby/emby.py b/app/modules/emby/emby.py index d43edb2b..6ea1423d 100644 --- a/app/modules/emby/emby.py +++ b/app/modules/emby/emby.py @@ -591,6 +591,14 @@ class Emby(metaclass=Singleton): eventItem.client = message.get('Session').get('Client') if message.get("User"): eventItem.user_name = message.get("User").get('Name') + if message.get("item_isvirtual"): + eventItem.item_isvirtual = message.get("item_isvirtual") + eventItem.item_type = message.get("item_type") + eventItem.item_name = message.get("item_name") + eventItem.item_path = message.get("item_path") + eventItem.tmdb_id = message.get("tmdb_id") + eventItem.season_id = message.get("season_id") + eventItem.episode_id = message.get("episode_id") # 获取消息图片 if eventItem.item_id: diff --git a/app/plugins/mediasyncdel/__init__.py b/app/plugins/mediasyncdel/__init__.py index bd5838f4..a01297e2 100644 --- a/app/plugins/mediasyncdel/__init__.py +++ b/app/plugins/mediasyncdel/__init__.py @@ -391,12 +391,12 @@ class MediaSyncDel(_PluginBase): if not self._enabled: return event_data = event.event_data - event_type = event_data.get("event_type") + event_type = event_data.event if not event_type or str(event_type) != 'media_del': return # 是否虚拟标识 - item_isvirtual = event_data.get("item_isvirtual") + item_isvirtual = event_data.item_isvirtual if not item_isvirtual: logger.error("item_isvirtual参数未配置,为防止误删除,暂停插件运行") self.update_config({ @@ -417,24 +417,24 @@ class MediaSyncDel(_PluginBase): history = self.get_data('history') or [] # 媒体类型 - media_type = event_data.get("media_type") + media_type = event_data.item_type # 媒体名称 - media_name = event_data.get("media_name") + media_name = event_data.item_name # 媒体路径 - media_path = event_data.get("media_path") + media_path = event_data.item_path # tmdb_id - tmdb_id = event_data.get("tmdb_id") + tmdb_id = event_data.tmdb_id # 季数 - season_num = event_data.get("season_num") + season_num = event_data.season_id if season_num and str(season_num).isdigit() and int(season_num) < 10: season_num = f'S0{season_num}' - else: + elif season_num: season_num = f'S{season_num}' # 集数 - episode_num = event_data.get("episode_num") + episode_num = event_data.episode_id if episode_num and str(episode_num).isdigit() and int(episode_num) < 10: episode_num = f'E0{episode_num}' - else: + elif episode_num: episode_num = f'E{episode_num}' if not media_type: diff --git a/app/schemas/mediaserver.py b/app/schemas/mediaserver.py index fa45d8cc..0f8ff8a4 100644 --- a/app/schemas/mediaserver.py +++ b/app/schemas/mediaserver.py @@ -133,3 +133,4 @@ class WebhookEventInfo(BaseModel): image_url: Optional[str] = None item_favorite: Optional[bool] = None save_reason: Optional[str] = None + item_isvirtual: Optional[bool] = None