mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-11-03 05:44:44 +08:00
58 lines
1.6 KiB
Python
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"]
|