🚀 AI 全自动短视频引擎 | AI Fully Automated Short Video Engine
This report presents the forensic synthetic code analysis of AIDC-AI/Pixelle-Video, a Python project with 25,417 GitHub stars. SynthScan v2.0 examined 42,265 lines of code across 237 source files, recording 693 pattern matches distributed across 19 syntactic categories. The overall adjusted score of 27.9 places this repository in the Moderate AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 693 distinct pattern matches across 19 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| 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 |
|---|---|---|---|---|
| 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 |