AI Slop Code RIsk Monitor

jiji262/douyin-downloader

A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖音批量下载工具,去水印,支持视频、图集、合集、音乐(原声)。

49.9 High pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for jiji262/douyin-downloader, a Python project with 12,254 GitHub stars. SynthScan examined 39,983 lines of code across 160 source files, recording 1339 pattern matches distributed across 14 syntactic categories. The legacy adjusted pattern signal is 49.9 (High 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.

49.9
Adjusted Signal
49.9
Raw Pattern Score
100%
Time Factor
2026-10-08
Last Push
12.3K
Stars
Python
Language
40.0K
Lines of Code
160
Files
1.3K
Pattern Hits
2026-10-12
Scan Date
0.24
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 67.0/100 · HIGH

Can maintainers explain intent, assumptions, and trade-offs? 903 finding(s).

Hallucinated Dependency & Supply Chain Risk 22.4/100 · LOW

Are imports declared and package/API names verified? 103 finding(s).

Agent Over-Engineering Ratio 88.6/100 · CRITICAL

Are wrappers, guards, and repeated structures necessary? 1192 finding(s).

PR Review Velocity Impact 90.7/100 · CRITICAL

Which changes need focused human review? 1339 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

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.

Severity Breakdown

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.

CRITICAL 0HIGH 38MEDIUM 187LOW 1114

Directory Score Breakdown

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.

Pattern Findings

The scanner identified 1339 distinct pattern matches across 14 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.

Hyper-Verbose Identifiers856 hits · 826 pts
SeverityFileLineSnippetContext
LOWtools/cookie_fetcher.py229async def wait_for_login_confirmation(page: Any, url: str, input_func: Any = input) -> None:CODE
LOWtools/cookie_fetcher.py335def extract_ms_token_from_text(text: str) -> Optional[str]:STRING
LOWcore/user_downloader.py193 async def _save_homepage_screenshot(CODE
LOWcore/user_downloader.py236 async def _resolve_user_info_logged(self, sec_uid: str, modes: List[str]) -> Dict[str, Any]:CODE
LOWcore/user_downloader.py520 async def _recover_user_post_with_browser(CODE
LOWcore/user_downloader.py676 def _browser_recovery_unavailable_reason(self) -> Optional[str]:CODE
LOWcore/user_downloader.py686 def _browser_backend_missing_reason() -> str:CODE
LOWcore/user_downloader.py701 def _post_recovery_limit_reached(CODE
LOWcore/mix_downloader.py22def derive_mix_collection_dir(mix_detail: Optional[Dict[str, Any]], mix_id: Any) -> str:CODE
LOWcore/mix_downloader.py161 def _stop_reason_for_empty_page(CODE
LOWcore/transcript_manager.py50def resolve_api_key_with_source(CODE
LOWcore/transcript_manager.py317 async def _call_openai_transcription(CODE
LOWcore/transcript_manager.py382 def _guess_video_content_type(video_path: Path) -> str:CODE
LOWcore/retry_executor.py70def _derive_url_type_for_factory(url_type: Optional[str]) -> str:CODE
LOW⚡core/api_client.py2108 async def _extract_aweme_ids_from_page(self, page) -> List[str]:CODE
LOWcore/api_client.py686 def _payload_from_bridge_result(self, result: Any, path: str, started: float) -> Dict[str, Any]:CODE
LOWcore/api_client.py793 def _bridge_answer_is_transient(result: Any, status: int) -> bool:CODE
LOWcore/api_client.py806 def _unavailable_paged_response(cls, *, item_keys: List[str]) -> Dict[str, Any]:CODE
LOWcore/api_client.py818 def _normalize_paged_response(CODE
LOWcore/api_client.py1028 async def _collect_user_series_as_mixes(CODE
LOWcore/api_client.py1152 async def _build_collect_page_params(self, max_cursor: int, count: int) -> Dict[str, Any]:CODE
LOWcore/api_client.py1321 def _normalize_live_room_response(raw: Dict[str, Any]) -> Optional[Dict[str, Any]]:CODE
LOWcore/api_client.py1352 def _extract_live_room_from_html(html: str) -> Optional[Dict[str, Any]]:CODE
LOWcore/api_client.py1368 async def _fetch_live_room_from_page(self, web_rid: str) -> Optional[Dict[str, Any]]:CODE
LOWcore/api_client.py1651 async def get_aweme_comment_replies(CODE
LOWcore/api_client.py1710 async def save_user_homepage_screenshot(CODE
LOWcore/api_client.py1824 def _emit_homepage_screenshot_request(CODE
LOWcore/api_client.py1856 async def collect_user_post_ids_via_browser(CODE
LOWcore/api_client.py2082 def pop_browser_post_aweme_items(self) -> Dict[str, Dict[str, Any]]:CODE
LOW⚡core/api_client.py2149 async def _wait_for_manual_verification(self, page, *, wait_timeout_seconds: int) -> None:STRING
LOWcore/video_downloader.py62 async def _collect_comments_for_existing_video(self, aweme_data: Dict[str, Any]) -> bool:CODE
LOWcore/downloader_base.py257 def _report_author_output_dir(CODE
LOWcore/downloader_base.py364 def _redownload_missing_files_enabled(self) -> bool:CODE
LOWcore/downloader_base.py370 async def _ensure_local_aweme_index(self) -> None:CODE
LOWcore/downloader_base.py425 def _mark_local_aweme_downloaded(self, aweme_id: str):CODE
LOWcore/downloader_base.py544 def _build_aweme_file_context(CODE
LOWcore/downloader_base.py600 async def _collect_comments_for_existing_aweme(CODE
LOWcore/downloader_base.py984 async def _download_video_with_fallback(CODE
LOWcore/downloader_base.py1046 async def _run_within_item_deadline(CODE
LOWcore/downloader_base.py1062 async def _download_first_available(CODE
LOWcore/downloader_base.py1141 def _build_video_url_candidates(CODE
LOWcore/downloader_base.py1178 def _partition_video_candidates(CODE
LOWcore/downloader_base.py1268 async def _maybe_promote_original_candidate(CODE
LOWcore/downloader_base.py1313 async def _probe_original_play_source(CODE
LOWcore/downloader_base.py1427 def _pick_highest_quality_play_addr(video: Dict[str, Any]) -> Optional[Dict[str, Any]]:CODE
LOWcore/downloader_base.py1436 def _pick_play_addr_by_quality(CODE
LOWcore/downloader_base.py1487 def _pick_preferred_play_addr(CODE
LOWcore/downloader_base.py1524 def _collect_image_url_candidates(self, aweme_data: Dict[str, Any]) -> List[List[str]]:CODE
LOWcore/downloader_base.py1606 def _collect_ranked_media_urls(*sources: Tuple[Any, Any, int]) -> List[str]:CODE
LOWcore/downloader_base.py1663 def _is_watermarked_media_url(url: str) -> bool:CODE
LOWcore/user_modes/post_strategy.py121 def _browser_recovery_available(self) -> bool:CODE
LOWcore/user_modes/post_strategy.py223 def _time_boundary_for_config(self) -> PostTimeBoundary:CODE
LOWcore/user_modes/post_strategy.py251 def _report_time_boundary_stop(self, page_number: int, raw_items_seen: int) -> None:CODE
LOWcore/user_modes/base_strategy.py59async def fetch_page_folding_bridge_failure(fetcher: Any, *args: Any, **kwargs: Any) -> Any:CODE
LOWcore/user_modes/base_strategy.py98def hard_page_failure_message(page: Dict[str, Any], detail: str) -> str:CODE
LOWcore/user_modes/base_strategy.py173 def _empty_page_failure_cause(cls, page: Dict[str, Any]) -> Optional[str]:CODE
LOWcore/user_modes/base_strategy.py193 def _raise_if_page_request_failed(CODE
LOWcore/user_modes/base_strategy.py229 def _media_type_filter_enabled(self) -> bool:CODE
LOWconfig/config_loader.py134 def _is_key_explicit_in_sources(sources: List[Dict[str, Any]], section: str, key: str) -> bool:CODE
LOWconfig/config_loader.py289 def _candidate_auto_cookie_paths(self) -> List[Path]:CODE
796 more matches not shown…
Decorative Section Separators182 hits · 693 pts
SeverityFileLineSnippetContext
MEDIUM⚡core/item_reasons.py15# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡core/item_reasons.py17# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡core/item_reasons.py27# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡core/item_reasons.py29# ---------------------------------------------------------------------------COMMENT
MEDIUMcore/item_reasons.py40# ---------------------------------------------------------------------------COMMENT
MEDIUMcore/item_reasons.py42# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡core/item_reasons.py56# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡core/item_reasons.py58# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡core/item_reasons.py63# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡core/item_reasons.py65# ---------------------------------------------------------------------------COMMENT
MEDIUMcore/item_reasons.py79# ---------------------------------------------------------------------------COMMENT
MEDIUMcore/item_reasons.py81# ---------------------------------------------------------------------------COMMENT
MEDIUMcore/audio_extraction.py23# ---------------------------------------------------------------------------COMMENT
MEDIUMcore/audio_extraction.py25# ---------------------------------------------------------------------------COMMENT
MEDIUMcore/audio_extraction.py76# ---------------------------------------------------------------------------COMMENT
MEDIUMcore/audio_extraction.py78# ---------------------------------------------------------------------------COMMENT
MEDIUMcore/audio_extraction.py222# ---------------------------------------------------------------------------COMMENT
MEDIUMcore/audio_extraction.py224# ---------------------------------------------------------------------------COMMENT
MEDIUMcore/transcript_manager.py194 # ------------------------------------------------------------------COMMENT
MEDIUMcore/transcript_manager.py200 # ------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_api_client.py1220# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_api_client.py1222# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_api_client.py861# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_api_client.py863# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_api_client.py1045# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_api_client.py1052# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_api_client.py1284# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_api_client.py1286# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_notifier_redactor_property.py80# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_notifier_redactor_property.py82# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_notifier_redactor_property.py131# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_notifier_redactor_property.py133# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_notifier_redactor_property.py180# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_notifier_redactor_property.py182# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_notifier_redactor_property.py216# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_notifier_redactor_property.py218# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_notifier_redactor_property.py266# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_notifier_redactor_property.py268# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_notifier_redactor_property.py51# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_notifier_redactor_property.py53# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_downloader_author_sec_uid.py44# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_downloader_author_sec_uid.py46# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_downloader_author_sec_uid.py74# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_downloader_author_sec_uid.py76# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_downloader_author_sec_uid.py350# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_downloader_author_sec_uid.py358# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_downloader_author_sec_uid.py251# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_downloader_author_sec_uid.py253# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_database.py258# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_database.py260# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_ms_token_manager.py112# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_ms_token_manager.py116# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_user_mode_strategies.py901# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_user_mode_strategies.py903# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_transcript_manager_audio.py198# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_transcript_manager_audio.py200# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_transcript_manager_audio.py313# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_transcript_manager_audio.py315# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_transcript_manager_audio.py356# ---------------------------------------------------------------------------COMMENT
MEDIUM⚡tests/test_transcript_manager_audio.py358# ---------------------------------------------------------------------------COMMENT
122 more matches not shown…
Cross-Language Confusion20 hits · 122 pts
SeverityFileLineSnippetContext
HIGHtools/cookie_fetcher.py294 if (typeof v === 'string' && v.trim()) values.push(v.trim());CODE
HIGH⚡core/api_client.py95 style.opacity !== "0" && rect.width > 0 && rect.height > 0 &&CODE
HIGH⚡core/api_client.py96 rect.bottom > 0 && rect.top < Math.max(window.innerHeight || 0, 900);CODE
HIGH⚡core/api_client.py96 rect.bottom > 0 && rect.top < Math.max(window.innerHeight || 0, 900);CODE
HIGH⚡core/api_client.py115 const text = normalize(element.innerText || element.textContent);CODE
HIGH⚡core/api_client.py116 if (!text || text.length > 1500) return null;CODE
HIGH⚡core/api_client.py116 if (!text || text.length > 1500) return null;CODE
HIGH⚡core/api_client.py122 if (!values[1] || Math.max(beforeCount, afterCount) < 2) return null;CODE
HIGH⚡core/api_client.py123 if (expectedNickname && !text.includes(expectedNickname)) return null;CODE
HIGH⚡core/api_client.py130 if (document.fonts && document.fonts.status !== "loaded") return reset();CODE
HIGH⚡core/api_client.py2114 if (!id || seen.has(id)) return;CODE
HIGH⚡core/api_client.py2116 result.push(id);CODE
HIGH⚡core/api_client.py2122 while ((match = pattern.exec(text)) !== null) {CODE
HIGHcore/api_client.py82 const bodyText = normalize(document.body.innerText || document.body.textContent);CODE
HIGHcore/api_client.py1356 args = json.loads(call[len("self.__pace_f.push(") : -1])CODE
HIGHtests/test_api_client.py453 html = f"<script>self.__pace_f.push({json.dumps([1, flight])})</script>"CODE
HIGHtests/test_api_client.py1187 """``{"aweme_list": null}`` 不是「空列表」,两者不能被归一化成同一个形状。STRING
HIGHtests/test_mix_downloader.py362 """``{"aweme_list": null}`` 走真实归一化层必须带出 ``items_missing``,STRING
HIGHtests/test_post_walk_completeness.py282 """``{"aweme_list": null}`` 经归一化后 items 也是 [],但它不是可信的空列表。"""STRING
HIGHcli/login_flow.py51 "\n pip install playwright && playwright install chromium"CODE
Excessive Try-Catch Wrapping112 hits · 104 pts
SeverityFileLineSnippetContext
LOWtools/cookie_fetcher.py110 except Exception:CODE
LOWtools/cookie_fetcher.py197 except Exception as exc:CODE
LOWtools/cookie_fetcher.py213 except Exception as exc:CODE
LOWtools/cookie_fetcher.py244 except Exception as exc:CODE
LOWtools/cookie_fetcher.py250 except Exception as exc:CODE
LOWtools/cookie_fetcher.py287 except Exception:CODE
LOWtools/cookie_fetcher.py329 except Exception:STRING
LOWcore/music_downloader.py208 except Exception as exc:CODE
LOWcore/music_downloader.py218 except Exception as exc:CODE
LOW⚡core/audio_extraction.py159 except Exception as exc: # imageio_ffmpeg raises RuntimeError onCODE
LOWcore/audio_extraction.py196 except Exception as exc:CODE
LOWcore/audio_extraction.py347 except Exception as exc: # pragma: no cover - defensiveCODE
LOWcore/audio_extraction.py353 except Exception as exc: # pragma: no cover - defensiveCODE
LOWcore/discovery.py81 except Exception: # noqa: BLE001CODE
LOWcore/user_downloader.py147 except Exception as exc: # noqa: BLE001 - 任何失败都归为"解析不出账号"CODE
LOWcore/user_downloader.py190 except Exception as exc:CODE
LOWcore/user_downloader.py225 except Exception as exc:CODE
LOWcore/user_downloader.py567 except Exception:CODE
LOWcore/user_downloader.py579 except Exception as exc:CODE
LOWcore/user_downloader.py584 except Exception as exc:CODE
LOWcore/user_downloader.py627 except Exception as exc:CODE
LOWcore/mix_downloader.py183 except Exception as exc:CODE
LOWcore/ffmpeg.py15 except Exception:CODE
LOWcore/transcript_manager.py152 except Exception:CODE
LOWcore/transcript_manager.py270 except Exception as exc:CODE
LOWcore/transcript_manager.py296 except Exception as exc: # noqa: BLE001 — broad is correct hereCODE
LOWcore/live_downloader.py112 except Exception as exc:CODE
LOWcore/live_downloader.py273 except Exception:CODE
LOWcore/live_downloader.py278 except Exception as exc:CODE
LOWcore/live_downloader.py328 except Exception as exc:CODE
LOWcore/comments_collector.py76 except Exception as exc:CODE
LOWcore/retry_executor.py181 except Exception:CODE
LOWcore/retry_executor.py189 except Exception:CODE
LOWcore/retry_executor.py213 except Exception:CODE
LOWcore/retry_executor.py230 except Exception:CODE
LOWcore/retry_executor.py242 except Exception as exc: # pragma: no cover — defensiveCODE
LOWcore/retry_executor.py259 except Exception:CODE
LOWcore/retry_executor.py268 except Exception:CODE
LOWcore/api_client.py24except Exception: # pragma: no cover - optional dependencyCODE
LOWcore/api_client.py509 except Exception as exc:CODE
LOWcore/api_client.py589 except Exception:CODE
LOWcore/api_client.py594 except Exception:CODE
LOWcore/api_client.py648 except Exception as exc:CODE
LOWcore/api_client.py787 except Exception as exc:CODE
LOWcore/api_client.py997 except Exception:CODE
LOWcore/api_client.py1382 except Exception as exc:CODE
LOWcore/api_client.py1647 except Exception as exc: # noqa: BLE001CODE
LOWcore/api_client.py1706 except Exception as e:CODE
LOWcore/api_client.py1726 except Exception as exc:CODE
LOWcore/api_client.py1787 except Exception as exc:CODE
LOWcore/api_client.py1794 except Exception:CODE
LOWcore/api_client.py1808 except Exception as exc:CODE
LOWcore/api_client.py1852 except Exception as exc:CODE
LOWcore/api_client.py1869 except Exception as exc:CODE
LOWcore/api_client.py1940 except Exception:CODE
LOWcore/api_client.py1970 except Exception as exc:CODE
LOWcore/api_client.py1979 except Exception:CODE
LOWcore/api_client.py2004 except Exception as exc:CODE
LOWcore/api_client.py2040 except Exception as exc:CODE
LOWcore/api_client.py2051 except Exception as exc:CODE
52 more matches not shown…
Empty Error Handlers18 hits · 90 pts
SeverityFileLineSnippetContext
HIGHtools/cookie_fetcher.py287except Exception:CODE
HIGHtools/cookie_fetcher.py329except Exception:CODE
HIGHtools/cookie_fetcher.py242except asyncio.CancelledError:CODE
HIGHcore/audio_extraction.py363except FileNotFoundError:CODE
HIGHcore/discovery.py81except Exception: # noqa: BLE001CODE
HIGHcore/live_downloader.py273except Exception:CODE
HIGHcore/retry_executor.py181except Exception:CODE
HIGHcore/retry_executor.py189except Exception:CODE
HIGHcore/retry_executor.py213except Exception:CODE
HIGHcore/retry_executor.py230except Exception:CODE
HIGHcore/retry_executor.py259except Exception:CODE
HIGHcore/retry_executor.py268except Exception:CODE
HIGHcore/api_client.py2158except Exception:CODE
HIGHcore/api_client.py1816except OSError:CODE
HIGHcore/api_client.py1979except Exception:CODE
HIGHcore/live_replay_downloader.py288except ProcessLookupError:CODE
HIGHcli/whisper_transcribe.py232except ImportError:CODE
HIGHcontrol/queue_manager.py104except ValueError:CODE
Unused Imports83 hits · 80 pts
SeverityFileLineSnippetContext
LOWcore/item_reasons.py11CODE
LOWcore/music_downloader.py1CODE
LOWcore/user_mode_registry.py1CODE
LOWcore/metadata.py9CODE
LOWcore/audio_extraction.py9CODE
LOWcore/discovery.py6CODE
LOWcore/discovery.py19CODE
LOWcore/user_downloader.py1CODE
LOWcore/mix_downloader.py1CODE
LOWcore/ffmpeg.py3CODE
LOWcore/__init__.py1CODE
LOWcore/__init__.py1CODE
LOWcore/__init__.py2CODE
LOWcore/__init__.py2CODE
LOWcore/__init__.py3CODE
LOWcore/__init__.py4CODE
LOWcore/__init__.py5CODE
LOWcore/live_downloader.py17CODE
LOWcore/comments_collector.py10CODE
LOWcore/comments_collector.py19CODE
LOWcore/comments_collector.py20CODE
LOWcore/retry_executor.py29CODE
LOWcore/api_client.py1CODE
LOWcore/live_replay_downloader.py3CODE
LOWcore/user_modes/post_strategy.py1CODE
LOWcore/user_modes/base_strategy.py1CODE
LOWcore/user_modes/base_strategy.py11CODE
LOWcore/user_modes/__init__.py1CODE
LOWcore/user_modes/__init__.py2CODE
LOWcore/user_modes/__init__.py3CODE
LOWcore/user_modes/__init__.py4CODE
LOWcore/user_modes/__init__.py5CODE
LOWcore/user_modes/__init__.py6CODE
LOWcore/user_modes/__init__.py7CODE
LOWcore/user_modes/post_time_boundary.py1CODE
LOWcore/user_modes/collect_strategy.py1CODE
LOWcore/user_modes/music_strategy.py1CODE
LOWcore/user_modes/collect_mix_strategy.py1CODE
LOWcore/user_modes/mix_strategy.py1CODE
LOWconfig/__init__.py1CODE
LOWconfig/__init__.py2CODE
LOWauth/__init__.py1CODE
LOWauth/__init__.py2CODE
LOWauth/ms_token_conf.py23CODE
LOWauth/ms_token_manager.py1CODE
LOWtests/test_notifier_redactor_property.py31CODE
LOWtests/test_downloader_author_sec_uid.py27CODE
LOWtests/test_downloader_output_dir_report.py9CODE
LOWtests/test_lvdetail_gate.py11CODE
LOWtests/test_transcript_manager_audio.py18CODE
LOWtests/test_time_window_overrides.py6CODE
LOWtests/test_manifest_author_fields.py22CODE
LOWtests/test_config_loader_save.py9CODE
LOWtests/test_comments_download_behavior.py3CODE
LOWtests/test_api_client_risk_control.py12CODE
LOWtests/test_silent_audio.py8CODE
LOWtests/test_database_top_authors.py30CODE
LOWtests/test_proxy_validator_parity.py30CODE
LOWtests/test_downloader_naming_templates.py11CODE
LOWtests/test_naming.py8CODE
23 more matches not shown…
Modern Structural Boilerplate21 hits · 20 pts
SeverityFileLineSnippetContext
LOWtools/cookie_fetcher.py369def update_config(config_path: Path, cookies: Dict[str, str]) -> None:STRING
LOWcore/audio_extraction.py369__all__ = [CODE
LOWcore/__init__.py7__all__ = [CODE
LOWcore/silent_audio.py110__all__ = ["SILENT_1S_MP3_BYTES"]CODE
LOWcore/downloader_base.py48 def update_step(self, step: str, detail: str = "") -> None: ...CODE
LOWcore/downloader_base.py50 def set_item_total(self, total: int, detail: str = "") -> None: ...CODE
LOWcore/downloader_base.py209 def _settle_crashed_item(self, item: Dict[str, Any], entry: Any) -> None:CODE
LOWcore/user_modes/__init__.py9__all__ = [CODE
LOWconfig/__init__.py4__all__ = ["ConfigLoader", "DEFAULT_CONFIG"]CODE
LOWauth/__init__.py4__all__ = ["CookieManager", "MsTokenManager"]CODE
LOWtests/test_downloader_output_dir_report.py27 def update_step(self, step: str, detail: str = "") -> None:CODE
LOWtests/test_downloader_output_dir_report.py30 def set_item_total(self, total: int, detail: str = "") -> None:CODE
LOWtests/test_video_downloader.py25 def update_step(self, step: str, detail: str = "") -> None:CODE
LOWtests/test_video_downloader.py28 def set_item_total(self, total: int, detail: str = "") -> None:CODE
LOWtests/test_user_downloader.py56 def update_step(self, step: str, detail: str = "") -> None:CODE
LOWtests/test_user_downloader.py59 def set_item_total(self, total: int, detail: str = "") -> None:CODE
LOWutils/__init__.py6__all__ = [CODE
LOWutils/logger.py62def set_console_log_level(level: int) -> None:CODE
LOWstorage/__init__.py5__all__ = ["Database", "FileManager", "MetadataHandler"]CODE
LOWcontrol/__init__.py5__all__ = ["RateLimiter", "RetryHandler", "QueueManager"]CODE
LOWcontrol/queue_manager.py52 def set_max_workers(self, value: int) -> None:CODE
Deep Nesting21 hits · 18 pts
SeverityFileLineSnippetContext
LOWcore/downloader_factory.py29CODE
LOWcore/user_downloader.py424CODE
LOWcore/mix_downloader.py38CODE
LOWcore/url_parser.py13CODE
LOWcore/retry_executor.py87CODE
LOWcore/api_client.py513CODE
LOWcore/api_client.py1710CODE
LOWcore/api_client.py1824CODE
LOWcore/api_client.py1856CODE
LOWcore/downloader_base.py399CODE
LOWcore/downloader_base.py632CODE
LOWcore/downloader_base.py1178CODE
LOWcore/user_modes/post_strategy.py154CODE
LOWcore/user_modes/base_strategy.py241CODE
LOWcore/user_modes/base_strategy.py343CODE
LOWconfig/config_loader.py67CODE
LOWconfig/config_loader.py183CODE
LOWutils/notifier.py82CODE
LOWcli/main.py40CODE
LOWcli/whisper_transcribe.py279CODE
LOWstorage/database.py73CODE
Verbosity Indicators6 hits · 13 pts
SeverityFileLineSnippetContext
LOW⚡core/audio_extraction.py153 # Step 1: resolve binary pathCOMMENT
LOWcore/audio_extraction.py175 # Step 2: probe `<ffmpeg> -version`COMMENT
LOW⚡cli/whisper_transcribe.py334 # Step 1: 提取音频COMMENT
LOW⚡cli/whisper_transcribe.py342 # Step 2: Whisper 识别COMMENT
LOW⚡cli/whisper_transcribe.py351 # Step 3: 繁转简COMMENT
LOW⚡cli/whisper_transcribe.py359 # Step 4: 写文件COMMENT
Structural Annotation Overuse6 hits · 13 pts
SeverityFileLineSnippetContext
LOW⚡core/audio_extraction.py153 # Step 1: resolve binary pathCOMMENT
LOWcore/audio_extraction.py175 # Step 2: probe `<ffmpeg> -version`COMMENT
LOW⚡cli/whisper_transcribe.py334 # Step 1: 提取音频COMMENT
LOW⚡cli/whisper_transcribe.py342 # Step 2: Whisper 识别COMMENT
LOW⚡cli/whisper_transcribe.py351 # Step 3: 繁转简COMMENT
LOW⚡cli/whisper_transcribe.py359 # Step 4: 写文件COMMENT
Over-Commented Block8 hits · 8 pts
SeverityFileLineSnippetContext
LOWconfig.example.yml121# 下载完成通知(可选)。providers 支持 bark / telegram / webhookCOMMENT
LOWcore/api_client.py41# backoff was tried and reverted: ``_request_json`` is the chokepoint forCOMMENT
LOWtests/test_notifier_redactor_property.py41COMMENT
LOWtests/test_notifier_redactor_property.py101 # Skip the middle-leak assertion when the middle is unavoidably aCOMMENT
LOWutils/xbogus.py1# ==============================================================================COMMENT
LOWutils/abogus.py861 # start = time.time()COMMENT
LOWcli/__init__.py1# cli package — entry point is cli.main:main (see pyproject.toml).COMMENT
LOWstorage/file_manager.py21_SEC_UID_ILLEGAL_RE = re.compile(r'[<>:"/\\|?*\x00-\x1f]')COMMENT
AI Slop Vocabulary2 hits · 5 pts
SeverityFileLineSnippetContext
MEDIUMtests/test_time_window_overrides.py14 class _Stub(BaseDownloader): # pragma: no cover - thin harnessCODE
MEDIUMcli/main.py158 # crashing the whole batch. Keeps multi-URL CLI runs robust whileCOMMENT
AI Structural Patterns3 hits · 3 pts
SeverityFileLineSnippetContext
LOWcore/retry_executor.py87CODE
LOWstorage/database.py371CODE
LOWstorage/file_manager.py159CODE
Self-Referential Comments1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMutils/xbogus.py4# This file is part of the Douyin_TikTok_Download_API project.COMMENT