Files
MoviePilot/app/schemas/history.py
T
jxxghp c580181049 fix(api): keep src/dest fileitem fields in transfer history response
TransferHistory schema omitted src_fileitem, dest_fileitem and files which
are emitted by to_dict, so the response_model filter stripped the file
size the frontend reads from src_fileitem.size.
2026-08-14 20:40:02 +08:00

145 lines
3.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
from typing import List, Optional
from pydantic import BaseModel, ConfigDict, Field
from app.schemas.common import JsonData
from app.schemas.media import OptionalMediaIdentityMixin
from app.schemas.types import MediaSource
class DownloadHistory(OptionalMediaIdentityMixin, BaseModel):
"""
下载历史记录
"""
# ID
id: int
# 保存路程
path: Optional[str] = None
# 类型:电影、电视剧、音乐
type: Optional[str] = None
# 标题
title: Optional[str] = None
# 年份
year: Optional[str] = None
# 媒体数据源
media_source: Optional[MediaSource] = None
# 数据源原生ID
media_id: Optional[str] = None
# 音乐实体类型:recording 单曲、album 专辑
music_type: Optional[str] = None
# 季Sxx
seasons: Optional[str] = None
# 集Exx
episodes: Optional[str] = None
# 背景图
image: Optional[str] = None
# 海报
poster: Optional[str] = None
# 下载器Hash
download_hash: Optional[str] = None
# 种子名称
torrent_name: Optional[str] = None
# 种子描述
torrent_description: Optional[str] = None
# 站点
torrent_site: Optional[str] = None
# 下载用户
userid: Optional[str] = None
# 下载用户名
username: Optional[str] = None
# 下载渠道
channel: Optional[str] = None
# 创建时间
date: Optional[str] = None
# 备注
note: Optional[JsonData] = None
# 自定义媒体类别
media_category: Optional[str] = None
# 自定义剧集组
episode_group: Optional[str] = None
model_config = ConfigDict(from_attributes=True)
class TransferHistory(OptionalMediaIdentityMixin, BaseModel):
"""
文件整理历史记录
"""
# ID
id: int
# 源存储类型
src_storage: Optional[str] = None
# 目标存储类型
dest_storage: Optional[str] = None
# 源文件项(含文件大小等运行时字段,与 to_dict 直出保持一致)
src_fileitem: Optional[JsonData] = None
# 目标文件项
dest_fileitem: Optional[JsonData] = None
# 源目录
src: Optional[str] = None
# 目的目录
dest: Optional[str] = None
# 转移模式
mode: Optional[str] = None
# 类型:电影、电视剧、音乐
type: Optional[str] = None
# 二级分类
category: Optional[str] = None
# 标题
title: Optional[str] = None
# 年份
year: Optional[str] = None
# 媒体数据源
media_source: Optional[MediaSource] = None
# 数据源原生ID
media_id: Optional[str] = None
# 音乐实体类型:recording 单曲、album 专辑
music_type: Optional[str] = None
# 专辑预期总曲目数
total_tracks: Optional[int] = None
# 实际音频格式
audio_format: Optional[str] = None
# 是否无损音频
audio_lossless: Optional[bool] = None
# 实际位深(bit
bit_depth: Optional[int] = None
# 实际采样率(Hz
sample_rate: Optional[int] = None
# 实际码率(bps
bitrate: Optional[int] = None
# 季Sxx
seasons: Optional[str] = None
# 集Exx
episodes: Optional[str] = None
# 海报
image: Optional[str] = None
# 下载器Hash
download_hash: Optional[str] = None
# 自定义剧集组
episode_group: Optional[str] = None
# 状态 1-成功,0-失败
status: bool = True
# 失败原因
errmsg: Optional[str] = None
# 日期
date: Optional[str] = None
# 文件清单
files: Optional[JsonData] = None
model_config = ConfigDict(from_attributes=True)
class BatchTransferHistoryRedoRequest(BaseModel):
"""批量重新整理历史请求。"""
history_ids: list[int] = Field(default_factory=list)
class TransferHistoryPage(BaseModel):
"""整理历史分页数据。"""
list: List[TransferHistory] = Field(default_factory=list, description="整理历史列表")
total: int = Field(default=0, description="记录总数")