fix: add [ ] escaping for FFmpeg drawtext & guard plan_config None
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 43s
Preview Deploy / Deploy Preview Environment (pull_request) Successful in 1m20s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 1m34s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 1m46s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 1m44s
CI/CD Pipeline / Validate - Code Quality (pull_request) Failing after 2m27s
CI/CD Pipeline / Unit Tests (pull_request) Has been cancelled
CI/CD Pipeline / Integration Tests (pull_request) Has been cancelled
CI/CD Pipeline / PR Build API Image (pull_request) Has been cancelled
CI/CD Pipeline / PR Build Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production API Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Web Image (pull_request) Has been cancelled
CI/CD Pipeline / Build Production Worker Image (pull_request) Has been cancelled
CI/CD Pipeline / Deploy Production (pull_request) Has been cancelled
CI/CD Pipeline / Production Browser E2E (pull_request) Has been cancelled
CI/CD Pipeline / Canary Release to Production (pull_request) Has been cancelled
CI/CD Pipeline / CI Gate (pull_request) Has been cancelled
AI Code Review / AI Code Review (pull_request) Successful in 2m27s
PR Automation / Auto Approve on CI Green (pull_request) Has been cancelled
CI/CD Pipeline / Frontend Unit Tests (pull_request) Failing after 795h27m37s
CI/CD Pipeline / PR Build Web Image (pull_request) Failing after 795h27m35s
CI/CD Pipeline / Frontend Lint (pull_request) Failing after 795h27m37s
CI/CD Pipeline / Staging API Integration Tests (pull_request) Failing after 795h28m17s
CI/CD Pipeline / Build Staging Web Image (pull_request) Failing after 795h28m21s
CI/CD Pipeline / Staging E2E Tests (pull_request) Failing after 795h28m17s
CI/CD Pipeline / Build Staging API Image (pull_request) Failing after 795h28m21s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 795h28m19s
CI/CD Pipeline / ACR Image Cleanup (pull_request) Failing after 796h1m48s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Failing after 796h1m52s

- 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.
This commit is contained in:
auto-approve-bot
2026-08-14 11:58:24 +08:00
parent 8a44786242
commit 48a14f8fea
2 changed files with 2 additions and 2 deletions
@@ -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(
@@ -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] + "..."