mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-03-20 03:57:30 +08:00
184 lines
4.8 KiB
Python
184 lines
4.8 KiB
Python
from pathlib import Path
|
||
from typing import Optional, Dict, Union, List, Any
|
||
|
||
from pydantic import BaseModel, Field, ConfigDict
|
||
|
||
from app.schemas.types import MediaType
|
||
|
||
|
||
class ExistMediaInfo(BaseModel):
|
||
"""
|
||
媒体服务器存在媒体信息
|
||
"""
|
||
# 类型 电影、电视剧
|
||
type: Optional[MediaType] = None
|
||
# 季
|
||
seasons: Optional[Dict[int, list]] = Field(default_factory=dict)
|
||
# 媒体服务器类型:plex、jellyfin、emby、trimemedia、ugreen
|
||
server_type: Optional[str] = None
|
||
# 媒体服务器名称
|
||
server: Optional[str] = None
|
||
# 媒体ID
|
||
itemid: Optional[Union[str, int]] = None
|
||
|
||
|
||
class NotExistMediaInfo(BaseModel):
|
||
"""
|
||
媒体服务器不存在媒体信息
|
||
"""
|
||
# 季
|
||
season: Optional[int] = None
|
||
# 剧集列表
|
||
episodes: Optional[list] = Field(default_factory=list)
|
||
# 总集数
|
||
total_episode: Optional[int] = 0
|
||
# 开始集
|
||
start_episode: Optional[int] = 0
|
||
|
||
|
||
class RefreshMediaItem(BaseModel):
|
||
"""
|
||
媒体库刷新信息
|
||
"""
|
||
# 标题
|
||
title: Optional[str] = None
|
||
# 年份
|
||
year: Optional[Union[str, int]] = None
|
||
# 类型
|
||
type: Optional[MediaType] = None
|
||
# 类别
|
||
category: Optional[str] = None
|
||
# 目录
|
||
target_path: Optional[Path] = None
|
||
|
||
|
||
class MediaServerLibrary(BaseModel):
|
||
"""
|
||
媒体服务器媒体库信息
|
||
"""
|
||
# 服务器
|
||
server: Optional[str] = None
|
||
# ID
|
||
id: Optional[Union[str, int]] = None
|
||
# 名称
|
||
name: Optional[str] = None
|
||
# 路径
|
||
path: Optional[Union[str, list]] = None
|
||
# 类型
|
||
type: Optional[str] = None
|
||
# 封面图
|
||
image: Optional[str] = None
|
||
# 封面图列表
|
||
image_list: Optional[List[str]] = None
|
||
# 跳转链接
|
||
link: Optional[str] = None
|
||
# 服务器类型
|
||
server_type: Optional[str] = None
|
||
# 飞牛的图片需要Cookies
|
||
use_cookies: Optional[bool] = None
|
||
|
||
|
||
class MediaServerItemUserState(BaseModel):
|
||
# 已播放
|
||
played: Optional[bool] = None
|
||
# 继续播放
|
||
resume: Optional[bool] = None
|
||
# 上次播放时间 10位时间戳
|
||
last_played_date: Optional[str] = None
|
||
# 播放次数(不等于完播次数,理解为浏览次数)
|
||
play_count: Optional[int] = None
|
||
# 播放进度
|
||
percentage: Optional[float] = None
|
||
|
||
|
||
class MediaServerItem(BaseModel):
|
||
"""
|
||
媒体服务器媒体信息
|
||
"""
|
||
# ID
|
||
id: Optional[Union[str, int]] = None
|
||
# 服务器
|
||
server: Optional[str] = None
|
||
# 媒体库ID
|
||
library: Optional[Union[str, int]] = None
|
||
# ID
|
||
item_id: Optional[str] = None
|
||
# 类型
|
||
item_type: Optional[str] = None
|
||
# 标题
|
||
title: Optional[str] = None
|
||
# 原标题
|
||
original_title: Optional[str] = None
|
||
# 年份
|
||
year: Optional[Union[str, int]] = None
|
||
# TMDBID
|
||
tmdbid: Optional[int] = None
|
||
# IMDBID
|
||
imdbid: Optional[str] = None
|
||
# TVDBID
|
||
tvdbid: Optional[str] = None
|
||
# 路径
|
||
path: Optional[str] = None
|
||
# 季集
|
||
seasoninfo: Optional[Dict[int, list]] = None
|
||
# 备注
|
||
note: Optional[Any] = None
|
||
# 同步时间
|
||
lst_mod_date: Optional[str] = None
|
||
user_state: Optional[MediaServerItemUserState] = None
|
||
|
||
model_config = ConfigDict(from_attributes=True)
|
||
|
||
|
||
class MediaServerSeasonInfo(BaseModel):
|
||
"""
|
||
媒体服务器媒体剧集信息
|
||
"""
|
||
season: Optional[int] = None
|
||
episodes: Optional[List[int]] = Field(default_factory=list)
|
||
|
||
|
||
class WebhookEventInfo(BaseModel):
|
||
"""
|
||
Webhook事件信息
|
||
"""
|
||
event: Optional[str] = None
|
||
channel: Optional[str] = None
|
||
server_name: Optional[str] = None
|
||
item_type: Optional[str] = None
|
||
item_name: Optional[str] = None
|
||
item_id: Optional[str] = None
|
||
item_path: Optional[str] = None
|
||
season_id: Optional[str] = None
|
||
episode_id: Optional[str] = None
|
||
tmdb_id: Optional[str] = None
|
||
overview: Optional[str] = None
|
||
percentage: Optional[float] = None
|
||
ip: Optional[str] = None
|
||
device_name: Optional[str] = None
|
||
client: Optional[str] = None
|
||
user_name: Optional[str] = None
|
||
image_url: Optional[str] = None
|
||
item_favorite: Optional[bool] = None
|
||
save_reason: Optional[str] = None
|
||
item_isvirtual: Optional[bool] = None
|
||
media_type: Optional[str] = None
|
||
json_object: Optional[dict] = Field(default_factory=dict)
|
||
|
||
|
||
class MediaServerPlayItem(BaseModel):
|
||
"""
|
||
媒体服务器可播放项目信息
|
||
"""
|
||
id: Optional[Union[str, int]] = None
|
||
title: Optional[str] = None
|
||
subtitle: Optional[str] = None
|
||
type: Optional[str] = None
|
||
image: Optional[str] = None
|
||
link: Optional[str] = None
|
||
percent: Optional[float] = None
|
||
BackdropImageTags: Optional[list] = Field(default_factory=list)
|
||
server_type: Optional[str] = None
|
||
# 飞牛的图片需要Cookies
|
||
use_cookies: Optional[bool] = None
|