mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-03-20 03:57:30 +08:00
- Added QQ Bot notification module to facilitate proactive message sending and message reception via Gateway. - Implemented API functions for sending C2C and group messages. - Established WebSocket client for real-time message handling. - Updated requirements to include websocket-client dependency. - Enhanced schemas to support QQ channel capabilities and notification configurations.
145 lines
3.5 KiB
Python
145 lines
3.5 KiB
Python
from dataclasses import dataclass
|
||
from typing import Optional, Any
|
||
|
||
from pydantic import BaseModel, Field
|
||
|
||
|
||
@dataclass
|
||
class ServiceInfo:
|
||
"""
|
||
封装服务相关信息的数据类
|
||
"""
|
||
|
||
# 名称
|
||
name: Optional[str] = None
|
||
# 实例
|
||
instance: Optional[Any] = None
|
||
# 模块
|
||
module: Optional[Any] = None
|
||
# 类型
|
||
type: Optional[str] = None
|
||
# 配置
|
||
config: Optional[Any] = None
|
||
|
||
|
||
class MediaServerConf(BaseModel):
|
||
"""
|
||
媒体服务器配置
|
||
"""
|
||
|
||
# 名称
|
||
name: Optional[str] = None
|
||
# 类型 emby/jellyfin/plex/trimemedia/ugreen
|
||
type: Optional[str] = None
|
||
# 配置
|
||
config: Optional[dict] = Field(default_factory=dict)
|
||
# 是否启用
|
||
enabled: Optional[bool] = False
|
||
# 同步媒体体库列表
|
||
sync_libraries: Optional[list] = Field(default_factory=list)
|
||
|
||
|
||
class DownloaderConf(BaseModel):
|
||
"""
|
||
下载器配置
|
||
"""
|
||
|
||
# 名称
|
||
name: Optional[str] = None
|
||
# 类型 qbittorrent/transmission/rtorrent
|
||
type: Optional[str] = None
|
||
# 是否默认
|
||
default: Optional[bool] = False
|
||
# 配置
|
||
config: Optional[dict] = Field(default_factory=dict)
|
||
# 是否启用
|
||
enabled: Optional[bool] = False
|
||
# 路径映射
|
||
path_mapping: Optional[list[tuple[str, str]]] = Field(default_factory=list)
|
||
|
||
|
||
class NotificationConf(BaseModel):
|
||
"""
|
||
通知配置
|
||
"""
|
||
|
||
# 名称
|
||
name: Optional[str] = None
|
||
# 类型 telegram/wechat/vocechat/synologychat/slack/webpush/qqbot
|
||
type: Optional[str] = None
|
||
# 配置
|
||
config: Optional[dict] = Field(default_factory=dict)
|
||
# 场景开关
|
||
switchs: Optional[list] = Field(default_factory=list)
|
||
# 是否启用
|
||
enabled: Optional[bool] = False
|
||
|
||
|
||
class NotificationSwitchConf(BaseModel):
|
||
"""
|
||
通知场景开关配置
|
||
"""
|
||
|
||
# 场景名称
|
||
type: str = None
|
||
# 通知范围 all/user/admin
|
||
action: Optional[str] = "all"
|
||
|
||
|
||
class StorageConf(BaseModel):
|
||
"""
|
||
存储配置
|
||
"""
|
||
|
||
# 类型 local/alipan/u115/rclone/alist
|
||
type: Optional[str] = None
|
||
# 名称
|
||
name: Optional[str] = None
|
||
# 配置
|
||
config: Optional[dict] = Field(default_factory=dict)
|
||
|
||
|
||
class TransferDirectoryConf(BaseModel):
|
||
"""
|
||
文件整理目录配置
|
||
"""
|
||
|
||
# 名称
|
||
name: Optional[str] = None
|
||
# 优先级
|
||
priority: Optional[int] = 0
|
||
# 存储
|
||
storage: Optional[str] = None
|
||
# 下载目录
|
||
download_path: Optional[str] = None
|
||
# 适用媒体类型
|
||
media_type: Optional[str] = None
|
||
# 适用媒体类别
|
||
media_category: Optional[str] = None
|
||
# 下载类型子目录
|
||
download_type_folder: Optional[bool] = False
|
||
# 下载类别子目录
|
||
download_category_folder: Optional[bool] = False
|
||
# 监控方式 downloader/monitor,None为不监控
|
||
monitor_type: Optional[str] = None
|
||
# 监控模式 fast / compatibility
|
||
monitor_mode: Optional[str] = "fast"
|
||
# 整理方式 move/copy/link/softlink
|
||
transfer_type: Optional[str] = None
|
||
# 文件覆盖模式 always/size/never/latest
|
||
overwrite_mode: Optional[str] = None
|
||
# 整理到媒体库目录
|
||
library_path: Optional[str] = None
|
||
# 媒体库目录存储
|
||
library_storage: Optional[str] = None
|
||
# 智能重命名
|
||
renaming: Optional[bool] = False
|
||
# 刮削
|
||
scraping: Optional[bool] = False
|
||
# 是否发送通知
|
||
notify: Optional[bool] = True
|
||
# 媒体库类型子目录
|
||
library_type_folder: Optional[bool] = False
|
||
# 媒体库类别子目录
|
||
library_category_folder: Optional[bool] = False
|