NAS媒体库自动化管理工具
This report presents the forensic synthetic code analysis of jxxghp/MoviePilot, a Python project with 11,653 GitHub stars. SynthScan v2.0 examined 562,253 lines of code across 1824 source files, recording 11584 pattern matches distributed across 18 syntactic categories. The overall adjusted score of 21.4 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 11584 distinct pattern matches across 18 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 |
|---|---|---|---|---|
| LOW | database/versions/d5e6f7a8b9c0_2_2_8.py | 24 | def _fix_episode_priority_type(bind, table_name: str) -> None: | CODE |
| LOW | database/versions/7c1a2b3d4e5f_2_2_9.py | 25 | def _add_json_column_if_missing(table_name: str, column_name: str) -> None: | CODE |
| LOW | database/versions/f6d8b0c2e4a7_3_0_17.py | 308 | def _normalize_legacy_planning_states() -> None: | CODE |
| LOW | database/versions/f6d8b0c2e4a7_3_0_17.py | 441 | def _checkpoint_steps_complete(row: dict[str, Any]) -> bool: | CODE |
| LOW | database/versions/f6d8b0c2e4a7_3_0_17.py | 634 | def _reconcile_execution_states() -> None: | CODE |
| LOW | database/versions/5f2a9c1e7b4d_3_0_12.py | 58 | def _backfill_declared_metadata() -> None: | CODE |
| LOW | database/versions/7f5c1d2e3a4b_3_0_3.py | 92 | def _make_src_storage_required(inspector: sa.Inspector) -> None: | CODE |
| LOW | database/versions/a9d4f2c7e6b1_3_0_18.py | 147 | def _repair_user_config_unique() -> None: | CODE |
| LOW | database/versions/a9d4f2c7e6b1_3_0_18.py | 243 | def _drop_user_config_foreign_key() -> None: | CODE |
| LOW | database/versions/a9d4f2c7e6b1_3_0_18.py | 297 | def _normalize_duplicate_names() -> None: | CODE |
| LOW | database/versions/8a4c7e1d2f90_3_0_2.py | 120 | def _normalize_existing_sources(table_name: str) -> None: | CODE |
| LOW | database/versions/8a4c7e1d2f90_3_0_2.py | 140 | def _clear_invalid_or_partial_identity(table_name: str) -> None: | CODE |
| LOW | database/versions/8a4c7e1d2f90_3_0_2.py | 169 | def _backfill_prefixed_media_id(table_name: str, columns: set[str]) -> None: | CODE |
| LOW | database/versions/8a4c7e1d2f90_3_0_2.py | 331 | def _ensure_identity_constraints() -> None: | CODE |
| LOW | database/versions/8a4c7e1d2f90_3_0_2.py | 350 | def _drop_identity_constraints() -> None: | CODE |
| LOW | database/versions/e5c7a9b1d3f6_3_0_16.py | 182 | def _repair_unique_constraints( | CODE |
| LOW | database/versions/e5c7a9b1d3f6_3_0_16.py | 295 | def _validate_or_recreate_empty_table( | CODE |
| LOW | database/versions/e5c7a9b1d3f6_3_0_16.py | 532 | def _create_or_repair_step_table() -> None: | CODE |
| LOW | database/versions/e5c7a9b1d3f6_3_0_16.py | 608 | def _create_or_repair_receipt_table() -> None: | CODE |
| LOW | database/versions/e5c7a9b1d3f6_3_0_16.py | 650 | def _backfill_legacy_review_steps() -> None: | CODE |
| LOW | database/versions/e5c7a9b1d3f6_3_0_16.py | 792 | def _mark_downgrade_uncertain() -> None: | CODE |
| LOW | database/versions/b1e7d3f5a9c2_3_0_13.py | 36 | def _repair_task_id_constraint() -> None: | CODE |
| LOW | database/versions/b1e7d3f5a9c2_3_0_13.py | 58 | def _repair_state_created_index() -> None: | CODE |
| LOW | database/versions/b1e7d3f5a9c2_3_0_13.py | 81 | def _backfill_admission_state() -> None: | CODE |
| LOW | database/versions/e3d9f4b7c806_3_0_4.py | 50 | def _validate_or_recreate_table() -> None: | CODE |
| LOW | database/versions/e3d9f4b7c806_3_0_4.py | 91 | def _repair_storage_path_index() -> None: | CODE |
| LOW | database/versions/a946dae52526_2_2_1.py | 39 | def migrate_postgresql_userid(connection): | CODE |
| LOW | app/command.py | 34 | def _finish_command_processing_status(status: Optional[dict], user_id: Optional[str] = None) -> None: | CODE |
| LOW | app/command.py | 165 | def __init_commands_background(self, pid: Optional[str] = None) -> None: | CODE |
| LOW | app/command.py | 234 | def __trigger_register_commands_event(self) -> tuple[Optional[Event], dict]: | CODE |
| LOW | app/__init__.py | 14 | def _configure_free_threaded_windows_native_dependencies() -> None: | CODE |
| LOW | app/__init__.py | 29 | def _filter_third_party_startup_warnings() -> None: | CODE |
| LOW | app/factory.py | 46 | def _get_http_exception_message(detail: Any) -> str: | CODE |
| LOW | app/factory.py | 58 | def _localize_exception_message(request: Request, message: str) -> str: | CODE |
| LOW | app/factory.py | 82 | def _native_ai_error_response( | CODE |
| LOW | app/factory.py | 125 | def _mcp_jsonrpc_error_response( | CODE |
| LOW | app/factory.py | 143 | def _protocol_validation_error_response( | CODE |
| LOW | app/factory.py | 193 | async def localized_http_exception_handler( | CODE |
| LOW | app/factory.py | 237 | async def persistence_unavailable_handler( | CODE |
| LOW | app/factory.py | 252 | async def localized_validation_exception_handler( | CODE |
| LOW | app/factory.py | 285 | async def localized_unhandled_exception_handler( | CODE |
| LOW | app/factory.py | 362 | async def locale_context_middleware( | CODE |
| LOW | app/cli.py | 251 | def _mark_prepared_update_failed(message: str) -> None: | CODE |
| LOW | app/cli.py | 284 | def _apply_prepared_release_update() -> bool: | CODE |
| LOW | app/cli.py | 352 | def _resolve_auto_update_targets(mode: str) -> Optional[str]: | CODE |
| LOW | app/cli.py | 417 | def _ensure_frontend_not_running_alone(timeout: int) -> None: | CODE |
| LOW | app/cli.py | 750 | def _wait_until_backend_ready(runtime: Dict[str, Any], timeout: int) -> Dict[str, Any]: | CODE |
| LOW | app/cli.py | 768 | def _wait_until_frontend_ready(runtime: Dict[str, Any], timeout: int) -> Dict[str, Any]: | CODE |
| LOW | app/cli.py | 885 | def _installed_frontend_version() -> Optional[str]: | CODE |
| LOW | app/main.py | 5 | def _prepare_direct_execution_import_path() -> None: | CODE |
| LOW | app/monitor/dispatcher.py | 78 | def is_transfer_candidate_path(self, file_path: Path) -> bool: | CODE |
| LOW | app/monitor/monitor.py | 362 | def __abort_interrupted_startup(self) -> None: | CODE |
| LOW | app/monitor/monitor.py | 803 | def __collect_compensation_files(self, mon_path: Path) -> Optional[List[Tuple[Path, float, int]]]: | CODE |
| LOW | app/monitor/watcher.py | 321 | def _expand_added_directories(self, changes: set[tuple[Change, str]]) -> set[tuple[Change, str]]: | CODE |
| LOW⚡ | app/monitor/syslimits.py | 73 | def get_system_optimization_tips() -> List[str]: | CODE |
| LOW | app/doctor/checks.py | 243 | def _process_name_and_command(process: psutil.Process) -> tuple[str, str]: | CODE |
| LOW | app/doctor/checks.py | 255 | def _is_expected_port_process(name: str, process: psutil.Process) -> bool: | CODE |
| LOW | app/doctor/checks.py | 302 | def _is_moviepilot_backend_payload(payload: Any) -> bool: | CODE |
| LOW | app/doctor/checks.py | 678 | def _check_processes_and_ports(runner: DoctorRunnerProtocol) -> None: | CODE |
| LOW | app/doctor/checks.py | 772 | def _check_postgresql_database(runner: DoctorRunnerProtocol) -> None: | CODE |
| 8289 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | database/versions/e2dbe1421fa4_2_0_3.py | 68 | except Exception as e: | CODE |
| LOW | database/versions/ecf3c693fdf3_2_0_5.py | 42 | except Exception as e: | CODE |
| LOW | database/versions/5b3355c964bb_2_2_0.py | 85 | except Exception as e: | STRING |
| LOW | database/versions/5b3355c964bb_2_2_0.py | 112 | except Exception as e: | STRING |
| LOW | database/versions/a946dae52526_2_2_1.py | 73 | except Exception as e: | STRING |
| LOW | app/command.py | 228 | except Exception as e: | CODE |
| LOW | app/command.py | 428 | except Exception as err: | CODE |
| LOW | app/cli.py | 917 | except Exception as error: | CODE |
| LOW | app/cli.py | 928 | except Exception as error: | CODE |
| LOW | app/cli.py | 944 | except Exception as error: | CODE |
| LOW | app/cli.py | 967 | except Exception as error: | CODE |
| LOW | app/cli.py | 987 | except Exception: | CODE |
| MEDIUM | app/cli.py | 225 | def _git_current_branch() -> Optional[str]: | CODE |
| LOW | app/monitor/dispatcher.py | 115 | except Exception as err: | CODE |
| LOW | app/monitor/dispatcher.py | 397 | except Exception as e: | CODE |
| LOW | app/monitor/dispatcher.py | 424 | except Exception as err: | CODE |
| LOW | app/monitor/monitor.py | 431 | except Exception as e: | CODE |
| LOW | app/monitor/monitor.py | 488 | except Exception as e: | CODE |
| LOW | app/monitor/monitor.py | 676 | except Exception as e: | CODE |
| LOW | app/monitor/monitor.py | 749 | except Exception: | CODE |
| LOW | app/monitor/monitor.py | 917 | except Exception as e: | CODE |
| LOW | app/monitor/monitor.py | 1012 | except Exception as err: | CODE |
| LOW | app/monitor/monitor.py | 1025 | except Exception as err: | CODE |
| LOW | app/monitor/monitor.py | 1120 | except Exception as err: | CODE |
| LOW | app/monitor/monitor.py | 1133 | except Exception as err: | CODE |
| LOW | app/monitor/recovery.py | 194 | except Exception as err: | CODE |
| LOW | app/monitor/recovery.py | 215 | except Exception as err: | CODE |
| LOW | app/monitor/recovery.py | 231 | except Exception as err: | CODE |
| LOW | app/monitor/poller.py | 159 | except Exception as e: | CODE |
| LOW | app/monitor/poller.py | 261 | except Exception as e: | CODE |
| LOW | app/monitor/poller.py | 282 | except Exception as e: | CODE |
| LOW | app/monitor/watcher.py | 194 | except Exception as err: | CODE |
| LOW | app/monitor/watcher.py | 278 | except Exception as err: | CODE |
| LOW | app/monitor/watcher.py | 478 | except Exception as err: | CODE |
| LOW | app/monitor/syslimits.py | 25 | except Exception as err: | CODE |
| LOW⚡ | app/monitor/syslimits.py | 58 | except Exception as e: | CODE |
| LOW⚡ | app/monitor/syslimits.py | 65 | except Exception as e: | CODE |
| LOW⚡ | app/monitor/syslimits.py | 67 | except Exception as e: | CODE |
| LOW | app/monitor/snapshot.py | 58 | except Exception as e: | CODE |
| LOW | app/monitor/snapshot.py | 78 | except Exception as e: | CODE |
| LOW | app/monitor/snapshot.py | 105 | except Exception as e: | CODE |
| LOW | app/doctor/runner.py | 49 | except Exception as err: | CODE |
| LOW | app/runtime/execution.py | 163 | except Exception as error: | CODE |
| LOW | app/runtime/tasks.py | 133 | except Exception as caught: | CODE |
| LOW | app/runtime/config.py | 1053 | except Exception as e: | CODE |
| LOW | app/runtime/config.py | 1289 | except Exception as err: | CODE |
| LOW | app/runtime/config.py | 1333 | except Exception as e: | CODE |
| LOW | app/runtime/gc.py | 81 | except Exception as e: | CODE |
| LOW | app/runtime/log.py | 202 | except Exception as err: | CODE |
| LOW | app/runtime/log.py | 256 | except Exception as err: | CODE |
| LOW | app/runtime/log.py | 270 | except Exception as err: | CODE |
| LOW | app/runtime/log.py | 644 | except Exception: | CODE |
| LOW | app/runtime/events.py | 241 | except Exception as e: | CODE |
| LOW | app/runtime/events.py | 286 | except Exception as e: | CODE |
| LOW | app/runtime/events.py | 432 | except Exception as err: | CODE |
| LOW | app/runtime/coalesce.py | 209 | except Exception as exc: # noqa: BLE001 - 基础设施不能因消费者异常崩溃 | CODE |
| LOW | app/runtime/state.py | 194 | except Exception as e: | CODE |
| LOW | app/runtime/state.py | 224 | except Exception as e: | CODE |
| LOW | app/runtime/state.py | 262 | except Exception as err: | CODE |
| LOW | app/runtime/state.py | 282 | except Exception as err: | CODE |
| 1477 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | database/versions/e8b1c4d7a2f9_2_2_18.py | 0 | { 'title': '{{ title_year }}' '{% if season_episode %} {{ season_episode }}{% endif %} 已入库', 'text': '{% if vote_average | STRING |
| HIGH | database/versions/89d24811e894_2_1_4.py | 0 | { 'title': '{{ title_year }}' '{% if season_episode %} {{ season_episode }}{% endif %} 已入库', 'text': '{% if vote_average | STRING |
| HIGH | tests/test_database_migration_startup.py | 0 | { 'title': '{{ title_year }}' '{% if season_episode %} {{ season_episode }}{% endif %} 已入库', 'text': '{% if vote_average | STRING |
| HIGH | database/versions/e8b1c4d7a2f9_2_2_18.py | 0 | { 'title': '{{ title_year }}' '{% if download_episodes %} {{ season_fmt }} {{ download_episodes }}{% else %}{{ season_ep | STRING |
| HIGH | database/versions/89d24811e894_2_1_4.py | 0 | { 'title': '{{ title_year }}' '{% if download_episodes %} {{ season_fmt }} {{ download_episodes }}{% else %}{{ season_ep | STRING |
| HIGH | tests/test_database_migration_startup.py | 0 | { 'title': '{{ title_year }}' '{% if download_episodes %} {{ season_fmt }} {{ download_episodes }}{% else %}{{ season_ep | STRING |
| HIGH | database/versions/e8b1c4d7a2f9_2_2_18.py | 0 | { 'title': '{{ title_year }}{% if track_number %} #{{ track_number }}{% endif %}' '{% if season_episode %} {{ season_epi | STRING |
| HIGH | database/versions/4dadad1d161a_3_0_0.py | 0 | { 'title': '{{ title_year }}{% if track_number %} #{{ track_number }}{% endif %}' '{% if season_episode %} {{ season_epi | STRING |
| HIGH | tests/test_notification_template_render.py | 0 | { 'title': '{{ title_year }}{% if track_number %} #{{ track_number }}{% endif %}' '{% if season_episode %} {{ season_epi | STRING |
| HIGH | app/chain/_messaging.py | 0 | 发送媒体信息选择列表 :param message: 消息体 :param medias: 媒体列表 :return: 成功或失败 | STRING |
| HIGH | app/modules/telegram/module.py | 0 | 发送媒体信息选择列表 :param message: 消息体 :param medias: 媒体列表 :return: 成功或失败 | STRING |
| HIGH | app/modules/synologychat/__init__.py | 0 | 发送媒体信息选择列表 :param message: 消息体 :param medias: 媒体列表 :return: 成功或失败 | STRING |
| HIGH | app/chain/_messaging.py | 0 | 发送种子信息选择列表 :param message: 消息体 :param torrents: 种子列表 :return: 成功或失败 | STRING |
| HIGH | app/modules/telegram/module.py | 0 | 发送种子信息选择列表 :param message: 消息体 :param torrents: 种子列表 :return: 成功或失败 | STRING |
| HIGH | app/modules/synologychat/__init__.py | 0 | 发送种子信息选择列表 :param message: 消息体 :param torrents: 种子列表 :return: 成功或失败 | STRING |
| HIGH | app/chain/scraping.py | 0 | 获取nfo文件内容文本 :param meta: 元数据 :param mediainfo: 媒体信息 :param season: 季号 :param episode: 集号 | STRING |
| HIGH | app/modules/themoviedb/scraper.py | 0 | 获取nfo文件内容文本 :param meta: 元数据 :param mediainfo: 媒体信息 :param season: 季号 :param episode: 集号 | STRING |
| HIGH | app/modules/themoviedb/__init__.py | 0 | 获取nfo文件内容文本 :param meta: 元数据 :param mediainfo: 媒体信息 :param season: 季号 :param episode: 集号 | STRING |
| HIGH | app/chain/base.py | 0 | 补充抓取媒体信息图片 :param mediainfo: 识别的媒体信息 :return: 更新后的媒体信息 | STRING |
| HIGH | app/modules/themoviedb/__init__.py | 0 | 补充抓取媒体信息图片 :param mediainfo: 识别的媒体信息 :return: 更新后的媒体信息 | STRING |
| HIGH | app/modules/douban/__init__.py | 0 | 补充抓取媒体信息图片 :param mediainfo: 识别的媒体信息 :return: 更新后的媒体信息 | STRING |
| HIGH | app/chain/base.py | 0 | 补充抓取媒体信息图片(异步版本) :param mediainfo: 识别的媒体信息 :return: 更新后的媒体信息 | STRING |
| HIGH | app/modules/themoviedb/__init__.py | 0 | 补充抓取媒体信息图片(异步版本) :param mediainfo: 识别的媒体信息 :return: 更新后的媒体信息 | STRING |
| HIGH | app/modules/douban/__init__.py | 0 | 补充抓取媒体信息图片(异步版本) :param mediainfo: 识别的媒体信息 :return: 更新后的媒体信息 | STRING |
| HIGH | app/chain/base.py | 0 | 解析webhook报文体 :param body: 请求体 :param form: 请求表单 :param args: 请求参数 :return: 字典,解析为消息时需要包含:title、text、image | STRING |
| HIGH | app/modules/jellyfin/__init__.py | 0 | 解析webhook报文体 :param body: 请求体 :param form: 请求表单 :param args: 请求参数 :return: 字典,解析为消息时需要包含:title、text、image | STRING |
| HIGH | app/modules/trimemedia/module.py | 0 | 解析webhook报文体 :param body: 请求体 :param form: 请求表单 :param args: 请求参数 :return: 字典,解析为消息时需要包含:title、text、image | STRING |
| HIGH | app/modules/emby/__init__.py | 0 | 解析webhook报文体 :param body: 请求体 :param form: 请求表单 :param args: 请求参数 :return: 字典,解析为消息时需要包含:title、text、image | STRING |
| HIGH | app/modules/plex/__init__.py | 0 | 解析webhook报文体 :param body: 请求体 :param form: 请求表单 :param args: 请求参数 :return: 字典,解析为消息时需要包含:title、text、image | STRING |
| HIGH | app/modules/zspace/__init__.py | 0 | 解析webhook报文体 :param body: 请求体 :param form: 请求表单 :param args: 请求参数 :return: 字典,解析为消息时需要包含:title、text、image | STRING |
| HIGH | app/chain/base.py | 0 | 搜索人物信息 :param name: 人物名称 :param media_source: 请求级搜索数据源 :return: 人物信息列表 | STRING |
| HIGH | app/modules/themoviedb/__init__.py | 0 | 搜索人物信息 :param name: 人物名称 :param media_source: 请求级搜索数据源 :return: 人物信息列表 | STRING |
| HIGH | app/modules/douban/__init__.py | 0 | 搜索人物信息 :param name: 人物名称 :param media_source: 请求级搜索数据源 :return: 人物信息列表 | STRING |
| HIGH | app/chain/base.py | 0 | 获取下载器种子列表 :param status: 种子状态 :param hashs: 种子hash :param downloader: 下载器 :param include_all_tags: 是否包含未打内置标签的下载任务 :retu | STRING |
| HIGH | app/modules/qbittorrent/__init__.py | 0 | 获取下载器种子列表 :param status: 种子状态 :param hashs: 种子hash :param downloader: 下载器 :param include_all_tags: 是否包含未打内置标签的下载任务 :retu | STRING |
| HIGH | app/modules/rtorrent/__init__.py | 0 | 获取下载器种子列表 :param status: 种子状态 :param hashs: 种子hash :param downloader: 下载器 :param include_all_tags: 是否包含未打内置标签的下载任务 :retu | STRING |
| HIGH | app/modules/transmission/__init__.py | 0 | 获取下载器种子列表 :param status: 种子状态 :param hashs: 种子hash :param downloader: 下载器 :param include_all_tags: 是否包含未打内置标签的下载任务 :retu | STRING |
| HIGH | app/chain/base.py | 0 | 删除下载器种子 :param hashs: 种子hash :param delete_file: 是否删除文件 :param downloader: 下载器 :return: bool | STRING |
| HIGH | app/modules/qbittorrent/__init__.py | 0 | 删除下载器种子 :param hashs: 种子hash :param delete_file: 是否删除文件 :param downloader: 下载器 :return: bool | STRING |
| HIGH | app/modules/rtorrent/__init__.py | 0 | 删除下载器种子 :param hashs: 种子hash :param delete_file: 是否删除文件 :param downloader: 下载器 :return: bool | STRING |
| HIGH | app/modules/transmission/__init__.py | 0 | 删除下载器种子 :param hashs: 种子hash :param delete_file: 是否删除文件 :param downloader: 下载器 :return: bool | STRING |
| HIGH | app/chain/base.py | 0 | 开始下载 :param hashs: 种子hash :param downloader: 下载器 :return: bool | STRING |
| HIGH | app/modules/qbittorrent/__init__.py | 0 | 开始下载 :param hashs: 种子hash :param downloader: 下载器 :return: bool | STRING |
| HIGH | app/modules/rtorrent/__init__.py | 0 | 开始下载 :param hashs: 种子hash :param downloader: 下载器 :return: bool | STRING |
| HIGH | app/modules/transmission/__init__.py | 0 | 开始下载 :param hashs: 种子hash :param downloader: 下载器 :return: bool | STRING |
| HIGH | app/chain/base.py | 0 | 停止下载 :param hashs: 种子hash :param downloader: 下载器 :return: bool | STRING |
| HIGH | app/modules/qbittorrent/__init__.py | 0 | 停止下载 :param hashs: 种子hash :param downloader: 下载器 :return: bool | STRING |
| HIGH | app/modules/rtorrent/__init__.py | 0 | 停止下载 :param hashs: 种子hash :param downloader: 下载器 :return: bool | STRING |
| HIGH | app/modules/transmission/__init__.py | 0 | 停止下载 :param hashs: 种子hash :param downloader: 下载器 :return: bool | STRING |
| HIGH | app/chain/base.py | 0 | 设置种子标签 :param hashs: 种子hash :param tags: 标签列表 :param downloader: 下载器 :return: bool | STRING |
| HIGH | app/modules/qbittorrent/__init__.py | 0 | 设置种子标签 :param hashs: 种子hash :param tags: 标签列表 :param downloader: 下载器 :return: bool | STRING |
| HIGH | app/modules/rtorrent/__init__.py | 0 | 设置种子标签 :param hashs: 种子hash :param tags: 标签列表 :param downloader: 下载器 :return: bool | STRING |
| HIGH | app/modules/transmission/__init__.py | 0 | 设置种子标签 :param hashs: 种子hash :param tags: 标签列表 :param downloader: 下载器 :return: bool | STRING |
| HIGH | app/chain/base.py | 0 | 修改下载任务属性。 :param hash_string: 种子hash :param downloader: 下载器 :param download_limit: 下载限速,单位 kb/s :param upload_limit: 上传限 | STRING |
| HIGH | app/modules/qbittorrent/__init__.py | 0 | 修改下载任务属性。 :param hash_string: 种子hash :param downloader: 下载器 :param download_limit: 下载限速,单位 kb/s :param upload_limit: 上传限 | STRING |
| HIGH | app/modules/transmission/__init__.py | 0 | 修改下载任务属性。 :param hash_string: 种子hash :param downloader: 下载器 :param download_limit: 下载限速,单位 kb/s :param upload_limit: 上传限 | STRING |
| HIGH | app/chain/base.py | 0 | 查询下载任务tracker列表。 :param hash_string: 种子hash :param downloader: 下载器 :return: 下载器名称到tracker列表的映射 | STRING |
| HIGH | app/modules/qbittorrent/__init__.py | 0 | 查询下载任务tracker列表。 :param hash_string: 种子hash :param downloader: 下载器 :return: 下载器名称到tracker列表的映射 | STRING |
| HIGH | app/modules/transmission/__init__.py | 0 | 查询下载任务tracker列表。 :param hash_string: 种子hash :param downloader: 下载器 :return: 下载器名称到tracker列表的映射 | STRING |
| HIGH | app/chain/base.py | 0 | 判断媒体文件是否存在 :param mediainfo: 识别的媒体信息 :param itemid: 媒体服务器itemid :param server: 媒体服务器名称 :return: 如不存在返回none,存在时返回信息,包括每季已 | STRING |
| 64 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | database/versions/e2dbe1421fa4_2_0_3.py | 20 | CODE | |
| LOW | database/versions/3891a5e722a1_2_1_7.py | 21 | CODE | |
| LOW | database/versions/e5c7a9b1d3f6_3_0_16.py | 863 | CODE | |
| LOW | app/command.py | 165 | CODE | |
| LOW | app/command.py | 293 | CODE | |
| LOW | app/monitor/dispatcher.py | 96 | CODE | |
| LOW | app/monitor/monitor.py | 370 | CODE | |
| LOW | app/monitor/monitor.py | 435 | CODE | |
| LOW | app/monitor/monitor.py | 491 | CODE | |
| LOW | app/monitor/monitor.py | 604 | CODE | |
| LOW | app/monitor/monitor.py | 803 | CODE | |
| LOW | app/monitor/poller.py | 82 | CODE | |
| LOW | app/monitor/poller.py | 220 | CODE | |
| LOW | app/monitor/watcher.py | 353 | CODE | |
| LOW | app/monitor/syslimits.py | 41 | CODE | |
| LOW | app/runtime/config.py | 817 | CODE | |
| LOW | app/runtime/config.py | 1014 | CODE | |
| LOW | app/runtime/log.py | 634 | CODE | |
| LOW | app/runtime/log.py | 224 | CODE | |
| LOW | app/runtime/log.py | 323 | CODE | |
| LOW | app/runtime/log.py | 408 | CODE | |
| LOW | app/runtime/log.py | 501 | CODE | |
| LOW | app/runtime/events.py | 477 | CODE | |
| LOW | app/runtime/events.py | 782 | CODE | |
| LOW | app/runtime/events.py | 831 | CODE | |
| LOW | app/runtime/events.py | 845 | CODE | |
| LOW | app/runtime/localization.py | 45 | CODE | |
| LOW | app/runtime/state.py | 173 | CODE | |
| LOW | app/runtime/compat/diagnostics.py | 144 | CODE | |
| LOW | app/runtime/compat/resource_imports.py | 61 | CODE | |
| LOW | app/runtime/compat/resource_imports.py | 104 | CODE | |
| LOW | app/runtime/capabilities/runtime.py | 255 | CODE | |
| LOW | app/runtime/capabilities/runtime.py | 338 | CODE | |
| LOW | app/runtime/capabilities/runtime.py | 473 | CODE | |
| LOW | app/runtime/capabilities/runtime.py | 660 | CODE | |
| LOW | app/runtime/capabilities/runtime.py | 899 | CODE | |
| LOW | app/runtime/capabilities/runtime.py | 1012 | CODE | |
| LOW | app/runtime/capabilities/runtime.py | 1129 | CODE | |
| LOW | app/runtime/capabilities/runtime.py | 1242 | CODE | |
| LOW | app/runtime/observability/__init__.py | 96 | CODE | |
| LOW | app/runtime/observability/__init__.py | 99 | CODE | |
| LOW | app/runtime/extensions/module_manager.py | 156 | CODE | |
| LOW | app/runtime/extensions/plugin_manager.py | 378 | CODE | |
| LOW | app/runtime/extensions/plugin_manager.py | 470 | CODE | |
| LOW | app/runtime/extensions/plugin_manager.py | 500 | CODE | |
| LOW | app/runtime/extensions/plugin_manager.py | 728 | CODE | |
| LOW | app/runtime/extensions/plugin_manager.py | 776 | CODE | |
| LOW | app/runtime/extensions/plugin_manager.py | 799 | CODE | |
| LOW | app/runtime/extensions/plugin/sync.py | 37 | CODE | |
| LOW | app/runtime/extensions/plugin/monitor.py | 163 | CODE | |
| LOW | app/runtime/extensions/plugin/paths.py | 118 | CODE | |
| LOW | app/runtime/extensions/plugin/tools.py | 33 | CODE | |
| LOW | app/runtime/extensions/plugin/loader.py | 44 | CODE | |
| LOW | app/runtime/extensions/plugin/loader.py | 192 | CODE | |
| LOW | app/runtime/extensions/plugin/lifecycle.py | 93 | CODE | |
| LOW | app/runtime/extensions/plugin/lifecycle.py | 264 | CODE | |
| LOW | app/runtime/extensions/plugin/admission.py | 60 | CODE | |
| LOW | app/runtime/extensions/plugin/projection.py | 53 | CODE | |
| LOW | app/runtime/extensions/plugin/projection.py | 83 | CODE | |
| LOW | app/runtime/extensions/plugin/projection.py | 105 | CODE | |
| 578 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | database/versions/610bb05ddeef_2_1_2.py | 8 | CODE | |
| LOW | database/versions/610bb05ddeef_2_1_2.py | 12 | CODE | |
| LOW | database/versions/ca5461f314f2_2_1_0.py | 8 | CODE | |
| LOW | database/versions/ecf3c693fdf3_2_0_5.py | 8 | CODE | |
| LOW | database/versions/0fb94bf69b38_2_0_2.py | 8 | CODE | |
| LOW | database/versions/3891a5e722a1_2_1_7.py | 11 | CODE | |
| LOW | database/versions/4666ce24a443_2_1_8.py | 8 | CODE | |
| LOW | database/versions/55390f1f77c1_2_0_9.py | 8 | CODE | |
| LOW | database/versions/4b544f5d3b07_2_1_3.py | 8 | CODE | |
| LOW | database/versions/4b544f5d3b07_2_1_3.py | 12 | CODE | |
| LOW | database/versions/eaf9cbc49027_2_0_7.py | 8 | CODE | |
| LOW | database/versions/bf28a012734c_2_0_8.py | 8 | CODE | |
| LOW | app/doctor/runner.py | 1 | CODE | |
| LOW | app/doctor/formatters.py | 1 | CODE | |
| LOW | app/doctor/models.py | 1 | CODE | |
| LOW | app/doctor/checks.py | 1 | CODE | |
| LOW | app/runtime/tasks.py | 3 | CODE | |
| LOW | app/runtime/log.py | 1 | CODE | |
| LOW | app/runtime/events.py | 32 | CODE | |
| LOW | app/runtime/stop.py | 3 | CODE | |
| LOW | app/runtime/webpush.py | 3 | CODE | |
| LOW | app/runtime/loop.py | 3 | CODE | |
| LOW | app/runtime/settings.py | 3 | CODE | |
| LOW | app/runtime/resources.py | 3 | CODE | |
| LOW | app/runtime/correlation.py | 3 | CODE | |
| LOW | app/runtime/dependencies.py | 3 | CODE | |
| LOW | app/runtime/native_dependencies.py | 3 | CODE | |
| LOW | app/runtime/compat/resource_imports.py | 3 | CODE | |
| LOW | app/runtime/capabilities/registry.py | 1 | CODE | |
| LOW | app/runtime/capabilities/__init__.py | 3 | CODE | |
| LOW | app/runtime/capabilities/runtime.py | 1 | CODE | |
| LOW | app/runtime/capabilities/model.py | 1 | CODE | |
| LOW | app/runtime/observability/__init__.py | 3 | CODE | |
| LOW | app/runtime/extensions/module_manager.py | 1 | CODE | |
| LOW | app/runtime/extensions/resource.py | 3 | CODE | |
| LOW | app/runtime/extensions/host_module_adapter.py | 1 | CODE | |
| LOW | app/runtime/extensions/module/dispatcher.py | 3 | CODE | |
| LOW | app/runtime/extensions/module/contracts.py | 3 | CODE | |
| LOW | app/runtime/extensions/module/quality.py | 3 | CODE | |
| LOW | app/runtime/extensions/plugin/catalog.py | 3 | CODE | |
| LOW | app/runtime/extensions/plugin/sync.py | 3 | CODE | |
| LOW | app/runtime/extensions/plugin/system.py | 3 | CODE | |
| LOW | app/runtime/extensions/plugin/metadata.py | 3 | CODE | |
| LOW | app/runtime/extensions/plugin/monitor.py | 3 | CODE | |
| LOW | app/runtime/extensions/plugin/paths.py | 3 | CODE | |
| LOW | app/runtime/extensions/plugin/tools.py | 3 | CODE | |
| LOW | app/runtime/extensions/plugin/loader.py | 3 | CODE | |
| LOW | app/runtime/extensions/plugin/lifecycle.py | 3 | CODE | |
| LOW | app/runtime/extensions/plugin/storage.py | 3 | CODE | |
| LOW | app/runtime/extensions/plugin/admission.py | 3 | CODE | |
| LOW | app/runtime/extensions/plugin/clone.py | 3 | CODE | |
| LOW | app/runtime/event/registry.py | 3 | CODE | |
| LOW | app/runtime/event/dispatch.py | 3 | CODE | |
| LOW | app/runtime/event/contracts.py | 3 | CODE | |
| LOW | app/runtime/event/errors.py | 3 | CODE | |
| LOW | app/runtime/event/binding.py | 3 | CODE | |
| LOW | app/runtime/event/snapshot.py | 3 | CODE | |
| LOW | app/chain/recommend.py | 3 | CODE | |
| LOW | app/chain/listenbrainz.py | 5 | CODE | |
| LOW | app/chain/listenbrainz.py | 5 | CODE | |
| 437 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL⚡ | app/modules/feishu/feishu.py | 1373 | response = self._api_client.cardkit.v1.card_element.content( | CODE |
| CRITICAL⚡ | app/modules/feishu/feishu.py | 1595 | response = self._api_client.im.v1.file.get( | CODE |
| CRITICAL⚡ | app/modules/feishu/feishu.py | 1609 | response = self._api_client.im.v1.message_resource.get( | CODE |
| CRITICAL | app/modules/feishu/feishu.py | 1265 | response = self._api_client.cardkit.v1.card.create( | CODE |
| CRITICAL | app/modules/feishu/feishu.py | 1403 | response = self._api_client.cardkit.v1.card.settings( | CODE |
| CRITICAL | app/modules/feishu/feishu.py | 1445 | response = self._api_client.im.v1.message.create(request) | CODE |
| CRITICAL | app/modules/feishu/feishu.py | 1491 | response = self._api_client.im.v1.message.reply(request) | CODE |
| CRITICAL | app/modules/feishu/feishu.py | 1531 | response = self._api_client.im.v1.image.create( | CODE |
| CRITICAL | app/modules/feishu/feishu.py | 1565 | response = self._api_client.im.v1.file.create( | CODE |
| CRITICAL | app/modules/feishu/feishu.py | 1582 | response = self._api_client.im.v1.image.get( | CODE |
| CRITICAL | app/modules/feishu/feishu.py | 1906 | response = self._api_client.im.v1.message.patch( | CODE |
| CRITICAL | app/modules/feishu/feishu.py | 1938 | response = self._api_client.im.v1.message_reaction.create( | CODE |
| CRITICAL | app/modules/feishu/feishu.py | 1972 | response = self._api_client.im.v1.message_reaction.delete( | CODE |
| CRITICAL⚡ | app/modules/rtorrent/rtorrent.py | 558 | self._proxy.throttle.down.max.set( | CODE |
| CRITICAL⚡ | app/modules/rtorrent/rtorrent.py | 563 | self._proxy.throttle.up.max.set( | CODE |
| CRITICAL | tests/test_feishu.py | 371 | client._api_client.im.v1.image.create.assert_called_once() | CODE |
| CRITICAL | tests/test_feishu.py | 686 | client._api_client.cardkit.v1.card_element.content.assert_called_once() | CODE |
| CRITICAL | tests/test_feishu.py | 745 | client._api_client.im.v1.image.create.assert_not_called() | CODE |
| CRITICAL | tests/test_feishu.py | 777 | client._api_client.im.v1.image.create.assert_not_called() | CODE |
| CRITICAL | tests/test_feishu.py | 806 | client._api_client.im.v1.image.create.assert_not_called() | CODE |
| CRITICAL | tests/test_feishu.py | 892 | client._api_client.im.v1.image.create.assert_not_called() | CODE |
| CRITICAL | tests/test_feishu.py | 1035 | client._api_client.im.v1.image.create.assert_called_once() | CODE |
| CRITICAL | tests/test_feishu.py | 1072 | client._api_client.im.v1.file.create.assert_called_once() | CODE |
| CRITICAL⚡ | tests/test_metainfo.py | 492 | r"Ha.Ha.Ha.Ha.Ha.2026.S06E([0-1][0-9]).Part1 => 哈哈哈哈哈 (2020){[tmdbid=112732;type=tv]} S06E\1.Part1 && S06 <> .Pa | CODE |
| CRITICAL⚡ | tests/test_rtorrent_compat.py | 81 | fake_proxy.throttle.down.max.set.assert_called_once_with( | CODE |
| CRITICAL⚡ | tests/test_rtorrent_compat.py | 85 | fake_proxy.throttle.up.max.set.assert_called_once_with( | CODE |
| CRITICAL⚡ | tests/test_rtorrent_compat.py | 108 | fake_proxy.throttle.down.max.set.assert_called_once_with( | CODE |
| CRITICAL⚡ | tests/test_rtorrent_compat.py | 112 | fake_proxy.throttle.up.max.set.assert_not_called() | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | app/agent/tools/impl/update_custom_identifiers.py | 54 | "4) Combined: '被替换词 => 替换词 && 前定位词 <> 后定位词 >> EP±N'; " | CODE |
| HIGH | app/adapters/network/browser.py | 868 | return style && style.visibility !== 'hidden' | CODE |
| HIGH | app/modules/themoviedb/tmdbapi.py | 1046 | "logo_path": null, | STRING |
| HIGH | app/modules/themoviedb/tmdbapi.py | 1052 | "logo_path": null, | STRING |
| HIGH | app/modules/themoviedb/tmdbapi.py | 1461 | "deathday": null, | STRING |
| HIGH⚡ | app/modules/douban/__init__.py | 924 | "last_episode_number": null, | STRING |
| HIGH⚡ | app/modules/douban/__init__.py | 925 | "interest_control_info": null, | STRING |
| HIGH⚡ | app/modules/douban/__init__.py | 933 | "head_info": null, | STRING |
| HIGH⚡ | app/modules/douban/__init__.py | 939 | "forum_info": null, | STRING |
| HIGH⚡ | app/modules/douban/__init__.py | 940 | "webisode": null, | STRING |
| HIGH | app/modules/douban/__init__.py | 986 | "user": null, | STRING |
| HIGH | app/modules/douban/__init__.py | 999 | "interest": null, | STRING |
| HIGH | app/modules/douban/__init__.py | 1072 | "raw": null, | STRING |
| HIGH | app/modules/douban/__init__.py | 1111 | "release_date": null, | STRING |
| HIGH | app/modules/douban/__init__.py | 1114 | "pre_playable_date": null, | STRING |
| HIGH | app/modules/douban/__init__.py | 1129 | "user": null, | STRING |
| HIGH | app/modules/douban/__init__.py | 1145 | "video": null, | STRING |
| HIGH | app/modules/vocechat/__init__.py | 123 | "expires_in": null, //消息过期时长,如果有大于0数字,说明该消息是个限时消息 | STRING |
| HIGH | app/modules/vocechat/__init__.py | 124 | "properties": null, //一些有关消息的元数据,比如at信息,文件消息的具体类型信息,如果是个图片消息,还会有一些宽高,图片名称等元信息 | STRING |
| HIGH | app/modules/filemanager/storages/alist.py | 450 | "hash_info": null, | STRING |
| HIGH | app/modules/filemanager/storages/alist.py | 658 | "hash_info": null, | STRING |
| HIGH | app/modules/indexer/spider/hddolby.py | 139 | "imdb_id": null, | STRING |
| HIGH⚡ | tests/test_metainfo.py | 467 | custom_words = ["旧名 => 新名 && 第 <> 集 >> EP+1"] | CODE |
| HIGH⚡ | tests/test_metainfo.py | 492 | r"Ha.Ha.Ha.Ha.Ha.2026.S06E([0-1][0-9]).Part1 => 哈哈哈哈哈 (2020){[tmdbid=112732;type=tv]} S06E\1.Part1 && S06 <> .Pa | CODE |
| HIGH⚡ | tests/test_metainfo.py | 511 | custom_words = ["旧名 => 新名 && 第 <> 集 >> EP+EP-1"] | CODE |
| HIGH⚡ | tests/test_metainfo.py | 523 | custom_words = ["旧名 => 新名 && 第 <> 集 >> 2EP"] | CODE |
| HIGH⚡ | tests/test_docker_entrypoint_permissions.py | 185 | resolve_browser_cache_dir || printf 'rejected\\n' | STRING |
| HIGH⚡ | tests/test_docker_entrypoint_permissions.py | 209 | resolve_browser_cache_dir || printf 'rejected\\n' | STRING |
| HIGH⚡ | tests/test_docker_entrypoint_permissions.py | 573 | MOVIEPILOT_BACKEND_READY_TIMEOUT=invalid wait_backend_ready 1 2 999999 || true | STRING |
| HIGH | tests/test_architecture_ci.py | 149 | assert "--output-format=json > pylint-report.json || true" in commands | CODE |
| HIGH⚡ | tests/test_docker_bootstrap.py | 1292 | restore_previous_payload || true | CODE |
| HIGH⚡ | tests/test_docker_bootstrap.py | 1294 | "$([[ -f "${{APP_DIR}}/app/new.py" ]] && printf current || printf missing)" \\ | CODE |
| HIGH⚡ | tests/test_docker_bootstrap.py | 1295 | "$([[ -f "${{APP_DIR}}/app/old.py" ]] && printf restored || printf absent)" \\ | CODE |
| HIGH⚡ | tests/test_docker_bootstrap.py | 1296 | "$([[ -d "${{UPDATE_PREVIOUS_APP}}" ]] && printf retained || printf moved)" \\ | CODE |
| HIGH⚡ | tests/test_docker_bootstrap.py | 1390 | swap_staged_payload || rollback_update_transaction | CODE |
| HIGH⚡ | tests/test_docker_bootstrap.py | 1392 | "$([[ -f "${{APP_DIR}}/app/old.py" ]] && printf old || printf missing)" \\ | CODE |
| HIGH⚡ | tests/test_docker_bootstrap.py | 1394 | "$([[ -f "${{UPDATE_PENDING_FILE}}" ]] && printf present || printf cleared)" | CODE |
| HIGH | tests/test_docker_bootstrap.py | 161 | 'source "$1"; source_bundle_is_trusted() { control_bundle_generation "$1" >/dev/null; }; launcher_main', | CODE |
| HIGH | tests/test_docker_bootstrap.py | 457 | source_bundle_is_trusted() {{ control_bundle_generation "$1" >/dev/null; }} | CODE |
| HIGH | tests/test_docker_bootstrap.py | 667 | source_bundle_is_trusted() {{ control_bundle_generation "$1" >/dev/null; }} | CODE |
| HIGH | tests/test_docker_bootstrap.py | 1192 | "$([[ -f "${{APP_DIR}}/app/old.py" ]] && printf old || printf missing)" \\ | CODE |
| HIGH | tests/test_docker_bootstrap.py | 1194 | "$([[ -f "${{CONFIG_DIR}}/temp/__update_pending__" ]] && printf present || printf cleared)" \\ | CODE |
| HIGH | tests/test_docker_bootstrap.py | 1241 | finalize_update_transaction || true | CODE |
| HIGH | tests/test_docker_bootstrap.py | 1242 | printf '%s\n' "$([[ -f "${{UPDATE_PENDING_FILE}}" ]] && printf present || printf missing)" | CODE |
| HIGH | tests/test_docker_bootstrap.py | 1428 | test_connectivity_package 0 || true | CODE |
| HIGH | tests/test_docker_bootstrap.py | 1037 | "count=$(cat \"${count_file}\" 2>/dev/null || printf '0')\n" | STRING |
| HIGH | tests/test_subscription_query_service.py | 123 | 'Subscribe|{"type":"电影","season":null,' | CODE |
| HIGH⚡ | tests/test_execute_command_tool.py | 140 | result = self._run_command("echo ok && rm -rf /") | CODE |
| HIGH⚡ | tests/test_execute_command_tool.py | 152 | tool.run(action="run", command="echo ok && shutdown now", timeout=1) | CODE |
| HIGH⚡ | tests/test_media_recognize_modules.py | 118 | self.assertEqual(result, "zh,en,null,ja") | CODE |
| HIGH | tests/test_publish_moviepilot_plugin_skill.py | 137 | payload = module.push( | CODE |
| HIGH⚡ | tests/test_rust_accel.py | 325 | meta = metainfo_module.MetaInfo("旧名 第03集", custom_words=["旧名 => 新名 && 第 <> 集 >> EP+1"]) | CODE |
| HIGH⚡ | tests/test_rust_accel.py | 330 | assert meta.apply_words == ["旧名 => 新名 && 第 <> 集 >> EP+1"] | CODE |
| HIGH⚡ | scripts/local_setup.py | 161 | const backendPort = Number(process.env.PORT || 3001) | STRING |
| HIGH⚡ | scripts/local_setup.py | 162 | const frontendPort = Number(process.env.NGINX_PORT || 3000) | STRING |
| HIGH⚡ | scripts/local_setup.py | 164 | const backendHealthTimeoutMs = Number(process.env.MOVIEPILOT_FRONTEND_HEALTH_TIMEOUT_MS || 3000) | STRING |
| HIGH⚡ | scripts/local_setup.py | 165 | const backendHealthIntervalMs = Number(process.env.MOVIEPILOT_FRONTEND_HEALTH_INTERVAL_MS || 15000) | STRING |
| HIGH⚡ | scripts/local_setup.py | 167 | Number(process.env.MOVIEPILOT_FRONTEND_MAX_FAILURES || 4), | STRING |
| HIGH | scripts/local_setup.py | 221 | return true | STRING |
| HIGH | scripts/local_setup.py | 228 | return false | STRING |
| 2 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | app/adapters/external/wechat_crypt.py | 10 | # ------------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | tests/test_transfer_overwrite_declined.py | 58 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_transfer_overwrite_declined.py | 60 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_transfer_overwrite_declined.py | 208 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_transfer_overwrite_declined.py | 210 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_tmdb_retry_and_errors.py | 49 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_tmdb_retry_and_errors.py | 51 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_tmdb_retry_and_errors.py | 168 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_tmdb_retry_and_errors.py | 170 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_transfer_history_gate.py | 51 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_transfer_history_gate.py | 53 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_transfer_history_gate.py | 129 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_transfer_history_gate.py | 131 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_transfer_history_gate.py | 308 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_transfer_history_gate.py | 310 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_transfer_history_gate.py | 367 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_transfer_history_gate.py | 369 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_transfer_history_gate.py | 385 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_transfer_history_gate.py | 387 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_transfer_history_gate.py | 410 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_transfer_history_gate.py | 412 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_transfer_history_gate.py | 481 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_transfer_history_gate.py | 483 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_transfer_history_gate.py | 281 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_transfer_history_gate.py | 283 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | skills/moviepilot-api/scripts/mp-api.py | 41 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | skills/moviepilot-api/scripts/mp-api.py | 43 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | skills/moviepilot-api/scripts/mp-api.py | 119 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | skills/moviepilot-api/scripts/mp-api.py | 121 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | skills/moviepilot-api/scripts/mp-api.py | 159 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | skills/moviepilot-api/scripts/mp-api.py | 161 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | skills/moviepilot-api/scripts/mp-api.py | 224 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | skills/moviepilot-api/scripts/mp-api.py | 226 | # --------------------------------------------------------------------------- | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app/monitor/__init__.py | 28 | __all__ = ["DirectoryChangeEvent", "LocalDirectoryWatcher", "Monitor"] | CODE |
| LOW | app/doctor/__init__.py | 30 | __all__ = [ | CODE |
| LOW | app/runtime/gc.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | app/runtime/log.py | 501 | def update_loggers(self) -> None: | CODE |
| LOW | app/runtime/events.py | 198 | def set_error_notifier(self, notifier: Optional[EventErrorNotifier]) -> None: | CODE |
| LOW | app/runtime/cache.py | 21 | logger = logging.getLogger(__name__) | CODE |
| LOW⚡ | app/runtime/extensions/plugin_manager.py | 940 | def set_plugin_settling(self, settling: bool) -> None: | CODE |
| LOW | app/runtime/extensions/plugin/registry.py | 91 | def set_settling(self, settling: bool) -> None: | CODE |
| LOW | app/runtime/event/snapshot.py | 116 | __all__ = ["EventPayloadSnapshot", "snapshot_event_data"] | CODE |
| LOW | app/scheduler/__init__.py | 28 | __all__ = ["Scheduler", "SchedulerChain"] | CODE |
| LOW | app/scheduler/reconcile.py | 365 | def update_workflow_job(self, workflow: WorkflowSnapshot) -> None: | CODE |
| LOW | app/scheduler/reconcile.py | 403 | def update_plugin_job(self, pid: str) -> None: | CODE |
| LOW | app/foundation/version.py | 6 | __all__ = ["compare_version"] | CODE |
| LOW | app/chain/listenbrainz.py | 13 | __all__ = [ | CODE |
| LOW | app/chain/workflow.py | 387 | def update_runtime_state(self) -> None: | CODE |
| LOW | app/chain/workflow.py | 400 | def set_node_state(self, action_id: str, state: str, message: Optional[str] = None) -> None: | CODE |
| LOW | app/chain/workflow.py | 720 | def update_progress(self) -> None: | CODE |
| LOW | app/chain/transfer/__init__.py | 28 | __all__ = ["TransferChain", "task_lock"] | CODE |
| LOW | app/chain/subscribe/__init__.py | 27 | __all__ = ["SubscribeChain"] | CODE |
| LOW | app/chain/download/__init__.py | 30 | __all__ = ["DownloadChain"] | CODE |
| LOW | app/agent/orchestrator.py | 1299 | def _set_event_value(event_data: Any, key: str, value: Any) -> None: | CODE |
| LOW | app/agent/contracts.py | 35 | __all__ = ["ReplyMode", "build_display_message"] | CODE |
| LOW | app/agent/middleware/runtime_config.py | 42 | __all__ = ["RuntimeConfigMiddleware"] | CODE |
| LOW | app/agent/middleware/subagents.py | 1310 | __all__ = [ | CODE |
| LOW | app/agent/middleware/skills.py | 605 | __all__ = ["SKILL_TOOL_NAME", "SkillMetadata", "SkillsMiddleware"] | CODE |
| LOW | app/agent/middleware/policy.py | 191 | __all__ = [ | CODE |
| LOW | app/agent/middleware/jobs.py | 308 | __all__ = [ | CODE |
| LOW | app/agent/middleware/activity_log.py | 756 | __all__ = [ | CODE |
| LOW | app/agent/middleware/usage.py | 603 | __all__ = ["UsageMiddleware"] | CODE |
| LOW | app/agent/tools/catalog.py | 184 | __all__ = [ | CODE |
| LOW | app/agent/tools/tags.py | 41 | __all__ = ["ToolTag"] | CODE |
| LOW | app/agent/tools/manager.py | 62 | def set_data_context(self, data: AgentDataContext) -> None: | CODE |
| LOW | app/agent/tools/impl/_terminal_session.py | 182 | def _set_nonblocking(fd: int) -> None: | CODE |
| LOW | app/agent/llm/__init__.py | 38 | __all__ = [ | CODE |
| LOW⚡ | app/agent/llm/helper.py | 1058 | def _set_metadata_attr(name: str, value: Any) -> None: | CODE |
| LOW | app/agent/skills/metadata.py | 8 | logger = logging.getLogger(__name__) | CODE |
| LOW | app/agent/policy/sanitizer.py | 1049 | __all__ = [ | CODE |
| LOW | app/agent/policy/registry.py | 196 | __all__ = [ | CODE |
| LOW | app/agent/policy/secret_fields.py | 69 | __all__ = ["is_secret_setting_key"] | CODE |
| LOW | app/agent/policy/orchestrator.py | 225 | __all__ = [ | CODE |
| LOW | app/agent/policy/contracts.py | 240 | __all__ = [ | CODE |
| LOW | app/schemas/query.py | 377 | __all__ = [ | CODE |
| LOW | app/testing/__init__.py | 14 | __all__ = ["stub_modules"] | CODE |
| LOW | app/adapters/network/browser.py | 64 | def set_extra_http_headers(self, headers: dict[str, str]) -> None: | CODE |
| LOW | app/adapters/network/browser.py | 68 | def set_default_timeout(self, timeout: int) -> None: | CODE |
| LOW | app/adapters/network/http.py | 412 | def update_headers(self, headers: dict[str, Any]) -> None: | CODE |
| LOW | app/adapters/network/http.py | 416 | def update_cookies(self, cookies: dict[str, Any]) -> None: | CODE |
| LOW | app/adapters/system/display/__init__.py | 40 | __all__ = ["DISPLAY_CAPABILITY_ID", "DisplayHelper", "VirtualDisplayResource"] | CODE |
| LOW | app/sdk/plugins.py | 7 | __all__ = ["ModuleManager", "PluginManager"] | CODE |
| LOW | app/sdk/logging.py | 6 | __all__ = ["logger"] | CODE |
| LOW | app/sdk/services.py | 17 | __all__ = [ | CODE |
| LOW | app/sdk/media.py | 41 | __all__ = [ | CODE |
| LOW | app/sdk/config.py | 6 | __all__ = ["global_vars", "settings"] | CODE |
| LOW | app/sdk/chain.py | 5 | __all__ = ["ChainBase"] | CODE |
| LOW | app/sdk/events.py | 24 | __all__ = [ | CODE |
| LOW | app/sdk/database.py | 6 | __all__ = [ | CODE |
| LOW | app/sdk/security.py | 36 | __all__ = [ | CODE |
| LOW | app/sdk/cache.py | 27 | __all__ = [ | CODE |
| LOW | app/sdk/browser.py | 34 | __all__ = ["launch_browser_context", "launch_browser_context_async"] | CODE |
| LOW | app/sdk/network.py | 13 | __all__ = [ | CODE |
| 62 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app/plugins/__init__.py | 337 | CODE | |
| LOW | app/runtime/cache.py | 821 | CODE | |
| LOW | app/chain/_recognition.py | 196 | CODE | |
| LOW | app/chain/_recognition.py | 315 | CODE | |
| LOW | app/chain/message.py | 248 | CODE | |
| LOW | app/chain/message.py | 447 | CODE | |
| LOW | app/chain/recommend.py | 303 | CODE | |
| LOW | app/chain/recommend.py | 357 | CODE | |
| LOW | app/chain/recommend.py | 486 | CODE | |
| LOW | app/chain/recommend.py | 514 | CODE | |
| LOW | app/chain/search.py | 325 | CODE | |
| LOW | app/chain/search.py | 359 | CODE | |
| LOW | app/chain/scraping.py | 995 | CODE | |
| LOW | app/chain/scraping.py | 1337 | CODE | |
| LOW | app/chain/base.py | 880 | CODE | |
| LOW | app/chain/base.py | 934 | CODE | |
| LOW | app/chain/base.py | 1059 | CODE | |
| LOW | app/chain/transfer/plan.py | 889 | CODE | |
| LOW | app/chain/transfer/workflow.py | 350 | CODE | |
| LOW | app/chain/transfer/workflow.py | 418 | CODE | |
| LOW | app/chain/transfer/history.py | 117 | CODE | |
| LOW | app/chain/subscribe/create.py | 464 | CODE | |
| LOW | app/chain/subscribe/create.py | 512 | CODE | |
| LOW | app/chain/subscribe/create.py | 598 | CODE | |
| LOW | app/chain/subscribe/notify.py | 98 | CODE | |
| LOW | app/chain/download/batch.py | 32 | CODE | |
| LOW | app/chain/download/batch.py | 65 | CODE | |
| LOW | app/chain/download/submission.py | 261 | CODE | |
| LOW | app/chain/download/submission.py | 295 | CODE | |
| LOW | app/agent/orchestrator.py | 399 | CODE | |
| LOW | app/agent/orchestrator.py | 2928 | CODE | |
| LOW | app/agent/middleware/subagents.py | 1128 | CODE | |
| LOW | app/agent/middleware/usage.py | 172 | CODE | |
| LOW | app/agent/tools/impl/update_subscribe.py | 139 | CODE | |
| LOW | app/agent/tools/impl/update_download_tasks.py | 124 | CODE | |
| LOW | app/agent/tools/impl/update_download_tasks.py | 258 | CODE | |
| LOW | app/agent/tools/impl/update_site.py | 102 | CODE | |
| LOW | app/agent/tools/impl/browse_webpage.py | 167 | CODE | |
| LOW | app/agent/tools/impl/add_subscribe.py | 180 | CODE | |
| LOW | app/agent/tools/impl/transfer_file.py | 124 | CODE | |
| LOW | app/agent/tools/impl/transfer_file.py | 226 | CODE | |
| LOW | app/agent/tools/impl/get_search_results.py | 74 | CODE | |
| LOW | app/agent/tools/impl/execute_command.py | 506 | CODE | |
| LOW | app/agent/tools/impl/query_popular_subscribes.py | 72 | CODE | |
| LOW | app/agent/tools/impl/get_recommendations.py | 128 | CODE | |
| LOW | app/agent/llm/provider.py | 1857 | CODE | |
| LOW | app/agent/llm/helper.py | 1145 | CODE | |
| LOW | app/agent/llm/helper.py | 1471 | CODE | |
| LOW | app/adapters/network/http.py | 353 | CODE | |
| LOW | app/adapters/network/http.py | 1030 | CODE | |
| LOW | app/db/models/transferhistory.py | 575 | CODE | |
| LOW | app/db/oper/message.py | 22 | CODE | |
| LOW | app/db/oper/message.py | 69 | CODE | |
| LOW | app/db/oper/agentchat.py | 207 | CODE | |
| LOW | app/db/oper/transferhistory.py | 360 | CODE | |
| LOW | app/api/endpoints/subscribe.py | 576 | CODE | |
| LOW | app/api/endpoints/subscribe.py | 771 | CODE | |
| LOW | app/api/endpoints/discover.py | 102 | CODE | |
| LOW | app/api/endpoints/discover.py | 133 | CODE | |
| LOW | app/api/endpoints/anilist.py | 64 | CODE | |
| 34 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app/modules/filemanager/storages/alipan.py | 464 | # Step 4: 转换为无符号int64 | COMMENT |
| LOW | app/modules/filemanager/storages/alipan.py | 479 | # Step 8: 读取文件范围数据并编码 | COMMENT |
| LOW | app/modules/filemanager/storages/u115.py | 621 | # Step 1: 初始化上传 | COMMENT |
| LOW | app/modules/filemanager/storages/u115.py | 647 | # Step 2: 处理二次认证 | COMMENT |
| LOW | app/modules/filemanager/storages/u115.py | 684 | # Step 3: 秒传 | COMMENT |
| LOW | app/modules/filemanager/storages/u115.py | 720 | # Step 4: 获取上传凭证 | COMMENT |
| LOW | app/modules/filemanager/storages/u115.py | 732 | # Step 5: 断点续传 | COMMENT |
| LOW | app/modules/filemanager/storages/u115.py | 749 | # Step 6: 对象存储上传 | COMMENT |
| LOW⚡ | skills/create-moviepilot-skill/SKILL.md | 43 | ### Step 1: Understand the Request | COMMENT |
| LOW⚡ | skills/create-moviepilot-skill/SKILL.md | 52 | ### Step 2: Check Existing Skills First | COMMENT |
| LOW⚡ | skills/create-moviepilot-skill/SKILL.md | 60 | ### Step 3: Choose the Skill ID and Path | COMMENT |
| LOW⚡ | skills/create-moviepilot-skill/SKILL.md | 67 | ### Step 4: Write Frontmatter Correctly | COMMENT |
| LOW | skills/create-moviepilot-skill/SKILL.md | 91 | ### Step 5: Write the Body | COMMENT |
| LOW | skills/create-moviepilot-skill/SKILL.md | 113 | ### Step 6: Add Supporting Files Only When They Help | COMMENT |
| LOW | skills/create-moviepilot-skill/SKILL.md | 121 | ### Step 7: Implement the Skill | COMMENT |
| LOW | skills/create-moviepilot-skill/SKILL.md | 135 | ### Step 8: Validate Before Finishing | COMMENT |
| LOW | skills/command-dispatch/SKILL.md | 39 | ### Step 1: Identify User Intent | COMMENT |
| LOW | skills/command-dispatch/SKILL.md | 46 | ### Step 2: Find Matching Command | COMMENT |
| LOW | skills/command-dispatch/SKILL.md | 57 | ### Step 3: Extract Parameters and Execute | COMMENT |
| LOW | skills/command-dispatch/SKILL.md | 66 | ### Step 4: Report Result | COMMENT |
| LOW⚡ | skills/generate-identifiers/SKILL.md | 135 | ### Step 1: Analyze the Problem | COMMENT |
| LOW⚡ | skills/generate-identifiers/SKILL.md | 143 | ### Step 2: Generate the Identifier Rule(s) | COMMENT |
| LOW⚡ | skills/generate-identifiers/SKILL.md | 151 | ### Step 3: Query Existing Identifiers | COMMENT |
| LOW⚡ | skills/generate-identifiers/SKILL.md | 159 | ### Step 4: Check for Duplicates | COMMENT |
| LOW⚡ | skills/generate-identifiers/SKILL.md | 166 | ### Step 5: Save the Updated Identifiers | COMMENT |
| LOW | skills/generate-identifiers/SKILL.md | 178 | ### Step 6: Verify (Optional) | COMMENT |
| LOW | skills/generate-identifiers/SKILL.md | 186 | ### Step 7: Report | COMMENT |
| LOW | skills/anysearch/README.md | 70 | ### Step 1: Detect available runtime | COMMENT |
| LOW | skills/anysearch/README.md | 88 | ### Step 2: Run entry test (probe all available runtimes) | COMMENT |
| LOW | skills/anysearch/README.md | 111 | ### Step 3: Persist recommended runtime to configuration file | COMMENT |
| LOW | skills/transfer-failed-retry/SKILL.md | 23 | ### Step 1: Query the Failed Transfer History | COMMENT |
| LOW | skills/transfer-failed-retry/SKILL.md | 44 | ### Step 2: Analyze the Failure Reason | COMMENT |
| LOW | skills/transfer-failed-retry/SKILL.md | 57 | ### Step 3: Delete the Failed History Record(s) | COMMENT |
| LOW | skills/transfer-failed-retry/SKILL.md | 65 | ### Step 4: Re-identify and Re-organize | COMMENT |
| LOW | skills/transfer-failed-retry/SKILL.md | 113 | ### Step 5: Report Result | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app/adapters/network/browser.py | 885 | || el.getAttribute('placeholder') | CODE |
| LOW | app/adapters/network/browser.py | 896 | placeholder: el.getAttribute('placeholder') || '', | CODE |
| LOW | tests/test_telegram.py | 40 | telegram = Telegram(TELEGRAM_TOKEN="fake_token", TELEGRAM_CHAT_ID="fake_chat_id") | CODE |
| LOW | tests/test_browser_helper.py | 125 | "placeholder": "", | CODE |
| LOW⚡ | tests/test_event_runtime_components.py | 53 | fake_name = "tests._fake_unloaded_plugin" | CODE |
| LOW⚡ | tests/test_event_runtime_components.py | 54 | fake_module = types.ModuleType(fake_name) | CODE |
| LOW⚡ | tests/test_event_runtime_components.py | 55 | sys.modules[fake_name] = fake_module | CODE |
| LOW | tests/test_event_runtime_components.py | 66 | del sys.modules[fake_name] | CODE |
| LOW⚡ | tests/test_event_runtime_components.py | 78 | sys.modules.pop(fake_name, None) | CODE |
| LOW⚡ | tests/test_event_runtime_components.py | 83 | fake_name = "tests._fake_unloaded_decorated_plugin" | CODE |
| LOW⚡ | tests/test_event_runtime_components.py | 84 | fake_module = types.ModuleType(fake_name) | CODE |
| LOW⚡ | tests/test_event_runtime_components.py | 85 | sys.modules[fake_name] = fake_module | CODE |
| LOW | tests/test_event_runtime_components.py | 101 | del sys.modules[fake_name] | CODE |
| LOW | tests/test_event_runtime_components.py | 112 | sys.modules.pop(fake_name, None) | CODE |
| LOW⚡ | tests/test_api_authorization.py | 307 | fake_user = SimpleNamespace() | CODE |
| LOW⚡ | tests/test_api_authorization.py | 316 | return fake_user | CODE |
| LOW⚡ | tests/test_api_authorization.py | 321 | fake_user.values = values | CODE |
| LOW⚡ | tests/test_api_authorization.py | 322 | return fake_user | CODE |
| LOW | tests/test_api_authorization.py | 338 | assert fake_user.values == {"avatar": "data:image/ico;base64,b'YXZhdGFy'"} | CODE |
| LOW | tests/test_agent_tool_result_policy.py | 490 | alias = AliasPath("placeholder") | CODE |
| LOW | tests/test_feedback_issue_scripts.py | 155 | "hunter2", "user@example.com", "/Users/alice/"): | CODE |
| LOW | scripts/local_setup.py | 2221 | "placeholder": str(param_conf.get("placeholder") or "").strip(), | CODE |
| LOW | scripts/local_setup.py | 2287 | placeholder = str(param_meta.get("placeholder") or "").strip() | CODE |
| LOW | skills/feedback-issue/scripts/feedback_issue_common.py | 75 | "lorem ipsum", "dolor sit amet", | CODE |
| LOW | skills/feedback-issue/scripts/feedback_issue_common.py | 75 | "lorem ipsum", "dolor sit amet", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app/monitor/dispatcher.py | 321 | if self._is_bluray_sub(event_path): | COMMENT |
| LOW | app/monitor/monitor.py | 81 | # 启动失败待重试的本地监控配置 | COMMENT |
| LOW | app/runtime/config.py | 121 | # RESOURCE_TOKEN过期时间 | COMMENT |
| LOW | app/runtime/config.py | 161 | DB_POSTGRESQL_HOST: str = "localhost" | COMMENT |
| LOW | app/runtime/config.py | 181 | # 异步连接池大小(每个被池化的事件循环) | COMMENT |
| LOW | app/runtime/config.py | 461 | TORRENT_TAG: str = "MOVIEPILOT" | COMMENT |
| LOW | app/runtime/config.py | 501 | # 本地文件操作是否走可强杀的子进程代理。 | COMMENT |
| LOW | app/db/session.py | 81 | # | COMMENT |
| LOW | app/db/session.py | 121 | COMMENT | |
| LOW | config/category.yaml | 1 | ####### 配置说明 ####### | COMMENT |
| LOW | config/category.yaml | 61 | # 12 Adventure | COMMENT |
| LOW | config/category.yaml | 81 | # 16 动画 | COMMENT |
| LOW | config/category.yaml | 101 | # ar 阿拉伯语 | COMMENT |
| LOW | config/category.yaml | 121 | # gl 加里西亚语 | COMMENT |
| LOW | config/category.yaml | 141 | # mk 马其顿语 | COMMENT |
| LOW | config/category.yaml | 161 | # sw 斯瓦希里语 | COMMENT |
| LOW | config/category.yaml | 181 | # AR 阿根廷 | COMMENT |
| LOW | config/category.yaml | 201 | # IT 意大利 | COMMENT |
| LOW | config/category.yaml | 221 | # TW 中国台湾 | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app/modules/filemanager/storages/alipan.py | 464 | # Step 4: 转换为无符号int64 | COMMENT |
| LOW | app/modules/filemanager/storages/alipan.py | 479 | # Step 8: 读取文件范围数据并编码 | COMMENT |
| LOW | app/modules/filemanager/storages/u115.py | 621 | # Step 1: 初始化上传 | COMMENT |
| LOW | app/modules/filemanager/storages/u115.py | 647 | # Step 2: 处理二次认证 | COMMENT |
| LOW | app/modules/filemanager/storages/u115.py | 684 | # Step 3: 秒传 | COMMENT |
| LOW | app/modules/filemanager/storages/u115.py | 720 | # Step 4: 获取上传凭证 | COMMENT |
| LOW | app/modules/filemanager/storages/u115.py | 732 | # Step 5: 断点续传 | COMMENT |
| LOW | app/modules/filemanager/storages/u115.py | 749 | # Step 6: 对象存储上传 | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app/agent/middleware/subagents.py | 472 | async def run_task( | CODE |
| LOW | app/startup/initializers/plugins.py | 582 | async def execute_task(loop, task_func, task_name): | CODE |
| LOW | tests/test_architecture_egress.py | 563 | def helper(client): | STRING |
| LOW | tests/test_architecture_baseline_cli.py | 382 | "def helper():\n" | CODE |
| LOW | tests/test_plugin_settlement_lifecycle.py | 25 | async def execute_task(_loop, task_func, _task_name): | CODE |
| LOW | tests/test_scheduler_progress.py | 146 | async def run_task(): | CODE |
| LOW | tests/test_scheduler_progress.py | 183 | async def run_task(): | CODE |
| LOW | tests/test_scheduler_progress.py | 215 | async def run_task(): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | skills/anysearch/scripts/shared/doc_spec.md | 210 | {{LANG_INVOKE}} search "climate change policy 2025" --api_key <your_api_key> --max_results 3 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_agent_background_output.py | 58 | CODE | |
| MEDIUM | tests/test_agent_background_output.py | 65 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app/modules/wechat/wechat.py | 422 | # Read file content into memory to avoid file handle issues | COMMENT |
| LOW | app/modules/telegram/telegram.py | 157 | # Check if we should process this message | COMMENT |