Files
MoviePilot/app/application/server/payload.py

25 lines
748 B
Python

"""中心服务订阅载荷的共享投影。"""
from __future__ import annotations
from collections.abc import Collection
from typing import Any
from app.schemas.media import resolve_media_identity
def build_subscribe_payload(
item: object,
fields: Collection[str],
) -> dict[str, Any] | None:
"""过滤本地订阅字段并规范化中心服务使用的媒体身份。"""
if not isinstance(item, dict):
return None
media_source, media_id = resolve_media_identity(media=item)
if not media_source or not media_id:
return None
payload = {key: value for key, value in item.items() if key in fields}
payload["media_source"] = str(media_source)
payload["media_id"] = media_id
return payload