From 48a14f8fea2b7943a75531d2e447ac9e0863e695 Mon Sep 17 00:00:00 2001 From: auto-approve-bot Date: Fri, 14 Aug 2026 11:58:24 +0800 Subject: [PATCH] fix: add [ ] escaping for FFmpeg drawtext & guard plan_config None - thumbnail_generator: _overlay_title_on_image now escapes [ and ] characters to prevent FFmpeg filter syntax errors when title contains brackets (e.g. '[Tag]') - render_adapter: use (plan_config or {}).get(...) to guard against None plan_config in cover candidate generation block Addresses AI Code Review findings on PR #1365. --- apps/worker/video_processing/render_adapter.py | 2 +- apps/worker/video_processing/thumbnail_generator.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/worker/video_processing/render_adapter.py b/apps/worker/video_processing/render_adapter.py index 770501038..bd14d13a0 100755 --- a/apps/worker/video_processing/render_adapter.py +++ b/apps/worker/video_processing/render_adapter.py @@ -584,7 +584,7 @@ class RenderAdapter: from video_processing.thumbnail_generator import extract_and_upload_cover_frames # 从 plan config 提取标题文字,叠加到封面候选帧上 - _title_cfg = plan_config.get("title", {}) or {} + _title_cfg = (plan_config or {}).get("title", {}) or {} _title_text = (_title_cfg.get("text", "") or "").strip() if _title_cfg.get("enabled", True) else "" cover_candidates = extract_and_upload_cover_frames( diff --git a/apps/worker/video_processing/thumbnail_generator.py b/apps/worker/video_processing/thumbnail_generator.py index dab1bec2a..04e2d44f7 100755 --- a/apps/worker/video_processing/thumbnail_generator.py +++ b/apps/worker/video_processing/thumbnail_generator.py @@ -145,7 +145,7 @@ def _overlay_title_on_image( # 转义 drawtext 特殊字符 # FFmpeg drawtext 需要转义: ' : % \ [ ] - escaped = title_text.replace("\\", "\\\\").replace("'", "’").replace(":", "\\:").replace("%", "%%") + escaped = title_text.replace("\\", "\\\\").replace("'", "’").replace(":", "\\:").replace("%", "%%").replace("[", "\\[").replace("]", "\\]") # 截断过长标题 if len(escaped) > 60: escaped = escaped[:57] + "..."