From 26596ea52143fe14a55fcbb93af24f1890e2790f Mon Sep 17 00:00:00 2001 From: jxxghp Date: Sat, 8 Jun 2024 11:33:21 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=AA=92=E4=BD=93=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E5=99=A8=E9=80=9A=E7=9F=A5=E6=94=AF=E6=8C=81=E8=B6=85?= =?UTF-8?q?=E9=93=BE=E6=8E=A5=E8=B7=B3=E8=BD=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 7 +++++-- plugins/mediaservermsg/__init__.py | 26 ++++++++++++++++++++++++-- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index aec89e4..6fc5075 100644 --- a/package.json +++ b/package.json @@ -190,10 +190,13 @@ "name": "媒体库服务器通知", "description": "发送Emby/Jellyfin/Plex服务器的播放、入库等通知消息。", "labels": "消息通知,媒体库", - "version": "1.1", + "version": "1.2", "icon": "mediaplay.png", "author": "jxxghp", - "level": 1 + "level": 1, + "history": { + "v1.2": "播放通知增加超链接跳转(需要v1.9.4+)" + } }, "MediaServerRefresh": { "name": "媒体库服务器刷新", diff --git a/plugins/mediaservermsg/__init__.py b/plugins/mediaservermsg/__init__.py index 7ecac33..125eabd 100644 --- a/plugins/mediaservermsg/__init__.py +++ b/plugins/mediaservermsg/__init__.py @@ -3,6 +3,9 @@ from typing import Any, List, Dict, Tuple from app.core.event import eventmanager, Event from app.log import logger +from app.modules.emby import Emby +from app.modules.jellyfin import Jellyfin +from app.modules.plex import Plex from app.plugins import _PluginBase from app.schemas import WebhookEventInfo from app.schemas.types import EventType, MediaType, MediaImageType, NotificationType @@ -17,7 +20,7 @@ class MediaServerMsg(_PluginBase): # 插件图标 plugin_icon = "mediaplay.png" # 插件版本 - plugin_version = "1.1" + plugin_version = "1.2" # 插件作者 plugin_author = "jxxghp" # 作者主页 @@ -29,6 +32,11 @@ class MediaServerMsg(_PluginBase): # 可使用的用户级别 auth_level = 1 + # 对像 + plex = None + emby = None + jellyfin = None + # 私有属性 _enabled = False _types = [] @@ -57,6 +65,10 @@ class MediaServerMsg(_PluginBase): if config: self._enabled = config.get("enabled") self._types = config.get("types") or [] + if self._enabled: + self.emby = Emby() + self.plex = Plex() + self.jellyfin = Jellyfin() def get_state(self) -> bool: return self._enabled @@ -233,9 +245,19 @@ class MediaServerMsg(_PluginBase): if not image_url: image_url = self._webhook_images.get(event_info.channel) + # 获取链接地址 + if event_info.channel == "emby": + play_link = self.emby.get_play_url(event_info.item_id) + elif event_info.channel == "plex": + play_link = self.plex.get_play_url(event_info.item_id) + elif event_info.channel == "jellyfin": + play_link = self.jellyfin.get_play_url(event_info.item_id) + else: + play_link = None + # 发送消息 self.post_message(mtype=NotificationType.MediaServer, - title=message_title, text=message_content, image=image_url) + title=message_title, text=message_content, image=image_url, link=play_link) def stop_service(self): """