利用 AI 大模型和自动化工作流,根据主题或关键词一键生成高清短视频。Generate HD short videos from a topic or keyword with an automated AI workflow.
This report summarizes scanner evidence for harry0703/MoneyPrinterTurbo, a Python project with 129,462 GitHub stars. SynthScan examined 93,832 lines of code across 269 source files, recording 2324 pattern matches distributed across 13 syntactic categories. The legacy adjusted pattern signal is 23.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? 2043 finding(s).
Are imports declared and package/API names verified? 23 finding(s).
Are wrappers, guards, and repeated structures necessary? 2118 finding(s).
Which changes need focused human review? 2324 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 2324 distinct pattern matches across 13 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 |
|---|---|---|---|---|
| LOW | cli.py | 864 | def _resolve_subtitle_enabled(args: argparse.Namespace, ui_config) -> bool: | STRING |
| LOW | cli.py | 1111 | def _validate_batch_entry_fields( | STRING |
| LOW | cli.py | 1146 | def _resolve_batch_entry_paths( | STRING |
| LOW | cli.py | 1170 | def _validate_batch_task_params( | STRING |
| LOW | cli.py | 1427 | def _path_is_within_directory(file_path: str, directory: str) -> bool: | STRING |
| LOW | cli.py | 1437 | def _resolve_managed_resource_file( | STRING |
| LOW | cli.py | 1566 | def _remove_cli_material_copies(created_paths: Sequence[str]) -> None: | CODE |
| LOW | app/asgi.py | 67 | def validation_exception_handler(request: Request, e: RequestValidationError): | CODE |
| LOW | app/asgi.py | 88 | def _normalize_allowed_origin(raw_origin: str) -> str | None: | CODE |
| LOW | app/asgi.py | 134 | def parse_cors_allowed_origins(raw_origins: str | None) -> list[str]: | CODE |
| LOW | app/asgi.py | 205 | def is_browser_origin_allowed( | CODE |
| LOW | app/asgi.py | 230 | async def reject_untrusted_browser_origin(request: Request, call_next): | CODE |
| LOW | app/asgi.py | 278 | async def protect_generated_task_files(request: Request, call_next): | CODE |
| LOW | app/config/config.py | 91 | def update_config_nonblocking(config_section, key, value): | CODE |
| LOW | app/config/config.py | 127 | def delete_config_nonblocking(config_section, key): | CODE |
| LOW | app/config/config.py | 153 | def _apply_pending_config_updates_locked(): | CODE |
| LOW | app/config/config.py | 168 | def snapshot_config_with_pending(config_section): | CODE |
| LOW | app/config/config.py | 189 | def _flush_pending_config_locked(*, suppress_save_errors): | CODE |
| LOW | app/config/config.py | 215 | def _run_deferred_config_flush(): | CODE |
| LOW | app/config/config.py | 234 | def _schedule_deferred_config_flush(): | CODE |
| LOW | app/config/config.py | 356 | def _decode_linux_route_gateway(hex_gateway: str) -> str: | CODE |
| LOW | app/config/config.py | 369 | def get_container_default_gateway_ip(route_path: str = "/proc/net/route") -> str: | CODE |
| LOW | app/config/config.py | 403 | def get_default_ollama_base_url() -> str: | CODE |
| LOW | app/config/config.py | 469 | def _initialize_config_from_example(example_file): | CODE |
| LOW | app/utils/utils.py | 246 | def time_convert_seconds_to_hmsm(seconds) -> str: | CODE |
| LOW | app/utils/utils.py | 277 | def split_string_by_punctuations(s): | STRING |
| LOW | app/utils/utils.py | 447 | def normalize_script_for_subtitle_matching(video_script: str) -> str: | CODE |
| LOW | app/utils/file_security.py | 4 | def resolve_path_within_directory( | CODE |
| LOW | app/utils/logging_utils.py | 111 | def configure_terminal_logger(sink, level: str, colorize: bool = True) -> int: | CODE |
| LOW | app/models/llm_provider.py | 67 | def endpoint_selector_label_key(self) -> str: | CODE |
| LOW | app/models/llm_provider.py | 71 | def endpoint_selector_help_key(self) -> str: | CODE |
| LOW⚡ | app/models/llm_provider.py | 116 | def international_service_endpoint(self) -> LLMProviderEndpoint | None: | CODE |
| LOW⚡ | app/models/llm_provider.py | 121 | def effective_default_base_url(self) -> str: | CODE |
| LOW⚡ | app/models/llm_provider.py | 126 | def preferred_service_endpoint( | CODE |
| LOW | app/models/llm_provider.py | 570 | def normalize_provider_override(value: str | None, default_value: str | None) -> str: | CODE |
| LOW | app/controllers/v1/llm.py | 70 | def generate_video_social_metadata( | CODE |
| LOW | app/controllers/v1/video.py | 80 | def _sanitize_upload_filename(filename: str, request_id: str) -> str: | CODE |
| LOW | app/controllers/v1/video.py | 93 | def _resolve_path_within_directory(base_dir: str, unsafe_path: str, request_id: str) -> str: | CODE |
| LOW | app/controllers/v1/video.py | 470 | def upload_video_material_file(request: Request, file: UploadFile = File(...)): | CODE |
| LOW⚡ | app/services/task.py | 137 | def _register_cross_post_future(task_id: str, future: Future) -> None: | CODE |
| LOW⚡ | app/services/task.py | 143 | def _unregister_cross_post_future(task_id: str, future: Future | None = None) -> None: | CODE |
| LOW⚡ | app/services/task.py | 152 | def _is_cross_post_active_in_process(task_id: str) -> bool: | CODE |
| LOW⚡ | app/services/task.py | 159 | def _is_windows_process_alive(process_id: int) -> bool: | CODE |
| LOW⚡ | app/services/task.py | 1407 | def _run_cross_post_with_slot(*args) -> None: | CODE |
| LOW | app/services/task.py | 212 | def _is_cross_post_owner_alive(owner: str | None) -> bool: | CODE |
| LOW | app/services/task.py | 427 | def resolve_custom_audio_file( | CODE |
| LOW | app/services/task.py | 485 | def _resolve_reusable_voice_preview( | CODE |
| LOW | app/services/task.py | 905 | def _record_loomloom_run_reference( | CODE |
| LOW | app/services/task.py | 948 | def _get_material_source_groups(task_id: str, video_paths: list[str]) -> dict[str, str]: | CODE |
| LOW | app/services/task.py | 1165 | def _record_cross_post_failure( | CODE |
| LOW | app/services/task.py | 1182 | def _ensure_cross_post_terminal_state(task_id: str) -> None: | CODE |
| LOW | app/services/task.py | 1208 | def recover_interrupted_cross_posts(page_size: int = 100) -> int | None: | CODE |
| LOW | app/services/task.py | 1319 | def record_background_request(request_id: str) -> None: | CODE |
| LOW | app/services/task.py | 1422 | def _finalize_cross_post_future(task_id: str, future: Future) -> None: | CODE |
| LOW⚡ | app/services/material.py | 1093 | def _get_downloaded_video_duration(video_path: str) -> float: | CODE |
| LOW⚡ | app/services/material.py | 1371 | def _openai_image_response_message(body: Any) -> str: | CODE |
| LOW⚡ | app/services/material.py | 1722 | def _render_openai_image_video(image_path: str, clip_duration: int) -> str: | CODE |
| LOW⚡ | app/services/material.py | 1738 | def _download_videos_openai_image_on_demand( | CODE |
| LOW | app/services/material.py | 47 | def _get_material_concurrency() -> int: | CODE |
| LOW | app/services/material.py | 155 | def _persist_material_sources( | CODE |
| 1797 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | config.example.toml | 233 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | config.example.toml | 235 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | config.example.toml | 543 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | config.example.toml | 545 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | config.example.toml | 589 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | config.example.toml | 591 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | config.example.toml | 600 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | config.example.toml | 602 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 5 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 7 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 28 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | config.example.toml | 30 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | config.example.toml | 61 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | config.example.toml | 63 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | config.example.toml | 472 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | config.example.toml | 474 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | config.example.toml | 518 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | config.example.toml | 520 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | config.example.toml | 572 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 574 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 670 | # ── Voice selection ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | config.example.toml | 681 | # ── Model & Pricing Notice ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | config.example.toml | 697 | # ============================================================================= | COMMENT |
| MEDIUM | config.example.toml | 699 | # ============================================================================= | COMMENT |
| MEDIUM | app/models/schema.py | 283 | # --------------------------- | COMMENT |
| MEDIUM | app/models/schema.py | 285 | # --------------------------- | COMMENT |
| MEDIUM | app/services/llm.py | 1024 | # ============================================================================= | STRING |
| MEDIUM | app/services/llm.py | 1029 | # ============================================================================= | STRING |
| MEDIUM⚡ | test/services/test_material_openai_image.py | 497 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | test/services/test_material_openai_image.py | 499 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | test/services/test_material_openai_image.py | 667 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | test/services/test_material_openai_image.py | 669 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | test/services/test_material_openai_image.py | 726 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | test/services/test_material_openai_image.py | 728 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | test/services/test_material_openai_image.py | 81 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | test/services/test_material_openai_image.py | 83 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | test/services/test_material_openai_image.py | 227 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | test/services/test_material_openai_image.py | 229 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | webui/Main.py | 2849 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | webui/Main.py | 2851 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | webui/Main.py | 4095 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | webui/Main.py | 4097 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | webui/Main.py | 309 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | webui/Main.py | 311 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | webui/Main.py | 792 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | webui/Main.py | 794 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | webui/Main.py | 1866 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | webui/Main.py | 1868 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | webui/Main.py | 3182 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | webui/Main.py | 3184 | # ----------------------------------------------------------------------------- | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | cli.py | 1389 | except Exception: | STRING |
| LOW | cli.py | 1635 | except Exception: | CODE |
| LOW | cli.py | 1668 | except Exception as exc: | CODE |
| LOW | cli.py | 1751 | except Exception as exc: | CODE |
| LOW | app/config/config.py | 204 | except Exception as exc: | CODE |
| LOW | app/config/config.py | 249 | except Exception: | CODE |
| LOW | app/utils/utils.py | 57 | except Exception as e: | CODE |
| LOW | app/utils/utils.py | 172 | except Exception as exc: | CODE |
| LOW | app/utils/utils.py | 217 | except Exception as exc: | CODE |
| LOW | app/utils/utils.py | 238 | except Exception as e: | CODE |
| MEDIUM | app/utils/utils.py | 29 | def to_json(obj): | CODE |
| MEDIUM | app/utils/utils.py | 235 | def run(): | CODE |
| LOW | app/controllers/v1/video.py | 257 | except Exception: | CODE |
| LOW | app/controllers/v1/video.py | 523 | except Exception: | CODE |
| LOW | app/controllers/manager/base_manager.py | 66 | except Exception: | CODE |
| LOW | app/controllers/manager/base_manager.py | 122 | except Exception: | CODE |
| LOW | app/services/webui_task.py | 99 | except Exception as exc: | CODE |
| LOW | app/services/webui_task.py | 186 | except Exception as exc: | CODE |
| MEDIUM | app/services/task.py | 332 | def report(fraction) -> None: | CODE |
| LOW⚡ | app/services/task.py | 1400 | except Exception as exc: | CODE |
| LOW⚡ | app/services/task.py | 1411 | except Exception as exc: | CODE |
| LOW | app/services/task.py | 264 | except Exception as exc: | CODE |
| LOW | app/services/task.py | 310 | except Exception as exc: | CODE |
| LOW | app/services/task.py | 343 | except Exception as exc: | CODE |
| LOW | app/services/task.py | 922 | except Exception as exc: | CODE |
| LOW | app/services/task.py | 1144 | except Exception as exc: | CODE |
| LOW | app/services/task.py | 1186 | except Exception as exc: | CODE |
| LOW | app/services/task.py | 1241 | except Exception as exc: | CODE |
| LOW | app/services/task.py | 1438 | except Exception as exc: | CODE |
| LOW | app/services/task.py | 1815 | except Exception as exc: | CODE |
| LOW | app/services/task.py | 1927 | except Exception as exc: | CODE |
| MEDIUM | app/services/material.py | 47 | def _get_material_concurrency() -> int: | CODE |
| MEDIUM | app/services/material.py | 1847 | def load_cache_safely() -> List[MaterialInfo] | None: | CODE |
| LOW⚡ | app/services/material.py | 1099 | except Exception as exc: | CODE |
| LOW⚡ | app/services/material.py | 1107 | except Exception as close_error: | CODE |
| LOW⚡ | app/services/material.py | 1359 | except Exception: | CODE |
| LOW⚡ | app/services/material.py | 1367 | except Exception: | CODE |
| LOW⚡ | app/services/material.py | 1730 | except Exception as e: | CODE |
| LOW | app/services/material.py | 176 | except Exception as exc: | CODE |
| LOW | app/services/material.py | 436 | except Exception as e: | CODE |
| LOW | app/services/material.py | 576 | except Exception as e: | CODE |
| LOW | app/services/material.py | 692 | except Exception as e: | CODE |
| LOW | app/services/material.py | 856 | except Exception as e: | CODE |
| LOW | app/services/material.py | 874 | except Exception as e: | CODE |
| LOW | app/services/material.py | 942 | except Exception as e: | CODE |
| LOW | app/services/material.py | 1005 | except Exception as e: | CODE |
| LOW | app/services/material.py | 1070 | except Exception as e: | CODE |
| LOW | app/services/material.py | 1232 | except Exception as e: | CODE |
| LOW | app/services/material.py | 1239 | except Exception as close_error: | CODE |
| LOW | app/services/material.py | 1442 | except Exception as e: | CODE |
| LOW | app/services/material.py | 1451 | except Exception as exc: | CODE |
| LOW | app/services/material.py | 1496 | except Exception as e: | CODE |
| LOW | app/services/material.py | 1557 | except Exception as e: | CODE |
| LOW | app/services/material.py | 1800 | except Exception as source_error: | CODE |
| LOW | app/services/material.py | 1850 | except Exception as exc: | CODE |
| LOW | app/services/material.py | 1911 | except Exception as exc: | CODE |
| LOW | app/services/material.py | 1939 | except Exception as exc: | CODE |
| LOW | app/services/material.py | 1968 | except Exception as exc: | CODE |
| LOW | app/services/material.py | 2004 | except Exception as exc: | CODE |
| LOW | app/services/material.py | 2063 | except Exception as exc: | CODE |
| 118 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | cli.py | 1612 | except OSError: | CODE |
| HIGH | app/config/config.py | 500 | except FileNotFoundError: | CODE |
| HIGH | app/config/config.py | 511 | except FileNotFoundError: | CODE |
| HIGH | app/config/config.py | 575 | except (OSError, UnicodeError): | CODE |
| HIGH | app/utils/subtitle_writer.py | 21 | except FileNotFoundError: | CODE |
| HIGH | app/utils/logging_utils.py | 125 | except ValueError: | CODE |
| HIGH | app/services/task.py | 125 | except (TypeError, ValueError): | CODE |
| HIGH | app/services/material.py | 1996 | except OSError: | CODE |
| HIGH | app/services/material.py | 1251 | except FileNotFoundError: | CODE |
| HIGH | app/services/bgm.py | 275 | except (AttributeError, OSError): | CODE |
| HIGH | app/services/material_upload.py | 185 | except (UnidentifiedImageError, OSError, SyntaxError, ValueError): | CODE |
| HIGH | app/services/material_upload.py | 290 | except (AttributeError, OSError): | CODE |
| HIGH | app/services/voice.py | 1424 | except asyncio.CancelledError: | CODE |
| HIGH | app/services/voice.py | 1474 | except RuntimeError: | CODE |
| HIGH | app/services/voice.py | 1891 | except FileNotFoundError: | CODE |
| HIGH | app/services/voice.py | 2529 | except (ValueError, TypeError, AttributeError, requests.RequestException): | CODE |
| HIGH | app/services/material_cache.py | 401 | except OSError: | CODE |
| HIGH | app/services/video_project.py | 436 | except (OSError, ValueError, KeyError, TypeError): | CODE |
| HIGH | app/services/video_project.py | 520 | except subprocess.TimeoutExpired: | CODE |
| HIGH | app/services/video.py | 1400 | except (ValueError, TypeError): | CODE |
| HIGH | app/services/video.py | 463 | except FileNotFoundError: | CODE |
| HIGH | app/services/state.py | 301 | except (ValueError, SyntaxError): | CODE |
| HIGH | test/services/test_cache_manager.py | 48 | except (OSError, NotImplementedError): | CODE |
| HIGH | test/services/test_webui_custom_audio_upload.py | 96 | except _StoppedUpload: | CODE |
| HIGH | test/services/test_webui_local_material_upload.py | 90 | except _StoppedUpload: | CODE |
| HIGH | test/services/test_config.py | 159 | except toml.TomlDecodeError: | CODE |
| HIGH | webui/Main.py | 3002 | except ValueError: | CODE |
| HIGH | webui/Main.py | 6144 | except FileNotFoundError: | CODE |
| HIGH | webui/Main.py | 1090 | except OSError: | CODE |
| HIGH | webui/Main.py | 7939 | except FileNotFoundError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | cli.py | 900 | CODE | |
| LOW | cli.py | 1466 | CODE | |
| LOW | cli.py | 1579 | CODE | |
| LOW | cli.py | 1640 | CODE | |
| LOW | app/config/config.py | 537 | CODE | |
| LOW | app/utils/subtitle_reader.py | 6 | CODE | |
| LOW | app/utils/utils.py | 29 | CODE | |
| LOW | app/utils/utils.py | 531 | CODE | |
| LOW | app/utils/utils.py | 32 | CODE | |
| LOW | app/controllers/v1/video.py | 326 | CODE | |
| LOW | app/controllers/v1/video.py | 434 | CODE | |
| LOW | app/controllers/manager/redis_manager.py | 88 | CODE | |
| LOW | app/services/task.py | 1510 | CODE | |
| LOW | app/services/material.py | 339 | CODE | |
| LOW | app/services/material.py | 445 | CODE | |
| LOW | app/services/material.py | 1142 | CODE | |
| LOW | app/services/material.py | 1397 | CODE | |
| LOW | app/services/material.py | 1509 | CODE | |
| LOW | app/services/material.py | 2134 | CODE | |
| LOW | app/services/material.py | 2909 | CODE | |
| LOW | app/services/elevenlabs_music.py | 307 | CODE | |
| LOW | app/services/upload_post.py | 173 | CODE | |
| LOW | app/services/cache_manager.py | 67 | CODE | |
| LOW | app/services/llm.py | 257 | CODE | |
| LOW | app/services/llm.py | 908 | CODE | |
| LOW | app/services/bgm.py | 217 | CODE | |
| LOW | app/services/subtitle.py | 61 | CODE | |
| LOW | app/services/subtitle.py | 230 | CODE | |
| LOW | app/services/material_upload.py | 137 | CODE | |
| LOW | app/services/material_upload.py | 230 | CODE | |
| LOW | app/services/voice.py | 198 | CODE | |
| LOW | app/services/voice.py | 308 | CODE | |
| LOW | app/services/voice.py | 633 | CODE | |
| LOW | app/services/voice.py | 843 | CODE | |
| LOW | app/services/voice.py | 965 | CODE | |
| LOW | app/services/voice.py | 1356 | CODE | |
| LOW | app/services/voice.py | 1525 | CODE | |
| LOW | app/services/voice.py | 1594 | CODE | |
| LOW | app/services/voice.py | 1769 | CODE | |
| LOW | app/services/voice.py | 2433 | CODE | |
| LOW | app/services/voice.py | 2613 | CODE | |
| LOW | app/services/voice.py | 2820 | CODE | |
| LOW | app/services/voice.py | 2995 | CODE | |
| LOW | app/services/voice.py | 3055 | CODE | |
| LOW | app/services/voice.py | 3162 | CODE | |
| LOW | app/services/voice.py | 2997 | CODE | |
| LOW | app/services/sonilo.py | 241 | CODE | |
| LOW | app/services/sonilo.py | 330 | CODE | |
| LOW | app/services/loomloom.py | 944 | CODE | |
| LOW | app/services/material_cache.py | 406 | CODE | |
| LOW | app/services/video_project.py | 75 | CODE | |
| LOW | app/services/video_project.py | 881 | CODE | |
| LOW | app/services/video_project.py | 398 | CODE | |
| LOW | app/services/video_project.py | 496 | CODE | |
| LOW | app/services/video_project.py | 540 | CODE | |
| LOW | app/services/video_project.py | 630 | CODE | |
| LOW | app/services/video.py | 812 | CODE | |
| LOW | app/services/video.py | 958 | CODE | |
| LOW | app/services/video.py | 1538 | CODE | |
| LOW | app/services/video.py | 1071 | CODE | |
| 82 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | config.example.toml | 226 | # Create a key at https://platform.sonilo.com/dashboard. The WebUI can also save | COMMENT |
| MEDIUM⚡ | config.example.toml | 548 | # Create an account and API key at https://upload-post.com/ | COMMENT |
| MEDIUM | config.example.toml | 107 | # Create an Ark API key at: | COMMENT |
| MEDIUM | config.example.toml | 127 | # Create an API key at https://ofox.ai | COMMENT |
| MEDIUM | config.example.toml | 161 | # Create a key at https://muapi.ai and keep the API base URL rooted at | COMMENT |
| MEDIUM | config.example.toml | 212 | # Create an API key at https://playground.twelvelabs.io/ | COMMENT |
| MEDIUM | app/utils/utils.py | 31 | # Define a helper function to handle different types of objects | COMMENT |
| MEDIUM⚡ | test/services/test_cli.py | 803 | # Create a minimal valid video file for testing | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | config.example.toml | 1 | # MoneyPrinterTurbo configuration example. | COMMENT |
| LOW | config.example.toml | 21 | # 配置后客户端必须通过 x-api-key 请求头传入同一个值。 | COMMENT |
| LOW | config.example.toml | 61 | # ----------------------------------------------------------------------------- | COMMENT |
| LOW | config.example.toml | 81 | # separate multiple keys with commas, for example: ["key-1", "key-2"]. | COMMENT |
| LOW | config.example.toml | 101 | # (extra footage is trimmed by the editing pipeline). Override only if your | COMMENT |
| LOW | config.example.toml | 121 | volcengine_seedance_poll_interval = 5 | COMMENT |
| LOW | config.example.toml | 141 | # submission (extra footage is trimmed by the editing pipeline). | COMMENT |
| LOW | config.example.toml | 181 | metaso_minimax_base_url = "https://metaso.cn/api/minimax" | COMMENT |
| LOW | config.example.toml | 201 | # so the default picks a compatible size per video aspect (portrait 1024x1536, | COMMENT |
| LOW | config.example.toml | 221 | # Match search terms and downloaded materials to the script narrative order. | COMMENT |
| LOW | config.example.toml | 421 | ollama_model_name = "" | COMMENT |
| LOW | config.example.toml | 441 | # platform) and requests run on your Kimi Code plan usage limits. Credentials | COMMENT |
| LOW | config.example.toml | 481 | # explicitly; Edge failures do not trigger an automatic Whisper model download. | COMMENT |
| LOW | config.example.toml | 501 | # Concurrent keyword searches and downloads for stock footage (Pexels, Pixabay | COMMENT |
| LOW | config.example.toml | 541 | max_queued_tasks = 100 | COMMENT |
| LOW | config.example.toml | 561 | # Set true for children's content. Previously uploaded videos are not changed. | COMMENT |
| LOW | config.example.toml | 581 | # "float16" or "int8_float16" for CUDA. | COMMENT |
| LOW | config.example.toml | 661 | COMMENT | |
| LOW | config.example.toml | 681 | # ── Model & Pricing Notice ─────────────────────────────────────────────────── | COMMENT |
| LOW | config.example.toml | 701 | [ui] | COMMENT |
| LOW | config.example.toml | 721 | # video_aspect_pexels = "9:16" # Stored separately for each video source. | COMMENT |
| LOW | config.example.toml | 741 | # text_fore_color = "#FFFFFF" | COMMENT |
| LOW | docker-compose.gpu.yml | 1 | # GPU override file | COMMENT |
| LOW | docker-compose.claude.yml | 1 | # 使用 Claude 订阅(Pro / Max / Team)作为 LLM Provider 的运行方式。 | COMMENT |
| LOW | app/config/__init__.py | 21 | # rotation="00:00", | COMMENT |
| LOW | app/controllers/manager/redis_manager.py | 81 | "params" | COMMENT |
| LOW | app/services/material.py | 701 | # WaveSpeed AI (https://wavespeed.ai) 通过文生视频模型按脚本关键词直接生成素材, | COMMENT |
| LOW | app/services/bgm.py | 21 | {"CON", "PRN", "AUX", "NUL"} | COMMENT |
| LOW | test/services/__init__.py | 1 | # Unit test package for services | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | test/services/test_voice.py | 1509 | result = vs.get_elevenlabs_voices("fake-key") | CODE |
| LOW⚡ | test/services/test_voice.py | 1616 | mock_config.elevenlabs.get.return_value = "fake-key" | CODE |
| LOW | test/services/test_webui_ofox_placement.py | 38 | "ofox_api_key": "review-only-fake-key", | CODE |
| LOW | test/services/test_twelvelabs_client_lifecycle.py | 37 | patch.object(service.config, "app", {"twelvelabs_api_keys": ["fake-key"]}), | CODE |
| LOW | test/services/test_pexels_renditions.py | 37 | patch.object(material, "get_api_key", return_value="fake-key"), | CODE |
| LOW | test/services/test_pexels_renditions.py | 69 | patch.object(material, "get_api_key", return_value="fake-key"), | CODE |
| LOW⚡ | test/services/test_pexels_renditions.py | 97 | patch.object(material, "get_api_key", return_value="fake-key"), | CODE |
| LOW⚡ | test/services/test_pexels_renditions.py | 110 | patch.object(material, "get_api_key", return_value="fake-key"), | CODE |
| LOW⚡ | test/services/test_upload_response_recovery.py | 14 | service = UploadPostService({"upload_post_enabled": True, "upload_post_api_key": "fake-key", "upload_post_username": | CODE |
| LOW⚡ | test/services/test_upload_response_recovery.py | 28 | service = UploadPostService({"upload_post_enabled": True, "upload_post_api_key": "fake-key", "upload_post_username": | CODE |
| LOW | …loom/moneyprinterturbo-script-candidates.template.json | 36 | "placeholder": "例如:普通人如何用 AI 提高工作效率" | CODE |
| LOW | …loom/moneyprinterturbo-script-candidates.template.json | 48 | "placeholder": "输出语言:zh-CN\n目标时长(秒):60\n风格或附加要求:开头制造反差" | CODE |
| LOW | …oom/moneyprinterturbo-ai-video-materials.template.json | 44 | "placeholder": "例如:现代办公室中的工作人员使用 AI 助手,自然光,缓慢推进镜头" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | cli.py | 1 | CODE | |
| LOW | app/services/task_artifacts.py | 3 | CODE | |
| LOW | app/services/cache_manager.py | 3 | CODE | |
| LOW | app/services/muapi.py | 9 | CODE | |
| LOW | app/services/metaso_minimax.py | 8 | CODE | |
| LOW | app/services/loomloom.py | 8 | CODE | |
| LOW | app/services/material_cache.py | 3 | CODE | |
| LOW | app/services/video_project.py | 7 | CODE | |
| LOW | test/services/test_webui_headless_task_actions.py | 15 | CODE | |
| LOW | docs/skill/mpt_agent.py | 4 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | webui.sh | 3 | # If you could not download the model from the official site, you can use the mirror site. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app/utils/utils.py | 316 | CODE | |
| LOW | app/services/video.py | 958 | CODE | |
| LOW | test/services/test_batch_material_allocation.py | 30 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app/controllers/manager/base_manager.py | 86 | def execute_task(self, func: Callable, *args: Any, **kwargs: Any): | CODE |
| LOW | app/controllers/manager/base_manager.py | 92 | def run_task(self, func: Callable, *args: Any, **kwargs: Any): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | config.example.toml | 419 | # Set model_name to a model installed by `ollama pull` or shown by `ollama list`. | COMMENT |