Files
MoviePilot/app/sdk/_legacy/transfer.py
DDSRem 2de976f6b3 Merge pull request #7050 from DDSRem-Dev/codex-comment-migration
docs: 统一全项目中文注释和结构化契约说明
2026-10-17 19:26:29 +08:00

58 lines
1.6 KiB
Python

"""
保留旧 schemas 整理工作项的宽松构造契约。
"""
from typing import Any, Optional
from app.application.transfer.workflow import (
TransferQueue as CanonicalTransferQueue,
)
from app.application.transfer.workflow import (
TransferTask as CanonicalTransferTask,
)
def _serialize_legacy_value(value: Any) -> Any:
"""
同时支持旧 Pydantic 对象与新的领域对象序列化接口。
"""
if value is None:
return None
if callable(getattr(value, "to_dict", None)):
return value.to_dict()
if callable(getattr(value, "model_dump", None)):
return value.model_dump()
return value
class TransferTask(CanonicalTransferTask):
"""
兼容旧任务允许插件传入自定义 meta/mediainfo 对象的行为。
"""
meta: Optional[Any] = None
mediainfo: Optional[Any] = None
download_history: Optional[Any] = None
def to_dict(self) -> dict[str, Any]:
"""
返回兼容领域对象和旧 Pydantic 对象的任务字典。
"""
values = vars(self).copy()
values["fileitem"] = _serialize_legacy_value(self.fileitem)
values["meta"] = _serialize_legacy_value(self.meta)
values["mediainfo"] = _serialize_legacy_value(self.mediainfo)
values["target_directory"] = _serialize_legacy_value(self.target_directory)
return values
class TransferQueue(CanonicalTransferQueue):
"""
让旧宽松任务可以继续进入新的整理队列。
"""
task: Optional[TransferTask] = None
__all__ = ["TransferQueue", "TransferTask"]