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

100 lines
4.1 KiB
Python
Raw Permalink 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 dataclasses import dataclass, field
from typing import Any, Dict, Optional
from uuid import uuid4
from app.domain.context import (
MediaInfo,
)
from app.domain.meta.metabase import MetaBase
from app.schemas.types import (
MediaSource,
MediaType,
NotificationChannel,
)
@dataclass(frozen=True, slots=True)
class _SubscribePostCommitContext:
"""
订阅提交后副作用所需的不可变业务快照。
:param title: 请求使用的媒体标题,识别后可更新为规范标题
:param year: 请求使用的发行年份文本
:param metainfo: 订阅标题解析得到并经过入口修正的元数据
:param mediainfo: 识别完成并用于事件与统计的媒体信息快照
:param media_source: 规范化的媒体身份来源,None 表示尚未确定
:param media_id: 对应来源的原生媒体标识,None 表示尚未确定
:param season: 订阅的电视剧季号,None 表示未指定
:param channel: 订阅结果通知渠道,None 表示由通知路由选择
:param source: 发起订阅的消息入口来源,None 表示未提供
:param userid: 接收订阅反馈的渠道用户标识,None 表示未指定
:param username: 订阅归属与通知使用的用户名,None 表示未指定
:param message: 是否生成订阅结果通知
:param notification: 事务提交前渲染的通知消息字典,None 表示无需发送
:param occurrence_id: 本次新增事件的唯一标识,默认生成随机值,参与事件幂等键
"""
title: str
year: str
metainfo: MetaBase
mediainfo: MediaInfo
media_source: Optional[MediaSource]
media_id: Optional[str]
season: Optional[int]
channel: Optional[NotificationChannel]
source: Optional[str]
userid: Optional[str]
username: Optional[str]
message: bool
notification: Optional[dict[str, Any]] = None
occurrence_id: str = field(default_factory=lambda: uuid4().hex)
@dataclass(slots=True)
class _SubscribeCreateContext:
"""
订阅新增各阶段共享的显式状态,避免同步与异步入口各自维护散落变量。
:param title: 请求使用的媒体标题,识别后可更新为规范标题
:param year: 请求使用的发行年份文本
:param mtype: 调用方限定的媒体类型,None 时由标题解析或识别决定
:param episode_group: 电视剧使用的剧集组标识,None 表示未指定
:param season: 订阅的电视剧季号,None 表示未指定
:param channel: 订阅结果通知渠道,None 表示由通知路由选择
:param source: 发起订阅的消息入口来源,None 表示未提供
:param userid: 接收订阅反馈的渠道用户标识,None 表示未指定
:param username: 订阅归属与通知使用的用户名,None 表示未指定
:param message: 是否生成订阅结果通知
:param exist_ok: 是否容忍订阅已存在等创建失败,启用时不发送失败通知
:param options: 订阅过滤、保存路径、音乐实体等附加选项
:param explicit_identity: 调用方是否显式提供了来源或媒体标识,用于拒绝不完整身份
:param media_source: 规范化的媒体身份来源,None 表示尚未确定
:param media_id: 对应来源的原生媒体标识,None 表示尚未确定
:param requested_music_type: 调用方指定的音乐实体类型,None 时按识别规则选择
:param metainfo: 订阅标题解析得到并经过入口修正的元数据
:param mediainfo: 识别完成后的媒体信息,准备阶段尚未识别时为 None
"""
title: str
year: str
mtype: Optional[MediaType]
episode_group: Optional[str]
season: Optional[int]
channel: Optional[NotificationChannel]
source: Optional[str]
userid: Optional[str]
username: Optional[str]
message: bool
exist_ok: bool
options: Dict[str, Any]
explicit_identity: bool
media_source: Optional[MediaSource]
media_id: Optional[str]
requested_music_type: Optional[str]
metainfo: MetaBase
mediainfo: Optional[MediaInfo] = None