🚀 AI 全自动短视频引擎 | AI Fully Automated Short Video Engine
This report summarizes scanner evidence for AIDC-AI/Pixelle-Video, a Python project with 28,829 GitHub stars. SynthScan examined 42,265 lines of code across 237 source files, recording 700 pattern matches distributed across 20 syntactic categories. The legacy adjusted pattern signal is 28.7 (Elevated pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 338 finding(s).
Are imports declared and package/API names verified? 107 finding(s).
Are wrappers, guards, and repeated structures necessary? 320 finding(s).
Which changes need focused human review? 700 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 700 distinct pattern matches across 20 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | web/pipelines/digital_human.py | 46 | # ==================================================================== | COMMENT |
| MEDIUM⚡ | web/pipelines/digital_human.py | 48 | # ==================================================================== | COMMENT |
| MEDIUM⚡ | web/pipelines/digital_human.py | 55 | # ==================================================================== | COMMENT |
| MEDIUM⚡ | web/pipelines/digital_human.py | 57 | # ==================================================================== | COMMENT |
| MEDIUM⚡ | web/pipelines/digital_human.py | 63 | # ==================================================================== | COMMENT |
| MEDIUM⚡ | web/pipelines/digital_human.py | 65 | # ==================================================================== | COMMENT |
| MEDIUM | web/pipelines/standard.py | 51 | # ==================================================================== | COMMENT |
| MEDIUM | web/pipelines/standard.py | 53 | # ==================================================================== | COMMENT |
| MEDIUM⚡ | web/pipelines/standard.py | 64 | # ==================================================================== | COMMENT |
| MEDIUM⚡ | web/pipelines/standard.py | 66 | # ==================================================================== | COMMENT |
| MEDIUM⚡ | web/pipelines/standard.py | 71 | # ==================================================================== | COMMENT |
| MEDIUM⚡ | web/pipelines/standard.py | 73 | # ==================================================================== | COMMENT |
| MEDIUM⚡ | web/pipelines/action_transfer.py | 48 | # ==================================================================== | COMMENT |
| MEDIUM⚡ | web/pipelines/action_transfer.py | 50 | # ==================================================================== | COMMENT |
| MEDIUM⚡ | web/pipelines/action_transfer.py | 55 | # ==================================================================== | COMMENT |
| MEDIUM⚡ | web/pipelines/action_transfer.py | 57 | # ==================================================================== | COMMENT |
| MEDIUM⚡ | web/pipelines/action_transfer.py | 62 | # ==================================================================== | COMMENT |
| MEDIUM⚡ | web/pipelines/action_transfer.py | 64 | # ==================================================================== | COMMENT |
| MEDIUM⚡ | web/pipelines/i2v.py | 47 | # ==================================================================== | COMMENT |
| MEDIUM⚡ | web/pipelines/i2v.py | 49 | # ==================================================================== | COMMENT |
| MEDIUM⚡ | web/pipelines/i2v.py | 54 | # ==================================================================== | COMMENT |
| MEDIUM⚡ | web/pipelines/i2v.py | 56 | # ==================================================================== | COMMENT |
| MEDIUM⚡ | web/pipelines/asset_based.py | 63 | # ==================================================================== | COMMENT |
| MEDIUM⚡ | web/pipelines/asset_based.py | 65 | # ==================================================================== | COMMENT |
| MEDIUM⚡ | web/pipelines/asset_based.py | 71 | # ==================================================================== | COMMENT |
| MEDIUM⚡ | web/pipelines/asset_based.py | 73 | # ==================================================================== | COMMENT |
| MEDIUM⚡ | web/pipelines/asset_based.py | 77 | # ==================================================================== | COMMENT |
| MEDIUM⚡ | web/pipelines/asset_based.py | 79 | # ==================================================================== | COMMENT |
| MEDIUM⚡ | web/utils/streamlit_helpers.py | 32 | # ============================================================================ | COMMENT |
| MEDIUM⚡ | web/utils/streamlit_helpers.py | 34 | # ============================================================================ | COMMENT |
| MEDIUM | web/components/style_config.py | 46 | # ==================================================================== | COMMENT |
| MEDIUM | web/components/style_config.py | 76 | # ================================================================ | COMMENT |
| MEDIUM | web/components/style_config.py | 78 | # ================================================================ | COMMENT |
| MEDIUM | web/components/style_config.py | 136 | # ================================================================ | COMMENT |
| MEDIUM | web/components/style_config.py | 138 | # ================================================================ | COMMENT |
| MEDIUM | web/components/style_config.py | 196 | # ================================================================ | COMMENT |
| MEDIUM | web/components/style_config.py | 198 | # ================================================================ | COMMENT |
| MEDIUM⚡ | web/components/style_config.py | 246 | # ==================================================================== | COMMENT |
| MEDIUM⚡ | web/components/style_config.py | 248 | # ==================================================================== | COMMENT |
| MEDIUM⚡ | web/components/style_config.py | 689 | # ==================================================================== | STRING |
| MEDIUM⚡ | web/components/style_config.py | 691 | # ==================================================================== | STRING |
| MEDIUM⚡ | web/components/settings.py | 34 | # ==================================================================== | COMMENT |
| MEDIUM⚡ | web/components/settings.py | 36 | # ==================================================================== | COMMENT |
| MEDIUM | web/components/settings.py | 205 | # ==================================================================== | COMMENT |
| MEDIUM | web/components/settings.py | 207 | # ==================================================================== | COMMENT |
| MEDIUM | web/components/settings.py | 293 | # ==================================================================== | COMMENT |
| MEDIUM | web/components/settings.py | 295 | # ==================================================================== | COMMENT |
| MEDIUM | web/components/settings.py | 430 | # ==================================================================== | COMMENT |
| MEDIUM | web/components/settings.py | 432 | # ==================================================================== | COMMENT |
| MEDIUM⚡ | web/components/content_input.py | 28 | # ==================================================================== | COMMENT |
| MEDIUM⚡ | web/components/content_input.py | 30 | # ==================================================================== | COMMENT |
| MEDIUM⚡ | web/components/content_input.py | 38 | # ================================================================ | COMMENT |
| MEDIUM⚡ | web/components/content_input.py | 40 | # ================================================================ | COMMENT |
| MEDIUM | web/components/content_input.py | 112 | # ================================================================ | COMMENT |
| MEDIUM | web/components/content_input.py | 114 | # ================================================================ | COMMENT |
| MEDIUM | web/components/digital_tts_config.py | 31 | # ==================================================================== | COMMENT |
| MEDIUM | web/components/digital_tts_config.py | 61 | # ================================================================ | COMMENT |
| MEDIUM | web/components/digital_tts_config.py | 63 | # ================================================================ | COMMENT |
| MEDIUM | web/components/digital_tts_config.py | 121 | # ================================================================ | COMMENT |
| MEDIUM | web/components/digital_tts_config.py | 123 | # ================================================================ | COMMENT |
| 32 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | pixelle_video/service.py | 265 | Generate video using specified pipeline Args: text: Input text | STRING |
| HIGH | pixelle_video/tts_voices.py | 226 | Convert speed multiplier to Edge TTS rate parameter Args: speed: Speed multiplier (1.0 = normal, 1 | STRING |
| HIGH | pixelle_video/pipelines/base.py | 79 | Execute the pipeline Args: text: Input text (meaning varies by pipeline) | STRING |
| HIGH | pixelle_video/utils/content_generators.py | 465 | Parse JSON from text, with fallback to extract JSON from markdown code blocks Args: text: Text con | STRING |
| HIGH | pixelle_video/utils/template_util.py | 34 | Parse video size from template path Args: template_path: Template path like "templates/1080x1920/d | STRING |
| HIGH | pixelle_video/utils/template_util.py | 122 | List all templates available for a given size (merged from templates/ and data/templates/) Args: s | STRING |
| HIGH | pixelle_video/utils/template_util.py | 145 | Get full template path from size and template name (checks data/templates/ first, then templates/) Args: | STRING |
| HIGH | pixelle_video/utils/template_util.py | 198 | Format template display information for UI Returns structured data for UI layer to handle display and i18n | STRING |
| HIGH | pixelle_video/utils/template_util.py | 317 | Resolve template input to full path with validation (checks data/templates/ first, then templates/) Args: | STRING |
| HIGH | pixelle_video/utils/template_util.py | 390 | Detect template type from template filename Template naming convention: - static_*.html: Static style | STRING |
| HIGH | pixelle_video/utils/template_util.py | 433 | Filter templates by type Args: templates: List of TemplateInfo objects template_type: Type | STRING |
| HIGH | pixelle_video/utils/template_util.py | 460 | Get templates grouped by size, optionally filtered by type Args: template_type: Optional type filt | STRING |
| HIGH | pixelle_video/utils/os_util.py | 331 | Get resource file path with custom override support Search priority: 1. data/{resource_type}/*path | STRING |
| HIGH | pixelle_video/utils/os_util.py | 384 | List resource files with custom override support Merges files from both default and custom locations: | STRING |
| HIGH | pixelle_video/utils/os_util.py | 432 | List subdirectories in resource directory Merges directories from both default and custom locations. | STRING |
| HIGH | pixelle_video/utils/os_util.py | 472 | Check if resource file exists (in custom or default location) Args: resource_type: Resource type ( | STRING |
| HIGH | pixelle_video/utils/llm_util.py | 55 | Fetch available models from an OpenAI-compatible API endpoint. Uses the provider models endpoint with Bear | STRING |
| HIGH | pixelle_video/utils/workflow_util.py | 35 | Resolve workflow path using standardized naming convention Convention: workflows/{source}/{service_name}.j | STRING |
| HIGH | pixelle_video/utils/prompt_helper.py | 21 | Build final image prompt with optional prefix Args: prompt: User's raw prompt prefix: Opti | STRING |
| HIGH | pixelle_video/services/comfy_base_service.py | 194 | Resolve workflow key to workflow info Args: workflow: Workflow key (e.g., "running | STRING |
| HIGH | pixelle_video/services/media.py | 140 | Generate media (image or video) using workflow Media type must be specified explicitly via med | STRING |
| HIGH | pixelle_video/services/tts_service.py | 81 | Generate speech using local Edge TTS or ComfyUI workflow Args: text: Text to conve | STRING |
| HIGH | pixelle_video/services/image_analysis.py | 78 | Analyze an image using workflow Args: image_path: Path to the image file (local or | STRING |
| HIGH | pixelle_video/services/llm_service.py | 129 | Generate text using LLM Args: prompt: The prompt to generate from api_ | STRING |
| HIGH | pixelle_video/services/video_analysis.py | 78 | Analyze a video using workflow Args: video_path: Path to the video file (local or | STRING |
| HIGH | pixelle_video/services/video.py | 312 | Merge audio with video with intelligent duration adjustment Automatically handles duration mis | STRING |
| HIGH | pixelle_video/services/video.py | 521 | Overlay a transparent image on top of video Args: video: Base video file path | STRING |
| HIGH | pixelle_video/services/video.py | 608 | Create video from static image and audio Args: image: Image file path | STRING |
| HIGH | pixelle_video/services/video.py | 687 | Add background music to video Args: video: Video file path bgm: Backgr | STRING |
| HIGH | pixelle_video/services/video.py | 772 | Internal helper to add BGM to video with path resolution Args: video: Video file p | STRING |
| HIGH | pixelle_video/services/video.py | 823 | Resolve BGM path (filename or custom path) with custom override support Search priority: | STRING |
| HIGH | pixelle_video/services/video.py | 887 | Trim video to specified duration Args: video: Input video file path ta | STRING |
| HIGH | pixelle_video/services/video.py | 921 | Pad video to specified duration by extending the last frame or adding black frames Args: | STRING |
| HIGH | pixelle_video/services/api_services/image_processor.py | 298 | 将文件上传到临时存储OSS Args: policy_data: 上传凭证数据 file_path: 本地文件路径 | STRING |
| HIGH | pixelle_video/services/api_services/image_processor.py | 354 | 上传文件到阿里云OSS并获取URL(统一接口方法) Args: file_path: 本地文件路径 Returns: | STRING |
| HIGH | pixelle_video/services/api_services/video_dashscope.py | 150 | 图生视频:提交任务 → 等待完成 → 下载到本地 Args: prompt: 视频描述提示词 image_path: 输入首帧图片本地路径 | STRING |
| HIGH | pixelle_video/services/api_services/video_client.py | 122 | 生成视频 Args: prompt: 视频描述提示词 image_path: 输入图片本地路径;DashScope wan2.7 视频续写可为空并使用 fi | STRING |
| HIGH | api/routers/video.py | 35 | Convert file path to accessible URL Handles both absolute and relative paths, extracting the path relative | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packaging/windows/build.py | 141 | except Exception as e: | CODE |
| LOW | packaging/windows/build.py | 211 | except Exception as e: | CODE |
| LOW | packaging/windows/build.py | 228 | except Exception as e: | CODE |
| LOW | packaging/windows/build.py | 655 | except Exception as e: | CODE |
| LOW | web/pipelines/digital_human.py | 955 | except Exception as e: | CODE |
| LOW | web/pipelines/api_workflows.py | 117 | except Exception as exc: | CODE |
| LOW | web/pipelines/api_workflows.py | 120 | except Exception as exc: | CODE |
| LOW | web/pipelines/api_workflows.py | 158 | except Exception as exc: | CODE |
| LOW | web/pipelines/action_transfer.py | 505 | except Exception as e: | CODE |
| LOW | web/pipelines/i2v.py | 406 | except Exception as e: | CODE |
| LOW | web/pipelines/asset_based.py | 636 | except Exception as e: | CODE |
| LOW | web/utils/async_helpers.py | 41 | except Exception as e: | CODE |
| LOW | web/utils/async_helpers.py | 59 | except Exception as e: | CODE |
| LOW | web/utils/batch_manager.py | 130 | except Exception as e: | CODE |
| LOW | web/utils/history_persistence.py | 27 | except Exception as exc: | CODE |
| LOW | web/state/session.py | 72 | except Exception as e: | CODE |
| LOW⚡ | web/components/style_config.py | 242 | except Exception as e: | CODE |
| LOW⚡ | web/components/style_config.py | 685 | except Exception as e: | STRING |
| LOW | web/components/style_config.py | 915 | except Exception as e: | STRING |
| LOW | web/components/settings.py | 173 | except Exception as e: | CODE |
| LOW | web/components/settings.py | 189 | except Exception as e: | CODE |
| LOW | web/components/settings.py | 243 | except Exception as e: | CODE |
| LOW | web/components/settings.py | 488 | except Exception as e: | CODE |
| LOW | web/components/content_input.py | 209 | except Exception as e: | CODE |
| LOW | web/components/content_input.py | 254 | except Exception as e: | CODE |
| LOW | web/components/faq.py | 56 | except Exception as e: | CODE |
| LOW | web/components/digital_tts_config.py | 198 | except Exception as e: | CODE |
| LOW | web/components/output_preview.py | 217 | except Exception as e: | CODE |
| LOW | web/i18n/__init__.py | 44 | except Exception as e: | CODE |
| LOW | web/i18n/__init__.py | 159 | except Exception as e: | CODE |
| LOW⚡ | web/i18n/__init__.py | 187 | except Exception as e: | CODE |
| LOW⚡ | web/i18n/__init__.py | 195 | except Exception as e: | CODE |
| LOW⚡ | web/i18n/__init__.py | 203 | except Exception as e: | CODE |
| LOW | web/i18n/__init__.py | 235 | except Exception as e: | CODE |
| LOW | web/pages/2_📚_History.py | 254 | except Exception as e: | CODE |
| LOW | pixelle_video/service.py | 169 | except Exception as e: | CODE |
| LOW | pixelle_video/service.py | 239 | except Exception as e: | CODE |
| LOW | pixelle_video/config/loader.py | 45 | except Exception as e: | CODE |
| LOW | pixelle_video/config/loader.py | 62 | except Exception as e: | CODE |
| LOW | pixelle_video/pipelines/custom.py | 399 | except Exception as e: | CODE |
| LOW | pixelle_video/pipelines/custom.py | 462 | except Exception as e: | CODE |
| LOW | pixelle_video/pipelines/standard.py | 516 | except Exception as e: | CODE |
| LOW | pixelle_video/pipelines/linear.py | 121 | except Exception as e: | CODE |
| LOW | pixelle_video/pipelines/asset_based.py | 155 | except Exception as e: | CODE |
| LOW | pixelle_video/pipelines/asset_based.py | 273 | except Exception as e: | CODE |
| LOW | pixelle_video/pipelines/asset_based.py | 933 | except Exception as e: | CODE |
| LOW | pixelle_video/pipelines/asset_based.py | 959 | except Exception as exc: | CODE |
| LOW | pixelle_video/pipelines/asset_based.py | 989 | except Exception as exc: | CODE |
| LOW | pixelle_video/pipelines/asset_based.py | 1028 | except Exception as exc: | CODE |
| LOW | pixelle_video/pipelines/asset_based.py | 1053 | except Exception as exc: | CODE |
| LOW | pixelle_video/utils/content_generators.py | 454 | except Exception as e: | CODE |
| LOW | pixelle_video/utils/tts_util.py | 215 | except Exception as e: | CODE |
| LOW | pixelle_video/utils/tts_util.py | 243 | except Exception as e: | CODE |
| LOW | pixelle_video/utils/tts_util.py | 338 | except Exception as e: | CODE |
| LOW | pixelle_video/utils/llm_util.py | 128 | except Exception as e: | CODE |
| LOW | pixelle_video/services/comfy_base_service.py | 126 | except Exception as e: | CODE |
| LOW | pixelle_video/services/media.py | 104 | except Exception as e: | CODE |
| LOW | pixelle_video/services/media.py | 316 | except Exception as e: | CODE |
| LOW⚡ | pixelle_video/services/persistence.py | 193 | except Exception as e: | CODE |
| LOW⚡ | pixelle_video/services/persistence.py | 254 | except Exception as e: | CODE |
| 81 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packaging/windows/build.py | 24 | CODE | |
| LOW | web/pipelines/digital_human.py | 22 | CODE | |
| LOW | web/pipelines/__init__.py | 19 | CODE | |
| LOW | web/pipelines/__init__.py | 19 | CODE | |
| LOW | web/pipelines/__init__.py | 19 | CODE | |
| LOW | web/pipelines/__init__.py | 19 | CODE | |
| LOW | web/pipelines/__init__.py | 27 | CODE | |
| LOW | web/pipelines/__init__.py | 28 | CODE | |
| LOW | web/pipelines/__init__.py | 29 | CODE | |
| LOW | web/pipelines/__init__.py | 30 | CODE | |
| LOW | web/pipelines/__init__.py | 31 | CODE | |
| LOW | web/utils/batch_manager.py | 16 | CODE | |
| LOW | web/utils/history_persistence.py | 3 | CODE | |
| LOW | web/components/output_preview.py | 17 | CODE | |
| LOW | web/components/output_preview.py | 19 | CODE | |
| LOW | web/pages/2_📚_History.py | 29 | CODE | |
| LOW | pixelle_video/__init__.py | 46 | CODE | |
| LOW | pixelle_video/__init__.py | 46 | CODE | |
| LOW | pixelle_video/__init__.py | 47 | CODE | |
| LOW | pixelle_video/config/__init__.py | 32 | CODE | |
| LOW | pixelle_video/config/__init__.py | 32 | CODE | |
| LOW | pixelle_video/config/__init__.py | 32 | CODE | |
| LOW | pixelle_video/config/__init__.py | 32 | CODE | |
| LOW | pixelle_video/config/__init__.py | 32 | CODE | |
| LOW | pixelle_video/config/__init__.py | 32 | CODE | |
| LOW | pixelle_video/config/__init__.py | 34 | CODE | |
| LOW | pixelle_video/config/__init__.py | 34 | CODE | |
| LOW | pixelle_video/pipelines/standard.py | 23 | CODE | |
| LOW | pixelle_video/pipelines/standard.py | 23 | CODE | |
| LOW | pixelle_video/pipelines/standard.py | 23 | CODE | |
| LOW | pixelle_video/pipelines/standard.py | 23 | CODE | |
| LOW | pixelle_video/pipelines/standard.py | 31 | CODE | |
| LOW | pixelle_video/pipelines/__init__.py | 20 | CODE | |
| LOW | pixelle_video/pipelines/__init__.py | 21 | CODE | |
| LOW | pixelle_video/pipelines/__init__.py | 21 | CODE | |
| LOW | pixelle_video/pipelines/__init__.py | 22 | CODE | |
| LOW | pixelle_video/pipelines/__init__.py | 23 | CODE | |
| LOW | pixelle_video/pipelines/__init__.py | 24 | CODE | |
| LOW | pixelle_video/utils/template_util.py | 17 | CODE | |
| LOW | pixelle_video/utils/template_util.py | 23 | CODE | |
| LOW | pixelle_video/prompts/image_generation.py | 20 | CODE | |
| LOW | pixelle_video/prompts/__init__.py | 20 | CODE | |
| LOW | pixelle_video/prompts/__init__.py | 21 | CODE | |
| LOW | pixelle_video/prompts/__init__.py | 22 | CODE | |
| LOW | pixelle_video/prompts/__init__.py | 25 | CODE | |
| LOW | pixelle_video/prompts/__init__.py | 25 | CODE | |
| LOW | pixelle_video/prompts/__init__.py | 25 | CODE | |
| LOW | pixelle_video/prompts/__init__.py | 30 | CODE | |
| LOW | pixelle_video/services/comfy_base_service.py | 22 | CODE | |
| LOW | pixelle_video/services/api_asset_analysis.py | 16 | CODE | |
| LOW | pixelle_video/services/media.py | 22 | CODE | |
| LOW | pixelle_video/services/tts_service.py | 22 | CODE | |
| LOW | pixelle_video/services/__init__.py | 29 | CODE | |
| LOW | pixelle_video/services/__init__.py | 30 | CODE | |
| LOW | pixelle_video/services/__init__.py | 31 | CODE | |
| LOW | pixelle_video/services/__init__.py | 33 | CODE | |
| LOW | pixelle_video/services/__init__.py | 34 | CODE | |
| LOW | pixelle_video/services/__init__.py | 35 | CODE | |
| LOW | pixelle_video/services/__init__.py | 36 | CODE | |
| LOW | pixelle_video/services/image_analysis.py | 22 | CODE | |
| 44 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | config.example.yaml | 1 | # Pixelle-Video Configuration | COMMENT |
| LOW | config.example.yaml | 81 | # Determines video aspect ratio and layout style | COMMENT |
| LOW | web/__init__.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | web/app.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | web/pipelines/standard.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | web/pipelines/__init__.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | web/pipelines/base.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | web/pipelines/asset_based.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | web/utils/async_helpers.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | web/utils/streamlit_helpers.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | web/utils/batch_manager.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | web/state/session.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | web/components/header.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | web/components/style_config.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | web/components/settings.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | web/components/content_input.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | web/components/faq.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | web/components/digital_tts_config.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | web/components/output_preview.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | web/i18n/__init__.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | web/pages/2_📚_History.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | web/pages/1_🎬_Home.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | pixelle_video/service.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | pixelle_video/__init__.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | pixelle_video/tts_voices.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | pixelle_video/llm_presets.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | pixelle_video/config/__init__.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | pixelle_video/config/loader.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | pixelle_video/config/manager.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | pixelle_video/config/schema.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | pixelle_video/pipelines/custom.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | pixelle_video/pipelines/standard.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | pixelle_video/pipelines/linear.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | pixelle_video/pipelines/__init__.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | pixelle_video/pipelines/base.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | pixelle_video/pipelines/asset_based.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | pixelle_video/utils/content_generators.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | pixelle_video/utils/__init__.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | pixelle_video/utils/template_util.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | pixelle_video/utils/tts_util.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | pixelle_video/utils/os_util.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | pixelle_video/utils/llm_util.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | pixelle_video/utils/workflow_util.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | pixelle_video/utils/prompt_helper.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | pixelle_video/models/media.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | pixelle_video/models/storyboard.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | pixelle_video/models/progress.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | pixelle_video/prompts/topic_narration.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | pixelle_video/prompts/image_generation.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | pixelle_video/prompts/title_generation.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | pixelle_video/prompts/__init__.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | pixelle_video/prompts/style_conversion.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | pixelle_video/prompts/asset_script_generation.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | pixelle_video/prompts/content_narration.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | pixelle_video/prompts/video_generation.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | pixelle_video/services/comfy_base_service.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | pixelle_video/services/media.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | pixelle_video/services/persistence.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | pixelle_video/services/frame_html.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| LOW | pixelle_video/services/tts_service.py | 1 | # Copyright (C) 2025 AIDC-AI | COMMENT |
| 34 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packaging/windows/build.py | 76 | CODE | |
| LOW | packaging/windows/build.py | 153 | CODE | |
| LOW | packaging/windows/build.py | 363 | CODE | |
| LOW | packaging/windows/build.py | 469 | CODE | |
| LOW | packaging/windows/build.py | 475 | CODE | |
| LOW | web/pipelines/digital_human.py | 77 | CODE | |
| LOW | web/pipelines/digital_human.py | 128 | CODE | |
| LOW | web/pipelines/digital_human.py | 323 | CODE | |
| LOW | web/pipelines/digital_human.py | 424 | CODE | |
| LOW | web/pipelines/digital_human.py | 511 | CODE | |
| LOW | web/pipelines/api_workflows.py | 58 | CODE | |
| LOW | web/pipelines/action_transfer.py | 73 | CODE | |
| LOW | web/pipelines/action_transfer.py | 134 | CODE | |
| LOW | web/pipelines/action_transfer.py | 290 | CODE | |
| LOW | web/pipelines/action_transfer.py | 353 | CODE | |
| LOW | web/pipelines/i2v.py | 64 | CODE | |
| LOW | web/pipelines/i2v.py | 214 | CODE | |
| LOW | web/pipelines/i2v.py | 264 | CODE | |
| LOW | web/pipelines/asset_based.py | 91 | CODE | |
| LOW | web/pipelines/asset_based.py | 168 | CODE | |
| LOW | web/pipelines/asset_based.py | 475 | CODE | |
| LOW | web/pipelines/asset_based.py | 521 | CODE | |
| LOW | web/utils/batch_manager.py | 38 | CODE | |
| LOW | web/components/style_config.py | 43 | CODE | |
| LOW | web/components/settings.py | 24 | CODE | |
| LOW | web/components/content_input.py | 23 | CODE | |
| LOW | web/components/content_input.py | 190 | CODE | |
| LOW | web/components/faq.py | 105 | CODE | |
| LOW | web/components/digital_tts_config.py | 28 | CODE | |
| LOW | web/components/output_preview.py | 43 | CODE | |
| LOW | web/components/output_preview.py | 225 | CODE | |
| LOW | web/i18n/__init__.py | 128 | CODE | |
| LOW | web/pages/2_📚_History.py | 164 | CODE | |
| LOW | web/pages/2_📚_History.py | 262 | CODE | |
| LOW | web/pages/2_📚_History.py | 375 | CODE | |
| LOW | pixelle_video/pipelines/asset_based.py | 164 | CODE | |
| LOW | pixelle_video/pipelines/asset_based.py | 322 | CODE | |
| LOW | pixelle_video/pipelines/asset_based.py | 557 | CODE | |
| LOW | pixelle_video/utils/content_generators.py | 269 | CODE | |
| LOW | pixelle_video/utils/content_generators.py | 372 | CODE | |
| LOW | pixelle_video/utils/tts_util.py | 65 | CODE | |
| LOW | pixelle_video/utils/llm_util.py | 96 | CODE | |
| LOW | pixelle_video/services/persistence.py | 503 | CODE | |
| LOW | pixelle_video/services/frame_html.py | 232 | CODE | |
| LOW | pixelle_video/services/tts_service.py | 197 | CODE | |
| LOW | pixelle_video/services/image_analysis.py | 66 | CODE | |
| LOW | pixelle_video/services/video_analysis.py | 66 | CODE | |
| LOW | pixelle_video/services/frame_processor.py | 44 | CODE | |
| LOW | pixelle_video/services/api_services/image_processor.py | 140 | CODE | |
| LOW | pixelle_video/services/api_services/image_dashscope.py | 36 | CODE | |
| LOW | pixelle_video/services/api_services/image_dashscope.py | 94 | CODE | |
| LOW | pixelle_video/services/api_services/image_dashscope.py | 136 | CODE | |
| LOW | pixelle_video/services/api_services/video_dashscope.py | 51 | CODE | |
| LOW | pixelle_video/services/api_services/video_dashscope.py | 127 | CODE | |
| LOW | pixelle_video/services/api_services/image_client.py | 93 | CODE | |
| LOW | pixelle_video/services/api_services/vlm_client.py | 28 | CODE | |
| LOW | pixelle_video/services/api_services/image_gpt.py | 65 | CODE | |
| LOW | pixelle_video/services/api_services/image_seedream.py | 78 | CODE | |
| LOW | api/routers/resources.py | 200 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docker-start.sh | 10 | # Check if config.yaml exists as a directory (Docker mount issue) | COMMENT |
| LOW | docker-start.sh | 16 | # Check if config.yaml exists, if not, create from example | COMMENT |
| LOW | docker-start.sh | 37 | # Check if docker-compose is available | COMMENT |
| LOW | packaging/windows/build.py | 184 | # Check if path exists | COMMENT |
| LOW | packaging/windows/build.py | 202 | # Check if pip is available | COMMENT |
| LOW | web/pipelines/digital_human.py | 119 | # Check if image | COMMENT |
| LOW | web/pipelines/digital_human.py | 145 | # Check if RunningHub API key is configured | COMMENT |
| LOW | web/pipelines/digital_human.py | 379 | # Check if image | COMMENT |
| LOW | web/pipelines/digital_human.py | 921 | # Display result | COMMENT |
| LOW | web/pipelines/action_transfer.py | 114 | # Check if image | COMMENT |
| LOW | web/pipelines/action_transfer.py | 175 | # Check if image | COMMENT |
| LOW | web/pipelines/action_transfer.py | 472 | # Display result | COMMENT |
| LOW | web/pipelines/i2v.py | 120 | # Check if image | COMMENT |
| LOW | web/pipelines/i2v.py | 373 | # Display result | COMMENT |
| LOW | web/pipelines/asset_based.py | 133 | # Check if image or video | COMMENT |
| LOW | web/pipelines/asset_based.py | 202 | # Check if RunningHub API key is configured | COMMENT |
| LOW | web/pipelines/asset_based.py | 484 | # Check if assets are provided | COMMENT |
| LOW | web/pipelines/asset_based.py | 600 | # Display result | COMMENT |
| LOW | web/utils/streamlit_helpers.py | 51 | # Check if this is a transition TO selfhost | COMMENT |
| LOW | web/state/session.py | 60 | # Check if we need to create or recreate core instance | COMMENT |
| LOW⚡ | web/components/style_config.py | 692 | # Check if current template requires media generation | STRING |
| LOW⚡ | web/components/settings.py | 26 | # Check if system is configured | COMMENT |
| LOW | web/components/settings.py | 275 | # Check if instance type is "plus" (48G VRAM enabled) | COMMENT |
| LOW | web/components/output_preview.py | 32 | # Check if batch mode | COMMENT |
| LOW | web/components/output_preview.py | 69 | # Check if system is configured | COMMENT |
| LOW | web/components/output_preview.py | 232 | # Check if topics are provided | COMMENT |
| LOW | web/components/output_preview.py | 368 | # Display results summary | COMMENT |
| LOW | web/pages/2_📚_History.py | 394 | # Check if we need to show a detail view | COMMENT |
| LOW | pixelle_video/service.py | 162 | # Check if we need to create or recreate ComfyKit | COMMENT |
| LOW | pixelle_video/pipelines/standard.py | 299 | # Check if using RunningHub workflows for parallel processing | COMMENT |
| LOW | pixelle_video/utils/template_util.py | 237 | # Check if it's a standard size (only these three) | COMMENT |
| LOW | pixelle_video/services/comfy_base_service.py | 164 | # Check if it's a wrapper format (RunningHub, etc.) | COMMENT |
| LOW | pixelle_video/services/video.py | 389 | # Check if video has audio stream | COMMENT |
| LOW | pixelle_video/services/api_services/image_dashscope.py | 118 | # Check if we should download | COMMENT |
| LOW | pixelle_video/services/api_services/image_dashscope.py | 173 | # Check if we should download | COMMENT |
| LOW | api/routers/files.py | 64 | # Check if path starts with allowed prefix, otherwise try output/ | COMMENT |
| LOW | api/routers/files.py | 88 | # Check if path starts with any allowed prefix | COMMENT |
| LOW | api/routers/video.py | 63 | # Check if it's an absolute path (works for both Windows and Linux) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packaging/windows/build.py | 310 | def prepare_python_environment(self, python_dir: Path): | CODE |
| LOW | packaging/windows/build.py | 523 | def generate_launcher_scripts(self): | CODE |
| LOW | web/pipelines/digital_human.py | 77 | def render_digital_human_input(self) -> dict: | CODE |
| LOW | web/pipelines/digital_human.py | 323 | def render_digital_human_mode(self, character_asset_paths: list) -> dict: | CODE |
| LOW | web/pipelines/digital_human.py | 511 | async def generate_digital_human_video(): | CODE |
| LOW | web/pipelines/digital_human.py | 545 | async def generate_api_digital_human(text: str) -> str: | CODE |
| LOW | web/pipelines/api_workflows.py | 58 | def list_local_media_workflows( | CODE |
| LOW | web/pipelines/api_workflows.py | 163 | def render_api_video_controls( | CODE |
| LOW⚡ | web/pipelines/action_transfer.py | 73 | def render_action_transfer_video_input(self, pixelle_video) -> dict: | CODE |
| LOW | web/pipelines/action_transfer.py | 134 | def render_action_transfer_assets_input(self, pixelle_video) -> dict: | CODE |
| LOW | web/pipelines/action_transfer.py | 182 | def list_action_transfer_workflows(): | CODE |
| LOW | web/pipelines/action_transfer.py | 353 | async def generate_audio_visual_video(): | CODE |
| LOW⚡ | web/pipelines/i2v.py | 64 | def render_audio_visual_input(self, pixelle_video) -> dict: | CODE |
| LOW | web/pipelines/i2v.py | 264 | async def generate_audio_visual_video(): | CODE |
| LOW | web/pipelines/asset_based.py | 220 | def analysis_source_available(source_name: str) -> bool: | CODE |
| LOW⚡ | web/utils/streamlit_helpers.py | 38 | def check_and_warn_selfhost_workflow(workflow_path: str): | CODE |
| LOW | web/utils/history_persistence.py | 32 | async def save_web_generation_history( | CODE |
| LOW⚡ | web/components/style_config.py | 250 | def get_template_preview_path(template_path: str, language: str = "zh_CN") -> str: | CODE |
| LOW | web/components/output_preview.py | 314 | def make_task_progress_callback(task_idx, topic): | CODE |
| LOW | pixelle_video/service.py | 133 | def _compute_comfykit_config_hash(self, config: dict) -> str: | CODE |
| LOW | pixelle_video/service.py | 254 | def _create_generate_video_wrapper(self): | CODE |
| LOW | pixelle_video/llm_presets.py | 76 | def find_preset_by_base_url_and_model(base_url: str, model: str) -> str | None: | CODE |
| LOW | pixelle_video/pipelines/custom.py | 482 | async def _custom_prompt_generation(self, context: str) -> str: | CODE |
| LOW | pixelle_video/pipelines/standard.py | 315 | async def process_frame_with_semaphore(i: int, frame: StoryboardFrame): | CODE |
| LOW | pixelle_video/pipelines/asset_based.py | 963 | def _extract_video_tail_frame(self, video_path: str, output_path: str) -> Optional[str]: | CODE |
| LOW | pixelle_video/utils/content_generators.py | 95 | async def generate_narrations_from_topic( | CODE |
| LOW | pixelle_video/utils/content_generators.py | 153 | async def generate_narrations_from_content( | CODE |
| LOW | pixelle_video/utils/template_util.py | 197 | def format_template_display_info(template_name: str, size: str) -> TemplateDisplayInfo: | CODE |
| LOW | pixelle_video/utils/template_util.py | 250 | def get_all_templates_with_info() -> List[TemplateInfo]: | CODE |
| LOW | pixelle_video/utils/template_util.py | 280 | def get_templates_grouped_by_size() -> dict: | CODE |
| LOW | pixelle_video/utils/template_util.py | 457 | def get_templates_grouped_by_size_and_type( | CODE |
| LOW | pixelle_video/utils/os_util.py | 27 | def get_pixelle_video_root_path() -> str: | CODE |
| LOW | pixelle_video/utils/os_util.py | 47 | def ensure_pixelle_video_root_path() -> str: | CODE |
| LOW | pixelle_video/utils/os_util.py | 311 | def get_task_final_video_path(task_id: str) -> str: | CODE |
| LOW | pixelle_video/utils/llm_util.py | 39 | def normalize_openai_base_url(base_url: str) -> str: | CODE |
| LOW | pixelle_video/prompts/topic_narration.py | 134 | def build_topic_narration_prompt( | STRING |
| LOW | pixelle_video/prompts/image_generation.py | 120 | def build_image_prompt_prompt( | STRING |
| LOW | pixelle_video/prompts/title_generation.py | 67 | def build_title_generation_prompt(content: str, max_length: int = 15) -> str: | CODE |
| LOW | pixelle_video/prompts/style_conversion.py | 35 | def build_style_conversion_prompt(description: str) -> str: | CODE |
| LOW | pixelle_video/prompts/asset_script_generation.py | 54 | def build_asset_script_prompt( | CODE |
| LOW | pixelle_video/prompts/content_narration.py | 80 | def build_content_narration_prompt( | STRING |
| LOW | pixelle_video/prompts/video_generation.py | 102 | def build_video_prompt_prompt( | STRING |
| LOW | pixelle_video/services/persistence.py | 407 | def _content_metadata_to_dict(self, metadata: ContentMetadata) -> Dict[str, Any]: | CODE |
| LOW | pixelle_video/services/persistence.py | 419 | def _dict_to_content_metadata(self, data: Dict[str, Any]) -> ContentMetadata: | CODE |
| LOW | pixelle_video/services/frame_html.py | 79 | def _check_linux_dependencies(self): | CODE |
| LOW | pixelle_video/services/frame_html.py | 126 | def _parse_media_size_from_meta(self) -> tuple[Optional[int], Optional[int]]: | CODE |
| LOW | pixelle_video/services/frame_html.py | 176 | def parse_template_parameters(self) -> Dict[str, Dict[str, Any]]: | CODE |
| LOW | pixelle_video/services/frame_html.py | 344 | def _discard_browser_references(cls): | CODE |
| LOW | pixelle_video/services/api_media.py | 582 | def _is_content_inspection_error(self, exc: Exception) -> bool: | CODE |
| LOW | pixelle_video/services/api_media.py | 646 | def _fallback_neutralize_prompt(self, prompt: str) -> str: | CODE |
| LOW | pixelle_video/services/llm_service.py | 210 | async def _call_with_structured_output( | CODE |
| LOW | pixelle_video/services/llm_service.py | 262 | def _get_json_schema_instruction(self, response_type: Type[T]) -> str: | CODE |
| LOW | pixelle_video/services/frame_processor.py | 280 | async def _prepare_api_video_inputs( | CODE |
| LOW | pixelle_video/services/frame_processor.py | 382 | async def _step_create_video_segment( | CODE |
| LOW | pixelle_video/services/api_services/video_dashscope.py | 430 | def _is_reference_to_video_model(self, model: str) -> bool: | CODE |
| LOW | pixelle_video/services/api_services/video_dashscope.py | 510 | def _build_reference_to_video_media( | CODE |
| LOW | pixelle_video/services/api_services/video_dashscope.py | 544 | def _validate_media_combination(self, media: list[dict[str, str]]) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | README_EN.md | 174 | > 💡 **Tip**: All these videos are fully automatically generated by AI just by inputting a topic keyword, without any vid | CODE |
| HIGH⚡ | config.example.yaml | 83 | # - static_*.html: Static style templates (no AI-generated media) | COMMENT |
| HIGH⚡ | config.example.yaml | 84 | # - image_*.html: Templates requiring AI-generated images | COMMENT |
| HIGH⚡ | config.example.yaml | 85 | # - video_*.html: Templates requiring AI-generated videos | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | README_EN.md | 228 | #### Step 1: Clone Project | COMMENT |
| LOW⚡ | README_EN.md | 235 | #### Step 2: Launch Web Interface | COMMENT |
| LOW⚡ | README_EN.md | 244 | #### Step 3: Configure in Web Interface | COMMENT |
| LOW⚡ | web/components/content_input.py | 29 | # Step 1: Batch mode toggle (highest priority) | COMMENT |
| LOW | docs/en/getting-started/quick-start.md | 28 | ### Step 1: Check Configuration | COMMENT |
| LOW | docs/en/getting-started/quick-start.md | 41 | ### Step 2: Enter a Topic | COMMENT |
| LOW | docs/en/getting-started/quick-start.md | 60 | ### Step 3: Configure Voice and Visuals | COMMENT |
| LOW | docs/en/getting-started/quick-start.md | 75 | ### Step 4: Generate Video | COMMENT |
| LOW | docs/en/getting-started/quick-start.md | 90 | ### Step 5: Preview Video | COMMENT |
| LOW | docs/en/getting-started/installation.md | 43 | ### Step 1: Clone the Repository | COMMENT |
| LOW | docs/en/getting-started/installation.md | 50 | ### Step 2: Install Dependencies | COMMENT |
| LOW⚡ | pixelle_video/pipelines/base.py | 43 | ... # Step 1: Generate content | STRING |
| LOW⚡ | pixelle_video/pipelines/base.py | 46 | ... # Step 2: Process frames | STRING |
| LOW | pixelle_video/pipelines/asset_based.py | 599 | # Step 1: Generate audio for each narration and combine | COMMENT |
| LOW | pixelle_video/pipelines/asset_based.py | 660 | # Step 2: Use FrameProcessor to generate composed frame and video | COMMENT |
| LOW | pixelle_video/services/frame_processor.py | 81 | # Step 1: Generate audio (TTS) | COMMENT |
| LOW | pixelle_video/services/frame_processor.py | 96 | # Step 2: Generate media (image or video, conditional) | COMMENT |
| LOW | pixelle_video/services/frame_processor.py | 119 | # Step 3: Compose frame (add subtitle) | COMMENT |
| LOW | pixelle_video/services/frame_processor.py | 131 | # Step 4: Create video segment | COMMENT |
| LOW | pixelle_video/services/frame_processor.py | 402 | # Step 1: Overlay transparent HTML image on video | COMMENT |
| LOW | pixelle_video/services/frame_processor.py | 413 | # Step 2: Add narration audio to the overlaid video | COMMENT |
| LOW⚡ | pixelle_video/services/video.py | 141 | # Step 1: Concatenate videos | COMMENT |
| LOW⚡ | pixelle_video/services/video.py | 147 | # Step 2: Add BGM | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | pixelle_video/utils/content_generators.py | 480 | except json.JSONDecodeError: | CODE |
| HIGH | pixelle_video/utils/content_generators.py | 489 | except json.JSONDecodeError: | CODE |
| HIGH | pixelle_video/utils/content_generators.py | 498 | except json.JSONDecodeError: | CODE |
| HIGH | pixelle_video/services/llm_service.py | 306 | except json.JSONDecodeError: | CODE |
| HIGH | pixelle_video/services/llm_service.py | 316 | except json.JSONDecodeError: | CODE |
| HIGH | pixelle_video/services/llm_service.py | 327 | except json.JSONDecodeError: | CODE |
| HIGH | api/tasks/manager.py | 65 | except asyncio.CancelledError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | web/components/content_input.py | 29 | # Step 1: Batch mode toggle (highest priority) | COMMENT |
| LOW⚡ | pixelle_video/pipelines/base.py | 43 | ... # Step 1: Generate content | STRING |
| LOW⚡ | pixelle_video/pipelines/base.py | 46 | ... # Step 2: Process frames | STRING |
| LOW | pixelle_video/pipelines/asset_based.py | 599 | # Step 1: Generate audio for each narration and combine | COMMENT |
| LOW | pixelle_video/pipelines/asset_based.py | 660 | # Step 2: Use FrameProcessor to generate composed frame and video | COMMENT |
| LOW | pixelle_video/services/frame_processor.py | 81 | # Step 1: Generate audio (TTS) | COMMENT |
| LOW | pixelle_video/services/frame_processor.py | 96 | # Step 2: Generate media (image or video, conditional) | COMMENT |
| LOW | pixelle_video/services/frame_processor.py | 119 | # Step 3: Compose frame (add subtitle) | COMMENT |
| LOW | pixelle_video/services/frame_processor.py | 131 | # Step 4: Create video segment | COMMENT |
| LOW | pixelle_video/services/frame_processor.py | 402 | # Step 1: Overlay transparent HTML image on video | COMMENT |
| LOW | pixelle_video/services/frame_processor.py | 413 | # Step 2: Add narration audio to the overlaid video | COMMENT |
| LOW⚡ | pixelle_video/services/video.py | 141 | # Step 1: Concatenate videos | COMMENT |
| LOW⚡ | pixelle_video/services/video.py | 147 | # Step 2: Add BGM | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | web/pipelines/__init__.py | 33 | __all__ = [ | CODE |
| LOW | pixelle_video/__init__.py | 51 | __all__ = ["PixelleVideoCore", "pixelle_video", "config_manager"] | CODE |
| LOW | pixelle_video/config/__init__.py | 39 | __all__ = [ | CODE |
| LOW | pixelle_video/pipelines/__init__.py | 26 | __all__ = [ | CODE |
| LOW | pixelle_video/utils/template_util.py | 30 | logger = logging.getLogger(__name__) | CODE |
| LOW | pixelle_video/prompts/__init__.py | 33 | __all__ = [ | CODE |
| LOW | pixelle_video/services/__init__.py | 41 | __all__ = [ | CODE |
| LOW | pixelle_video/services/api_services/video_seedance.py | 13 | logger = logging.getLogger(__name__) | CODE |
| LOW | pixelle_video/services/api_services/video_dashscope.py | 24 | logger = logging.getLogger(__name__) | CODE |
| LOW | pixelle_video/services/api_services/vlm_dashscope.py | 18 | logger = logging.getLogger(__name__) | CODE |
| LOW | pixelle_video/services/api_services/video_kling.py | 21 | logger = logging.getLogger(__name__) | CODE |
| LOW | pixelle_video/services/api_services/video_client.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | api/routers/__init__.py | 28 | __all__ = [ | CODE |
| LOW | api/tasks/__init__.py | 20 | __all__ = ["Task", "TaskStatus", "TaskType", "task_manager"] | CODE |
| LOW | api/schemas/__init__.py | 35 | __all__ = [ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | docs/zh/reference/config-schema.md | 11 | api_key: "your-api-key" | CODE |
| HIGH | docs/en/reference/config-schema.md | 11 | api_key: "your-api-key" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pixelle_video/pipelines/custom.py | 81 | CODE | |
| LOW | pixelle_video/pipelines/asset_based.py | 87 | CODE | |
| LOW | pixelle_video/services/media.py | 118 | CODE | |
| LOW | pixelle_video/services/api_services/video_dashscope.py | 127 | CODE | |
| LOW | pixelle_video/services/api_services/image_client.py | 20 | CODE | |
| LOW | pixelle_video/services/api_services/video_kling.py | 153 | CODE | |
| LOW | pixelle_video/services/api_services/video_client.py | 31 | CODE | |
| LOW | pixelle_video/services/api_services/video_client.py | 95 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | pixelle_video/pipelines/asset_based.py | 635 | # Create a file list for FFmpeg concat | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | api/dependencies.py | 59 | # Type alias for dependency injection | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pixelle_video/services/video.py | 439 | # Video is silent, just add the audio | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pixelle_video/services/llm_service.py | 102 | or "dummy-key" # Ollama doesn't need real key | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | api/tasks/manager.py | 105 | async def execute_task( | CODE |