diff --git a/app/helper/message.py b/app/helper/message.py index 533df1ba..8822e5fc 100644 --- a/app/helper/message.py +++ b/app/helper/message.py @@ -66,13 +66,15 @@ class TemplateContextBuilder: if include_raw_objects: self._add_raw_objects(meta, mediainfo, torrentinfo, transferinfo, episodes_info) - return self._context + # 移除空值 + return {k: v for k, v in self._context.items() if v is not None} def _add_media_info(self, mediainfo: MediaInfo): """ 增加媒体信息 """ if not mediainfo: return + season_fmt = f"S{mediainfo.season:02d}" if mediainfo.season is not None else None base_info = { # 标题 "title": self.__convert_invalid_characters(mediainfo.title), @@ -82,6 +84,8 @@ class TemplateContextBuilder: "original_title": self.__convert_invalid_characters(mediainfo.original_title), # 季号 "season": self._context.get("season") or mediainfo.season, + # Sxx + "season_fmt": self._context.get("season_fmt") or season_fmt, # 年份 "year": mediainfo.year or self._context.get("year"), # 媒体标题 + 年份 @@ -148,6 +152,8 @@ class TemplateContextBuilder: meta.name, meta.year) if meta.year else meta.name, # 季号 "season": meta.season_seq, + # Sxx + "season_fmt": meta.season, # 集号 "episode": meta.episode_seqs, # 季集 SxxExx @@ -269,7 +275,7 @@ class TemplateContextBuilder: # 当前季的全部集信息 "__episodes_info__": episodes_info, } - self._context.update({k: v for k, v in raw_objects.items() if v is not None}) + self._context.update(raw_objects) @staticmethod def __convert_invalid_characters(filename: str): diff --git a/database/versions/486e56a62dcb_2_1_5.py b/database/versions/486e56a62dcb_2_1_5.py new file mode 100644 index 00000000..dc4a333f --- /dev/null +++ b/database/versions/486e56a62dcb_2_1_5.py @@ -0,0 +1,37 @@ +"""2.1.5 + +Revision ID: 486e56a62dcb +Revises: 89d24811e894 +Create Date: 2025-05-13 19:49:51.271319 + +""" +import re + +from app.db.systemconfig_oper import SystemConfigOper +from app.schemas.types import SystemConfigKey + +# revision identifiers, used by Alembic. +revision = '486e56a62dcb' +down_revision = '89d24811e894' +branch_labels = None +depends_on = None + + +def upgrade() -> None: + # ### commands auto generated by Alembic - please adjust! ### + ### 将消息模板中的 `season`(为单数字, 且重命名需要这个字段)替换为 `season_fmt`(Sxx格式字符串) ### + _systemconfig = SystemConfigOper() + templates = _systemconfig.get(SystemConfigKey.NotificationTemplates) + if isinstance(templates, dict): + _re = r'(?<={{)(?![^}]*[%|])(\s*)season(\s*)(?=}})|(?<={%)if\s+(?![^%]*[%|])season\s*(?=%)' + for k, v in templates.items(): + # 替换season为season_fmt + result = re.sub(_re, r'\1season_fmt\2', v) + templates[k] = result + # 将更新后的模板存回系统配置 + _systemconfig.set(SystemConfigKey.NotificationTemplates, templates) + # ### end Alembic commands ### + + +def downgrade() -> None: + pass diff --git a/database/versions/89d24811e894_2_1_4.py b/database/versions/89d24811e894_2_1_4.py index aa544399..1f34f9f8 100644 --- a/database/versions/89d24811e894_2_1_4.py +++ b/database/versions/89d24811e894_2_1_4.py @@ -33,7 +33,7 @@ def upgrade() -> None: "downloadAdded": """ { 'title': '{{ title_year }}' - '{% if download_episodes %} {{ season }} {{ download_episodes }}{% else %}{{ season_episode }}{% endif %} 开始下载', + '{% if download_episodes %} {{ season_fmt }} {{ download_episodes }}{% else %}{{ season_episode }}{% endif %} 开始下载', 'text': '{% if site_name %}站点:{{ site_name }}{% endif %}' '{% if resource_term %}\\n质量:{{ resource_term }}{% endif %}' '{% if size %}\\n大小:{{ size }}{% endif %}' @@ -46,10 +46,11 @@ def upgrade() -> None: '{% if labels %}\\n标签:{{ labels }}{% endif %}' '{% if description %}\\n描述:{{ description }}{% endif %}' }""", - "subscribeAdded": "{'title': '{{ title_year }} {{season}} 已添加订阅'}", + "subscribeAdded": "{'title': '{{ title_year }}{% if season_fmt %} {{ season_fmt }}{% endif %} 已添加订阅'}", "subscribeComplete": """ { - 'title': '{{ title_year }} {{season}} 已完成{{msgstr}}', + 'title': '{{ title_year }}' + '{% if season_fmt %} {{ season_fmt }}{% endif %} 已完成{{ msgstr }}', 'text': '{% if vote_average %}评分:{{ vote_average }}{% endif %}' '{% if username %},来自用户:{{ username }}{% endif %}' '{% if actors %}\\n演员:{{ actors }}{% endif %}'