feat 本地存在标识&媒体库同步
This commit is contained in:
@ -8,3 +8,7 @@ from .servarr import *
|
||||
from .plugin import *
|
||||
from .history import *
|
||||
from .dashboard import *
|
||||
from .mediaserver import *
|
||||
from .message import *
|
||||
from .tmdb import *
|
||||
from .transfer import *
|
||||
|
@ -1,10 +1,7 @@
|
||||
from pathlib import Path
|
||||
from typing import Optional, Dict, List, Union
|
||||
from typing import Optional, Dict, List
|
||||
|
||||
from pydantic import BaseModel
|
||||
|
||||
from app.schemas.types import MediaType, NotificationType, MessageChannel
|
||||
|
||||
|
||||
class MetaInfo(BaseModel):
|
||||
"""
|
||||
@ -199,165 +196,3 @@ class Context(BaseModel):
|
||||
media_info: Optional[MediaInfo] = None
|
||||
# 种子信息
|
||||
torrent_info: Optional[TorrentInfo] = None
|
||||
|
||||
|
||||
class TransferTorrent(BaseModel):
|
||||
"""
|
||||
待转移任务信息
|
||||
"""
|
||||
title: Optional[str] = None
|
||||
path: Optional[Path] = None
|
||||
hash: Optional[str] = None
|
||||
tags: Optional[str] = None
|
||||
|
||||
|
||||
class DownloadingTorrent(BaseModel):
|
||||
"""
|
||||
下载中任务信息
|
||||
"""
|
||||
hash: Optional[str] = None
|
||||
title: Optional[str] = None
|
||||
name: Optional[str] = None
|
||||
year: Optional[str] = None
|
||||
season_episode: Optional[str] = None
|
||||
size: Optional[float] = 0
|
||||
progress: Optional[float] = 0
|
||||
state: Optional[str] = 'downloading'
|
||||
upspeed: Optional[str] = None
|
||||
dlspeed: Optional[str] = None
|
||||
media: Optional[dict] = {}
|
||||
|
||||
|
||||
class TransferInfo(BaseModel):
|
||||
"""
|
||||
文件转移结果信息
|
||||
"""
|
||||
# 转移⼁路径
|
||||
path: Optional[Path] = None
|
||||
# 转移后路径
|
||||
target_path: Optional[Path] = None
|
||||
# 处理文件数
|
||||
file_count: Optional[int] = 0
|
||||
# 总文件大小
|
||||
total_size: Optional[float] = 0
|
||||
# 失败清单
|
||||
fail_list: Optional[list] = []
|
||||
# 错误信息
|
||||
message: Optional[str] = None
|
||||
|
||||
|
||||
class ExistMediaInfo(BaseModel):
|
||||
"""
|
||||
媒体服务器存在媒体信息
|
||||
"""
|
||||
# 类型 电影、电视剧
|
||||
type: Optional[MediaType]
|
||||
# 季
|
||||
seasons: Optional[Dict[int, list]] = {}
|
||||
|
||||
|
||||
class NotExistMediaInfo(BaseModel):
|
||||
"""
|
||||
媒体服务器不存在媒体信息
|
||||
"""
|
||||
# 季
|
||||
season: Optional[int] = None
|
||||
# 剧集列表
|
||||
episodes: Optional[list] = []
|
||||
# 总集数
|
||||
total_episodes: Optional[int] = 0
|
||||
# 开始集
|
||||
start_episode: Optional[int] = 0
|
||||
|
||||
|
||||
class RefreshMediaItem(BaseModel):
|
||||
"""
|
||||
媒体库刷新信息
|
||||
"""
|
||||
# 标题
|
||||
title: Optional[str] = None
|
||||
# 年份
|
||||
year: Optional[str] = None
|
||||
# 类型
|
||||
type: Optional[MediaType] = None
|
||||
# 类别
|
||||
category: Optional[str] = None
|
||||
# 目录
|
||||
target_path: Optional[Path] = None
|
||||
|
||||
|
||||
class TmdbSeason(BaseModel):
|
||||
"""
|
||||
TMDB季信息
|
||||
"""
|
||||
air_date: Optional[str] = None
|
||||
episode_count: Optional[int] = None
|
||||
name: Optional[str] = None
|
||||
overview: Optional[str] = None
|
||||
poster_path: Optional[str] = None
|
||||
season_number: Optional[int] = None
|
||||
vote_average: Optional[float] = None
|
||||
|
||||
|
||||
class TmdbEpisode(BaseModel):
|
||||
"""
|
||||
TMDB集信息
|
||||
"""
|
||||
air_date: Optional[str] = None
|
||||
episode_number: Optional[int] = None
|
||||
name: Optional[str] = None
|
||||
overview: Optional[str] = None
|
||||
runtime: Optional[int] = None
|
||||
season_number: Optional[int] = None
|
||||
still_path: Optional[str] = None
|
||||
vote_average: Optional[float] = None
|
||||
crew: Optional[list] = []
|
||||
guest_stars: Optional[list] = []
|
||||
|
||||
|
||||
class Notification(BaseModel):
|
||||
"""
|
||||
消息
|
||||
"""
|
||||
# 消息渠道
|
||||
channel: Optional[MessageChannel] = None
|
||||
# 消息类型
|
||||
mtype: Optional[NotificationType] = None
|
||||
# 标题
|
||||
title: Optional[str] = None
|
||||
# 文本内容
|
||||
text: Optional[str] = None
|
||||
# 图片
|
||||
image: Optional[str] = None
|
||||
# 链接
|
||||
link: Optional[str] = None
|
||||
# 用户ID
|
||||
userid: Optional[Union[str, int]] = None
|
||||
|
||||
|
||||
class CommingMessage(BaseModel):
|
||||
"""
|
||||
外来消息
|
||||
"""
|
||||
# 用户ID
|
||||
userid: Optional[Union[str, int]] = None
|
||||
# 用户名称
|
||||
username: Optional[str] = None
|
||||
# 消息渠道
|
||||
channel: Optional[MessageChannel] = None
|
||||
# 消息体
|
||||
text: Optional[str] = None
|
||||
|
||||
|
||||
class NotificationSwitch(BaseModel):
|
||||
"""
|
||||
消息开关
|
||||
"""
|
||||
# 消息类型
|
||||
mtype: Optional[str] = None
|
||||
# 微信开关
|
||||
wechat: Optional[bool] = False
|
||||
# TG开关
|
||||
telegram: Optional[bool] = False
|
||||
# Slack开关
|
||||
slack: Optional[bool] = False
|
||||
|
111
app/schemas/mediaserver.py
Normal file
111
app/schemas/mediaserver.py
Normal file
@ -0,0 +1,111 @@
|
||||
from pathlib import Path
|
||||
from typing import Optional, Dict, Union, List
|
||||
|
||||
from pydantic import BaseModel
|
||||
|
||||
from app.schemas.types import MediaType
|
||||
|
||||
|
||||
class ExistMediaInfo(BaseModel):
|
||||
"""
|
||||
媒体服务器存在媒体信息
|
||||
"""
|
||||
# 类型 电影、电视剧
|
||||
type: Optional[MediaType]
|
||||
# 季
|
||||
seasons: Optional[Dict[int, list]] = {}
|
||||
|
||||
|
||||
class NotExistMediaInfo(BaseModel):
|
||||
"""
|
||||
媒体服务器不存在媒体信息
|
||||
"""
|
||||
# 季
|
||||
season: Optional[int] = None
|
||||
# 剧集列表
|
||||
episodes: Optional[list] = []
|
||||
# 总集数
|
||||
total_episodes: Optional[int] = 0
|
||||
# 开始集
|
||||
start_episode: Optional[int] = 0
|
||||
|
||||
|
||||
class RefreshMediaItem(BaseModel):
|
||||
"""
|
||||
媒体库刷新信息
|
||||
"""
|
||||
# 标题
|
||||
title: Optional[str] = None
|
||||
# 年份
|
||||
year: Optional[str] = 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
|
||||
|
||||
|
||||
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[str] = 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[str] = None
|
||||
# 同步时间
|
||||
lst_mod_date: Optional[str] = None
|
||||
|
||||
class Config:
|
||||
orm_mode = True
|
||||
|
||||
|
||||
class MediaServerSeasonInfo(BaseModel):
|
||||
"""
|
||||
媒体服务器媒体剧集信息
|
||||
"""
|
||||
season: Optional[int] = None
|
||||
episodes: Optional[List[int]] = []
|
53
app/schemas/message.py
Normal file
53
app/schemas/message.py
Normal file
@ -0,0 +1,53 @@
|
||||
from typing import Optional, Union
|
||||
|
||||
from pydantic import BaseModel
|
||||
|
||||
from app.schemas.types import NotificationType, MessageChannel
|
||||
|
||||
|
||||
class CommingMessage(BaseModel):
|
||||
"""
|
||||
外来消息
|
||||
"""
|
||||
# 用户ID
|
||||
userid: Optional[Union[str, int]] = None
|
||||
# 用户名称
|
||||
username: Optional[str] = None
|
||||
# 消息渠道
|
||||
channel: Optional[MessageChannel] = None
|
||||
# 消息体
|
||||
text: Optional[str] = None
|
||||
|
||||
|
||||
class Notification(BaseModel):
|
||||
"""
|
||||
消息
|
||||
"""
|
||||
# 消息渠道
|
||||
channel: Optional[MessageChannel] = None
|
||||
# 消息类型
|
||||
mtype: Optional[NotificationType] = None
|
||||
# 标题
|
||||
title: Optional[str] = None
|
||||
# 文本内容
|
||||
text: Optional[str] = None
|
||||
# 图片
|
||||
image: Optional[str] = None
|
||||
# 链接
|
||||
link: Optional[str] = None
|
||||
# 用户ID
|
||||
userid: Optional[Union[str, int]] = None
|
||||
|
||||
|
||||
class NotificationSwitch(BaseModel):
|
||||
"""
|
||||
消息开关
|
||||
"""
|
||||
# 消息类型
|
||||
mtype: Optional[str] = None
|
||||
# 微信开关
|
||||
wechat: Optional[bool] = False
|
||||
# TG开关
|
||||
telegram: Optional[bool] = False
|
||||
# Slack开关
|
||||
slack: Optional[bool] = False
|
32
app/schemas/tmdb.py
Normal file
32
app/schemas/tmdb.py
Normal file
@ -0,0 +1,32 @@
|
||||
from typing import Optional
|
||||
|
||||
from pydantic import BaseModel
|
||||
|
||||
|
||||
class TmdbSeason(BaseModel):
|
||||
"""
|
||||
TMDB季信息
|
||||
"""
|
||||
air_date: Optional[str] = None
|
||||
episode_count: Optional[int] = None
|
||||
name: Optional[str] = None
|
||||
overview: Optional[str] = None
|
||||
poster_path: Optional[str] = None
|
||||
season_number: Optional[int] = None
|
||||
vote_average: Optional[float] = None
|
||||
|
||||
|
||||
class TmdbEpisode(BaseModel):
|
||||
"""
|
||||
TMDB集信息
|
||||
"""
|
||||
air_date: Optional[str] = None
|
||||
episode_number: Optional[int] = None
|
||||
name: Optional[str] = None
|
||||
overview: Optional[str] = None
|
||||
runtime: Optional[int] = None
|
||||
season_number: Optional[int] = None
|
||||
still_path: Optional[str] = None
|
||||
vote_average: Optional[float] = None
|
||||
crew: Optional[list] = []
|
||||
guest_stars: Optional[list] = []
|
49
app/schemas/transfer.py
Normal file
49
app/schemas/transfer.py
Normal file
@ -0,0 +1,49 @@
|
||||
from pathlib import Path
|
||||
from typing import Optional
|
||||
|
||||
from pydantic import BaseModel
|
||||
|
||||
|
||||
class TransferTorrent(BaseModel):
|
||||
"""
|
||||
待转移任务信息
|
||||
"""
|
||||
title: Optional[str] = None
|
||||
path: Optional[Path] = None
|
||||
hash: Optional[str] = None
|
||||
tags: Optional[str] = None
|
||||
|
||||
|
||||
class DownloadingTorrent(BaseModel):
|
||||
"""
|
||||
下载中任务信息
|
||||
"""
|
||||
hash: Optional[str] = None
|
||||
title: Optional[str] = None
|
||||
name: Optional[str] = None
|
||||
year: Optional[str] = None
|
||||
season_episode: Optional[str] = None
|
||||
size: Optional[float] = 0
|
||||
progress: Optional[float] = 0
|
||||
state: Optional[str] = 'downloading'
|
||||
upspeed: Optional[str] = None
|
||||
dlspeed: Optional[str] = None
|
||||
media: Optional[dict] = {}
|
||||
|
||||
|
||||
class TransferInfo(BaseModel):
|
||||
"""
|
||||
文件转移结果信息
|
||||
"""
|
||||
# 转移⼁路径
|
||||
path: Optional[Path] = None
|
||||
# 转移后路径
|
||||
target_path: Optional[Path] = None
|
||||
# 处理文件数
|
||||
file_count: Optional[int] = 0
|
||||
# 总文件大小
|
||||
total_size: Optional[float] = 0
|
||||
# 失败清单
|
||||
fail_list: Optional[list] = []
|
||||
# 错误信息
|
||||
message: Optional[str] = None
|
Reference in New Issue
Block a user