AI Slop Code RIsk Monitor

NanmiCoder/MediaCrawler

小红书笔记 | 评论爬虫、抖音视频 | 评论爬虫、快手视频 | 评论爬虫、B 站视频 | 评论爬虫、微博帖子 | 评论爬虫、百度贴吧帖子 | 百度贴吧评论回复爬虫 | 知乎问答文章|评论爬虫

32.3 High pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for NanmiCoder/MediaCrawler, a Python project with 66,603 GitHub stars. SynthScan examined 56,313 lines of code across 290 source files, recording 1157 pattern matches distributed across 16 syntactic categories. The legacy adjusted pattern signal is 32.3 (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.

32.3
Adjusted Signal
32.3
Raw Pattern Score
100%
Time Factor
2026-10-10
Last Push
66.6K
Stars
Python
Language
56.3K
Lines of Code
290
Files
1.2K
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 64.2/100 · HIGH

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

Hallucinated Dependency & Supply Chain Risk 16.8/100 · LOW

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

Agent Over-Engineering Ratio 51.2/100 · HIGH

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

PR Review Velocity Impact 81.2/100 · CRITICAL

Which changes need focused human review? 1157 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 71MEDIUM 184LOW 902

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 1157 distinct pattern matches across 16 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.

Self-Referential Comments180 hits · 540 pts
SeverityFileLineSnippetContext
MEDIUMrecv_sms.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMvar.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMmain.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMdatabase/db.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMdatabase/models.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMdatabase/mongodb_store_base.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMdatabase/__init__.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMdatabase/db_session.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMtools/crawler_util.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMtools/async_file_writer.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMtools/easing.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMtools/__init__.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMtools/utils.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMtools/slider_util.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMtools/words.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMtools/browser_launcher.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMtools/cdp_browser.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMtools/app_runner.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMtools/time_util.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMtools/file_header_manager.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMtools/file_header_manager.py81# This file is part of MediaCrawler project.COMMENT
MEDIUMproxy/__init__.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMproxy/types.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMproxy/proxy_mixin.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMproxy/proxy_ip_pool.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMproxy/base_proxy.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMproxy/providers/__init__.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMproxy/providers/kuaidl_proxy.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMproxy/providers/jishu_http_proxy.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMproxy/providers/wandou_http_proxy.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMcache/local_cache.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMcache/__init__.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMcache/abs_cache.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMcache/cache_factory.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMcache/redis_cache.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMtest/test_utils.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMtest/test_db_sync.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMtest/test_expiring_local_cache.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMtest/__init__.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMtest/test_redis_cache.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMtest/test_proxy_ip_pool.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMtest/test_mongodb_integration.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMconfig/zhihu_config.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMconfig/base_config.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMconfig/ks_config.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMconfig/__init__.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMconfig/dy_config.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMconfig/tieba_config.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMconfig/xhs_config.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMconfig/db_config.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMconfig/weibo_config.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMconfig/bilibili_config.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMtests/conftest.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMtests/test_media_e2e.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMtests/test_store_factory.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMtests/test_douyin_argus_header.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMtests/test_kuaishou_unavailable_video.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMtests/test_media_ffmpeg.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMtests/test_cmd_arg_media.py4# This file is part of MediaCrawler project.COMMENT
MEDIUMtests/test_excel_store.py4# This file is part of MediaCrawler project.COMMENT
120 more matches not shown…
Hyper-Verbose Identifiers360 hits · 351 pts
SeverityFileLineSnippetContext
LOWrecv_sms.py46def extract_verification_code(message: str) -> str:CODE
LOW⚡main.py86async def _generate_wordcloud_if_needed() -> None:CODE
LOWdatabase/db_session.py31async def create_database_if_not_exists(db_type: str):CODE
LOWtools/crawler_util.py66async def find_qrcode_img_from_canvas(page: Page, canvas_selector: str) -> str:CODE
LOWtools/crawler_util.py148async def convert_browser_context_cookies(CODE
LOWtools/crawler_util.py159def convert_str_cookie_to_dict(cookie_str: str) -> Dict:CODE
LOWtools/crawler_util.py177def match_interact_info_count(count_str: str) -> int:CODE
LOWtools/crawler_util.py226def extract_url_params_to_dict(url: str) -> Dict:CODE
LOWtools/async_file_writer.py62 async def write_single_item_to_json(self, item: Dict, item_type: str):CODE
LOWtools/async_file_writer.py82 async def generate_wordcloud_from_comments(self):CODE
LOWtools/words.py50 async def generate_word_frequency_and_cloud(self, data, save_words_prefix):CODE
LOWtools/cdp_browser.py47 def _register_cleanup_handlers(self):CODE
LOWtools/cdp_browser.py140 async def _connect_existing_browser(CODE
LOWtools/cdp_browser.py288 async def _get_browser_websocket_url(self, debug_port: int) -> str:CODE
LOWtools/time_util.py60def get_time_str_from_unix_time(unixtime):CODE
LOWtools/time_util.py71def get_date_str_from_unix_time(unixtime):CODE
LOWtools/time_util.py82def get_unix_time_from_time_str(time_str):CODE
LOWtools/file_header_manager.py67def generate_copyright_header(relative_path: str) -> str:CODE
LOWproxy/proxy_mixin.py57 async def _refresh_proxy_if_expired(self) -> None:CODE
LOWtest/test_utils.py38async def test_convert_browser_context_cookies_uses_url_filter():CODE
LOWtest/test_proxy_ip_pool.py94 async def test_proxy_pool_auto_refresh(self):CODE
LOWtest/test_proxy_ip_pool.py136 async def test_ip_expiration_standalone(self):CODE
LOWtest/test_proxy_ip_pool.py271 async def test_create_ip_pool_unknown_provider_raises_value_error(self):CODE
LOWtest/test_mongodb_integration.py222 def test_xhs_store_implementation(self):CODE
LOWtest/test_mongodb_integration.py274 def test_douyin_store_implementation(self):CODE
LOWtest/test_mongodb_integration.py319 def test_concurrent_operations(self):CODE
LOWtests/test_weibo_no_user_info.py124def test_weibo_note_masks_user_info():CODE
LOWtests/test_weibo_no_user_info.py164def test_weibo_comment_masks_user_info():CODE
LOWtests/test_weibo_no_user_info.py203def test_weibo_store_end_to_end_sqlite():CODE
LOWtests/test_cmd_arg_tieba.py10async def test_tieba_detail_cli_sets_specified_ids():CODE
LOWtests/test_cmd_arg_tieba.py26async def test_tieba_creator_cli_sets_creator_urls():CODE
LOWtests/test_cmd_arg_tieba.py45async def test_tieba_detail_reads_runtime_specified_ids(monkeypatch):CODE
LOWtests/test_media_e2e.py60async def test_bilibili_downloads_cover_and_video(tmp_path: Path):CODE
LOWtests/test_xhs_raw_response_errors.py40async def test_raw_response_rejects_access_http_status(monkeypatch, status_code):CODE
LOWtests/test_xhs_raw_response_errors.py75async def test_raw_response_rejects_known_business_block(CODE
LOWtests/test_xhs_raw_response_errors.py105async def test_raw_response_keeps_successful_html(monkeypatch):CODE
LOWtests/test_xhs_raw_response_errors.py126async def test_successful_json_keeps_raw_and_parsed_return_modes(monkeypatch):CODE
LOWtests/test_xhs_raw_response_errors.py157async def test_html_detail_does_not_multiply_transport_retries(monkeypatch):CODE
LOWtests/test_xhs_raw_response_errors.py179async def test_html_detail_still_retries_parse_failures():CODE
LOWtests/test_store_factory.py67 def test_create_mongodb_store(self):CODE
LOWtests/test_store_factory.py87 def test_invalid_store_option(self):CODE
LOWtests/test_store_factory.py94 def test_all_stores_registered(self):CODE
LOWtests/test_static_proxy_provider.py9def test_default_proxy_provider_remains_existing_provider():CODE
LOWtests/test_static_proxy_provider.py16async def test_static_proxy_provider_parses_proxy_url(monkeypatch):CODE
LOWtests/test_static_proxy_provider.py32async def test_static_proxy_provider_rejects_invalid_url(monkeypatch):CODE
LOWtests/test_static_proxy_provider.py41async def test_static_proxy_pool_disables_validation(monkeypatch):CODE
LOWtests/test_api_limits.py12async def test_cmd_arg_crawler_max_notes_count():CODE
LOWtests/test_api_limits.py29def test_crawler_manager_build_command():CODE
LOWtests/test_api_limits.py66def test_crawler_manager_passes_media_switch():CODE
LOWtests/test_api_limits.py91def test_api_schema_exposes_media_switch_default_off():CODE
LOWtests/test_api_limits.py94def test_api_start_crawler_with_limits():CODE
LOWtests/test_api_limits.py119def test_api_start_crawler_without_limits():CODE
LOWtests/test_api_limits.py152def test_api_rejects_invalid_limits(field_name, value):CODE
LOW⚡tests/test_douyin_argus_header.py47def test_argus_header_is_present_by_default():CODE
LOW⚡tests/test_douyin_argus_header.py54def test_uifid_header_comes_from_cookie():CODE
LOW⚡tests/test_douyin_argus_header.py61def test_uifid_header_falls_back_to_uifid_temp():CODE
LOW⚡tests/test_douyin_argus_header.py68def test_missing_uifid_omits_header():CODE
LOW⚡tests/test_douyin_argus_header.py76def test_caller_supplied_values_win():CODE
LOWtests/test_kuaishou_unavailable_video.py83async def test_unavailable_video_is_skipped_instead_of_crashing():CODE
LOWtests/test_kuaishou_unavailable_video.py95async def test_missing_photo_key_is_also_skipped():CODE
300 more matches not shown…
Cross-File Repetition49 hits · 245 pts
SeverityFileLineSnippetContext
HIGHmedia_platform/bilibili/login.py0check if the current login status is successful and return true otherwise return false retry decorator will retry 20 timSTRING
HIGHmedia_platform/weibo/login.py0check if the current login status is successful and return true otherwise return false retry decorator will retry 20 timSTRING
HIGHmedia_platform/kuaishou/login.py0check if the current login status is successful and return true otherwise return false retry decorator will retry 20 timSTRING
HIGHmedia_platform/xhs/client.py0update cookies method provided by api client, typically called after successful login args: browser_context: browser conSTRING
HIGHmedia_platform/tieba/client.py0update cookies method provided by api client, typically called after successful login args: browser_context: browser conSTRING
HIGHmedia_platform/zhihu/client.py0update cookies method provided by api client, typically called after successful login args: browser_context: browser conSTRING
HIGHmedia_platform/xhs/core.py0search for notes and retrieve their comment information. returns:STRING
HIGHmedia_platform/zhihu/core.py0search for notes and retrieve their comment information. returns:STRING
HIGHmedia_platform/tieba/core.py0search for notes and retrieve their comment information. returns:STRING
HIGHmedia_platform/xhs/core.py0concurrently obtain the specified post list and save the dataSTRING
HIGHmedia_platform/douyin/core.py0concurrently obtain the specified post list and save the dataSTRING
HIGHmedia_platform/kuaishou/core.py0concurrently obtain the specified post list and save the dataSTRING
HIGHmedia_platform/weibo/core.py0媒体请求头:平台 referer(防盗链)+ ua。 client.headers 里含 cookie,不能整体透传到 cdn 请求上,因此只取 ua。STRING
HIGHmedia_platform/douyin/core.py0媒体请求头:平台 referer(防盗链)+ ua。 client.headers 里含 cookie,不能整体透传到 cdn 请求上,因此只取 ua。STRING
HIGHmedia_platform/kuaishou/core.py0媒体请求头:平台 referer(防盗链)+ ua。 client.headers 里含 cookie,不能整体透传到 cdn 请求上,因此只取 ua。STRING
HIGHmedia_platform/weibo/core.py0get creator's information and their notes and comments returns:STRING
HIGHmedia_platform/tieba/core.py0get creator's information and their notes and comments returns:STRING
HIGHmedia_platform/zhihu/core.py0get creator's information and their notes and comments returns:STRING
HIGHstore/bilibili/_store_impl.py0content json storage implementation args: content_item: returns:STRING
HIGHstore/weibo/_store_impl.py0content json storage implementation args: content_item: returns:STRING
HIGHstore/douyin/_store_impl.py0content json storage implementation args: content_item: returns:STRING
HIGHstore/kuaishou/_store_impl.py0content json storage implementation args: content_item: returns:STRING
HIGHstore/zhihu/_store_impl.py0content json storage implementation args: content_item: returns:STRING
HIGHstore/bilibili/_store_impl.py0comment json storage implementation args: comment_item: returns:STRING
HIGHstore/weibo/_store_impl.py0comment json storage implementation args: comment_item: returns:STRING
HIGHstore/douyin/_store_impl.py0comment json storage implementation args: comment_item: returns:STRING
HIGHstore/kuaishou/_store_impl.py0comment json storage implementation args: comment_item: returns:STRING
HIGHstore/zhihu/_store_impl.py0comment json storage implementation args: comment_item: returns:STRING
HIGHstore/bilibili/_store_impl.py0creator json storage implementation 教学版:不采集/持久化创作者个人信息,空操作。 args: creator: returns:STRING
HIGHstore/douyin/_store_impl.py0creator json storage implementation 教学版:不采集/持久化创作者个人信息,空操作。 args: creator: returns:STRING
HIGHstore/weibo/_store_impl.py0creator json storage implementation 教学版:不采集/持久化创作者个人信息,空操作。 args: creator: returns:STRING
HIGHstore/bilibili/_store_impl.py0store content to mongodb args: content_item: content dataSTRING
HIGHstore/douyin/_store_impl.py0store content to mongodb args: content_item: content dataSTRING
HIGHstore/kuaishou/_store_impl.py0store content to mongodb args: content_item: content dataSTRING
HIGHstore/xhs/_store_impl.py0store content to mongodb args: content_item: content dataSTRING
HIGHstore/weibo/_store_impl.py0store content to mongodb args: content_item: content dataSTRING
HIGHstore/tieba/_store_impl.py0store content to mongodb args: content_item: content dataSTRING
HIGHstore/zhihu/_store_impl.py0store content to mongodb args: content_item: content dataSTRING
HIGHstore/bilibili/_store_impl.py0store comment to mongodb args: comment_item: comment dataSTRING
HIGHstore/xhs/_store_impl.py0store comment to mongodb args: comment_item: comment dataSTRING
HIGHstore/weibo/_store_impl.py0store comment to mongodb args: comment_item: comment dataSTRING
HIGHstore/tieba/_store_impl.py0store comment to mongodb args: comment_item: comment dataSTRING
HIGHstore/douyin/_store_impl.py0store comment to mongodb args: comment_item: comment dataSTRING
HIGHstore/kuaishou/_store_impl.py0store comment to mongodb args: comment_item: comment dataSTRING
HIGHstore/zhihu/_store_impl.py0store comment to mongodb args: comment_item: comment dataSTRING
HIGHstore/weibo/_store_impl.py0calculate the prefix sorting number for data save files, supporting writing to different files for each run args: file_sSTRING
HIGHstore/tieba/_store_impl.py0calculate the prefix sorting number for data save files, supporting writing to different files for each run args: file_sSTRING
HIGHstore/kuaishou/_store_impl.py0calculate the prefix sorting number for data save files, supporting writing to different files for each run args: file_sSTRING
HIGHstore/zhihu/_store_impl.py0calculate the prefix sorting number for data save files, supporting writing to different files for each run args: file_sSTRING
Unused Imports176 hits · 174 pts
SeverityFileLineSnippetContext
LOWmain.py32CODE
LOWdatabase/db.py23CODE
LOWdatabase/models.py27CODE
LOWdatabase/models.py29CODE
LOWtools/crawler_util.py27CODE
LOWtools/crawler_util.py35CODE
LOWtools/async_file_writer.py24CODE
LOWtools/utils.py24CODE
LOWtools/utils.py25CODE
LOWtools/utils.py26CODE
LOWtools/browser_launcher.py28CODE
LOWtools/browser_launcher.py29CODE
LOWtools/app_runner.py21CODE
LOWproxy/__init__.py25CODE
LOWproxy/proxy_mixin.py31CODE
LOWproxy/proxy_ip_pool.py29CODE
LOWproxy/providers/__init__.py25CODE
LOWproxy/providers/__init__.py26CODE
LOWproxy/providers/__init__.py27CODE
LOWproxy/providers/kuaidl_proxy.py29CODE
LOWproxy/providers/jishu_http_proxy.py28CODE
LOWproxy/providers/wandou_http_proxy.py28CODE
LOWtest/test_db_sync.py27CODE
LOWconfig/base_config.py146CODE
LOWconfig/base_config.py147CODE
LOWconfig/base_config.py148CODE
LOWconfig/base_config.py149CODE
LOWconfig/base_config.py150CODE
LOWconfig/base_config.py151CODE
LOWconfig/base_config.py152CODE
LOWconfig/__init__.py21CODE
LOWconfig/__init__.py22CODE
LOWtests/test_media_e2e.py21CODE
LOWtests/test_store_factory.py24CODE
LOWtests/test_store_factory.py27CODE
LOWtests/test_douyin_argus_header.py21CODE
LOWtests/test_douyin_argus_header.py23CODE
LOWtests/test_kuaishou_unavailable_video.py22CODE
LOWtests/test_media_ffmpeg.py16CODE
LOWtests/test_cmd_arg_media.py16CODE
LOWtests/test_excel_store.py25CODE
LOWtests/test_excel_store.py26CODE
LOWtests/test_kuaishou_url_parse.py21CODE
LOWtests/test_media_core_integration.py16CODE
LOWtests/media_server.py20CODE
LOWtests/test_douyin_aweme_detail_params.py21CODE
LOWtests/test_media_extractors.py16CODE
LOWtests/test_media_downloader.py16CODE
LOWtests/test_bilibili_login_state.py20CODE
LOWcmd_arg/__init__.py21CODE
LOWcmd_arg/arg.py21CODE
LOWmedia_platform/bilibili/media.py29CODE
LOWmedia_platform/bilibili/client.py30CODE
LOWmedia_platform/bilibili/client.py40CODE
LOWmedia_platform/bilibili/__init__.py26CODE
LOWmedia_platform/xhs/media.py26CODE
LOWmedia_platform/xhs/client.py23CODE
LOWmedia_platform/xhs/client.py25CODE
LOWmedia_platform/xhs/client.py42CODE
LOWmedia_platform/xhs/__init__.py21CODE
116 more matches not shown…
Over-Commented Block169 hits · 168 pts
SeverityFileLineSnippetContext
LOWrecv_sms.py1# -*- coding: utf-8 -*-COMMENT
LOWvar.py1# -*- coding: utf-8 -*-COMMENT
LOWmain.py1# -*- coding: utf-8 -*-COMMENT
LOWdatabase/db.py1# -*- coding: utf-8 -*-COMMENT
LOWdatabase/models.py1# -*- coding: utf-8 -*-COMMENT
LOWdatabase/mongodb_store_base.py1# -*- coding: utf-8 -*-COMMENT
LOWdatabase/__init__.py1# -*- coding: utf-8 -*-COMMENT
LOWdatabase/db_session.py1# -*- coding: utf-8 -*-COMMENT
LOWtools/crawler_util.py1# -*- coding: utf-8 -*-COMMENT
LOWtools/async_file_writer.py1# -*- coding: utf-8 -*-COMMENT
LOWtools/easing.py1# -*- coding: utf-8 -*-COMMENT
LOWtools/__init__.py1# -*- coding: utf-8 -*-COMMENT
LOWtools/utils.py1# -*- coding: utf-8 -*-COMMENT
LOWtools/slider_util.py1# -*- coding: utf-8 -*-COMMENT
LOWtools/words.py1# -*- coding: utf-8 -*-COMMENT
LOWtools/browser_launcher.py1# -*- coding: utf-8 -*-COMMENT
LOWtools/cdp_browser.py1# -*- coding: utf-8 -*-COMMENT
LOWtools/app_runner.py1# -*- coding: utf-8 -*-COMMENT
LOWtools/time_util.py1# -*- coding: utf-8 -*-COMMENT
LOWtools/file_header_manager.py1# -*- coding: utf-8 -*-COMMENT
LOWproxy/__init__.py1# -*- coding: utf-8 -*-COMMENT
LOWproxy/__init__.py21# -*- coding: utf-8 -*-COMMENT
LOWproxy/types.py1# -*- coding: utf-8 -*-COMMENT
LOWproxy/proxy_mixin.py1# -*- coding: utf-8 -*-COMMENT
LOWproxy/proxy_ip_pool.py1# -*- coding: utf-8 -*-COMMENT
LOWproxy/base_proxy.py1# -*- coding: utf-8 -*-COMMENT
LOWproxy/providers/__init__.py1# -*- coding: utf-8 -*-COMMENT
LOWproxy/providers/kuaidl_proxy.py1# -*- coding: utf-8 -*-COMMENT
LOWproxy/providers/jishu_http_proxy.py1# -*- coding: utf-8 -*-COMMENT
LOWproxy/providers/wandou_http_proxy.py1# -*- coding: utf-8 -*-COMMENT
LOWcache/local_cache.py1# -*- coding: utf-8 -*-COMMENT
LOWcache/__init__.py1# -*- coding: utf-8 -*-COMMENT
LOWcache/abs_cache.py1# -*- coding: utf-8 -*-COMMENT
LOWcache/cache_factory.py1# -*- coding: utf-8 -*-COMMENT
LOWcache/redis_cache.py1# -*- coding: utf-8 -*-COMMENT
LOWtest/test_utils.py1# -*- coding: utf-8 -*-COMMENT
LOWtest/test_db_sync.py1# -*- coding: utf-8 -*-COMMENT
LOWtest/test_db_sync.py221# [*] Changed tables:COMMENT
LOWtest/test_db_sync.py241# >>> Manual confirmation required: Synchronize ORM model to MySQL database? (y/N): yCOMMENT
LOWtest/test_expiring_local_cache.py1# -*- coding: utf-8 -*-COMMENT
LOWtest/__init__.py1# -*- coding: utf-8 -*-COMMENT
LOWtest/test_redis_cache.py1# -*- coding: utf-8 -*-COMMENT
LOWtest/test_proxy_ip_pool.py1# -*- coding: utf-8 -*-COMMENT
LOWtest/test_mongodb_integration.py1# -*- coding: utf-8 -*-COMMENT
LOWconfig/zhihu_config.py1# -*- coding: utf-8 -*-COMMENT
LOWconfig/base_config.py1# -*- coding: utf-8 -*-COMMENT
LOWconfig/base_config.py41COMMENT
LOWconfig/base_config.py61# CDP 调试端口,用于与浏览器通信COMMENT
LOWconfig/ks_config.py1# -*- coding: utf-8 -*-COMMENT
LOWconfig/ks_config.py21COMMENT
LOWconfig/__init__.py1# -*- coding: utf-8 -*-COMMENT
LOWconfig/dy_config.py1# -*- coding: utf-8 -*-COMMENT
LOWconfig/dy_config.py21PUBLISH_TIME_TYPE = 0COMMENT
LOWconfig/tieba_config.py1# -*- coding: utf-8 -*-COMMENT
LOWconfig/xhs_config.py1# -*- coding: utf-8 -*-COMMENT
LOWconfig/db_config.py1# -*- coding: utf-8 -*-COMMENT
LOWconfig/weibo_config.py1# -*- coding: utf-8 -*-COMMENT
LOWconfig/bilibili_config.py1# -*- coding: utf-8 -*-COMMENT
LOWtests/conftest.py1# -*- coding: utf-8 -*-COMMENT
LOWtests/test_store_factory.py1# -*- coding: utf-8 -*-COMMENT
109 more matches not shown…
Excessive Try-Catch Wrapping118 hits · 122 pts
SeverityFileLineSnippetContext
LOW⚡main.py82 except Exception as e:CODE
LOW⚡main.py96 except Exception as e:CODE
LOWmain.py129 except Exception as e:CODE
LOWmain.py137 except Exception as e:CODE
LOWmain.py158 except Exception:CODE
LOWdatabase/mongodb_store_base.py75 except Exception as e:CODE
LOWdatabase/mongodb_store_base.py111 except Exception as e:CODE
LOWdatabase/mongodb_store_base.py120 except Exception as e:CODE
LOWdatabase/mongodb_store_base.py132 except Exception as e:CODE
LOWdatabase/mongodb_store_base.py142 except Exception as e:CODE
LOWdatabase/db_session.py98 except Exception as e:CODE
LOWtools/crawler_util.py61 except Exception as e:CODE
LOWtools/async_file_writer.py146 except Exception as e:CODE
LOWtools/browser_launcher.py187 except Exception as e:CODE
LOWtools/browser_launcher.py206 except Exception:CODE
LOWtools/browser_launcher.py238 except Exception:CODE
LOWtools/browser_launcher.py288 except Exception as e:CODE
LOWtools/cdp_browser.py135 except Exception as e:CODE
LOWtools/cdp_browser.py246 except Exception as e:CODE
LOWtools/cdp_browser.py309 except Exception as e:CODE
LOWtools/cdp_browser.py330 except Exception as direct_error:CODE
LOWtools/cdp_browser.py356 except Exception as e:CODE
LOWtools/cdp_browser.py410 except Exception as e:CODE
LOWtools/cdp_browser.py421 except Exception as e:CODE
LOWtools/cdp_browser.py432 except Exception as e:CODE
LOWtools/cdp_browser.py457 except Exception as context_error:CODE
LOWtools/cdp_browser.py478 except Exception as browser_error:CODE
LOWtools/cdp_browser.py507 except Exception as e:CODE
LOWtools/cdp_browser.py533 except Exception as e:CODE
LOWtools/app_runner.py82 except Exception:CODE
LOWtools/app_runner.py102 except Exception as e:CODE
LOWtools/time_util.py92 except Exception as e:CODE
LOWtools/file_header_manager.py209 except Exception as e:CODE
LOWproxy/proxy_ip_pool.py93 except Exception as e:CODE
LOWproxy/proxy_ip_pool.py186 except Exception as e:CODE
LOWproxy/base_proxy.py82 except Exception as e:CODE
LOWtest/test_db_sync.py196 except Exception as e:CODE
MEDIUMtest/test_db_sync.py197 print(f"Error processing MySQL: {e}")CODE
LOWtest/test_db_sync.py213 except Exception as e:CODE
MEDIUMtest/test_db_sync.py214 print(f"Error processing SQLite: {e}")CODE
LOWtest/test_mongodb_integration.py42 except Exception as e:CODE
LOWtest/test_mongodb_integration.py86 except Exception as e:CODE
MEDIUMtest/test_mongodb_integration.py36def setUpClass(cls):CODE
LOWmedia_platform/bilibili/client.py155 except Exception as e:CODE
LOWmedia_platform/bilibili/core.py236 except Exception as e:CODE
LOWmedia_platform/bilibili/core.py334 except Exception as e:CODE
LOWmedia_platform/bilibili/core.py378 except Exception as e:CODE
LOWmedia_platform/bilibili/core.py572 except Exception as e:CODE
LOWmedia_platform/bilibili/core.py590 except Exception as e:CODE
LOWmedia_platform/bilibili/core.py606 except Exception as exc:CODE
LOWmedia_platform/bilibili/core.py741 except Exception as e:CODE
LOWmedia_platform/bilibili/core.py785 except Exception as e:CODE
LOWmedia_platform/bilibili/core.py808 except Exception as e:CODE
LOWmedia_platform/bilibili/core.py831 except Exception as e:CODE
LOWmedia_platform/xhs/client.py275 except Exception as e:CODE
LOWmedia_platform/xhs/client.py546 except Exception as e:CODE
LOWmedia_platform/xhs/client.py551 except Exception as e:CODE
LOWmedia_platform/xhs/core.py470 except Exception as e:CODE
LOWmedia_platform/xhs/core.py498 except Exception as exc:CODE
LOWmedia_platform/xhs/login.py68 except Exception:CODE
58 more matches not shown…
Empty Error Handlers16 hits · 80 pts
SeverityFileLineSnippetContext
HIGHmain.py158except Exception:CODE
HIGHtools/browser_launcher.py206except Exception:CODE
HIGHtools/app_runner.py58except asyncio.TimeoutError:CODE
HIGHtools/app_runner.py82except Exception:CODE
HIGHtest/test_mongodb_integration.py78except:CODE
HIGHtests/media_server.py299except OSError:CODE
HIGHmedia_platform/xhs/client.py171except (TypeError, ValueError):CODE
HIGHmedia_platform/xhs/core.py313except RetryError:CODE
HIGHmedia_platform/xhs/login.py68except Exception:CODE
HIGHapi/routers/data.py48except Exception:CODE
HIGHapi/routers/websocket.py148except WebSocketDisconnect:CODE
HIGHapi/routers/websocket.py150except Exception:CODE
HIGHapi/services/crawler_manager.py281except asyncio.CancelledError:CODE
HIGHapi/services/crawler_manager.py77except asyncio.QueueFull:CODE
HIGHapi/services/crawler_manager.py110except asyncio.QueueEmpty:CODE
HIGHstore/excel_store_base.py186except (TypeError, AttributeError):CODE
Deep Nesting41 hits · 40 pts
SeverityFileLineSnippetContext
LOWmain.py123CODE
LOWtools/async_file_writer.py82CODE
LOWtools/slider_util.py84CODE
LOWtools/browser_launcher.py191CODE
LOWtools/browser_launcher.py214CODE
LOWtools/browser_launcher.py241CODE
LOWtools/cdp_browser.py437CODE
LOWcache/redis_cache.py77CODE
LOWtest/test_db_sync.py101CODE
LOWtest/test_db_sync.py133CODE
LOWtest/test_proxy_ip_pool.py271CODE
LOWtests/media_server.py93CODE
LOWcmd_arg/arg.py154CODE
LOWcmd_arg/arg.py160CODE
LOWmedia_platform/bilibili/client.py257CODE
LOWmedia_platform/bilibili/core.py74CODE
LOWmedia_platform/bilibili/core.py196CODE
LOWmedia_platform/bilibili/core.py253CODE
LOWmedia_platform/xhs/client.py475CODE
LOWmedia_platform/xhs/core.py137CODE
LOWmedia_platform/weibo/core.py140CODE
LOWmedia_platform/weibo/core.py319CODE
LOWmedia_platform/weibo/help.py29CODE
LOWmedia_platform/tieba/client.py516CODE
LOWmedia_platform/tieba/core.py148CODE
LOWmedia_platform/tieba/core.py402CODE
LOWmedia_platform/tieba/help.py290CODE
LOWmedia_platform/douyin/client.py278CODE
LOWmedia_platform/douyin/core.py130CODE
LOWmedia_platform/douyin/core.py186CODE
LOWmedia_platform/kuaishou/core.py200CODE
LOWmedia_platform/zhihu/core.py150CODE
LOWmedia_platform/zhihu/help.py77CODE
LOWapi/routers/data.py33CODE
LOWapi/routers/data.py62CODE
LOWapi/routers/data.py99CODE
LOWapi/routers/data.py191CODE
LOWapi/routers/websocket.py90CODE
LOWapi/services/crawler_manager.py80CODE
LOWapi/services/crawler_manager.py242CODE
LOWstore/excel_store_base.py171CODE
Cross-Language Confusion6 hits · 32 pts
SeverityFileLineSnippetContext
HIGHtests/test_kuaishou_unavailable_video.py13``visionVideoDetail: {photo: null, author: null}`` —— key 存在、值是 null。STRING
HIGHmedia_platform/tieba/core.py502 get: () => undefined,CODE
HIGH⚡media_platform/douyin/help.py95 "([params, post_data, ua]) => window.bdms.init._v[2].p[42].apply(null, [0, 1, 8, params, post_data, ua])",CODE
HIGHmedia_platform/kuaishou/core.py262 # visionVideoDetail: {photo: null, author: null}——key 在、值是 null。COMMENT
HIGHmedia_platform/kuaishou/help.py41 if (!done && this && typeof this === "object" && this !== window &&CODE
HIGHapi/main.py79 "note": "WebUI not found, please build it first: cd webui && npm run build"CODE
Redundant / Tautological Comments19 hits · 28 pts
SeverityFileLineSnippetContext
LOWdatabase/db_session.py46 # Check if database existsCOMMENT
LOWtools/browser_launcher.py97 # Check if path exists and is executableCOMMENT
LOWtools/cdp_browser.py448 # Check if context is already closedCOMMENT
LOWtools/cdp_browser.py472 # Check if browser is still connectedCOMMENT
LOWtools/file_header_manager.py100 # Check if contains Copyright keywordCOMMENT
LOWtools/file_header_manager.py130 # Check if first line is shebangCOMMENT
LOWmedia_platform/bilibili/client.py81 # Check if proxy has expired before each requestCOMMENT
LOWmedia_platform/bilibili/client.py324 # Check if is_end and next existCOMMENT
LOWmedia_platform/bilibili/core.py190 end_day = (start_day + timedelta(days=1) - timedelta(seconds=1)) # Set end_day to start_day + 1 day - 1 secCODE
LOWmedia_platform/bilibili/core.py192 end_day = (end_day + timedelta(days=1) - timedelta(seconds=1)) # Set end_day to end_day + 1 day - 1 secondCODE
LOWmedia_platform/xhs/client.py145 # Check if proxy is expired before each requestCOMMENT
LOWmedia_platform/weibo/client.py73 # Check if proxy is expired before each requestCOMMENT
LOWmedia_platform/weibo/core.py455 # Check if it's a long textCOMMENT
LOWmedia_platform/tieba/client.py250 # Check if proxy is expired before each requestCOMMENT
LOWmedia_platform/douyin/login.py150 # Check if there is slider verificationCOMMENT
LOWmedia_platform/douyin/help.py121 # Check if it's a short link (v.douyin.com)COMMENT
LOWmedia_platform/kuaishou/client.py69 # Check if proxy is expired before each requestCOMMENT
LOWmedia_platform/zhihu/client.py97 # Check if proxy is expired before each requestCOMMENT
LOWstore/excel_store_base.py373 # Check if there are any sheets leftCOMMENT
Verbosity Indicators5 hits · 11 pts
SeverityFileLineSnippetContext
LOW⚡media_platform/tieba/core.py415 # Step 1: Visit Baidu homepageCOMMENT
LOW⚡media_platform/tieba/core.py419 # Step 2: Wait for page loading, using delay setting from config fileCOMMENT
LOW⚡media_platform/tieba/core.py423 # Step 3: Find and click "Tieba" linkCOMMENT
LOW⚡media_platform/tieba/core.py449 # Step 4: Click Tieba link (check if it will open in a new tab)COMMENT
LOW⚡media_platform/tieba/core.py479 # Step 5: Wait for page to stabilize, using delay setting from config fileCOMMENT
Structural Annotation Overuse5 hits · 11 pts
SeverityFileLineSnippetContext
LOW⚡media_platform/tieba/core.py415 # Step 1: Visit Baidu homepageCOMMENT
LOW⚡media_platform/tieba/core.py419 # Step 2: Wait for page loading, using delay setting from config fileCOMMENT
LOW⚡media_platform/tieba/core.py423 # Step 3: Find and click "Tieba" linkCOMMENT
LOW⚡media_platform/tieba/core.py449 # Step 4: Click Tieba link (check if it will open in a new tab)COMMENT
LOW⚡media_platform/tieba/core.py479 # Step 5: Wait for page to stabilize, using delay setting from config fileCOMMENT
Modern Structural Boilerplate6 hits · 6 pts
SeverityFileLineSnippetContext
LOWtests/media_server.py364 def set_content(self, name: str, content: bytes) -> None:CODE
LOWtests/media_server.py367 def set_content_type(self, name: str, content_type: str) -> None:CODE
LOWapi/routers/__init__.py23__all__ = ["crawler_router", "data_router", "websocket_router"]CODE
LOWapi/schemas/__init__.py29__all__ = [CODE
LOWapi/services/__init__.py21__all__ = ["CrawlerManager", "crawler_manager"]CODE
LOWmedia_downloader/__init__.py36__all__ = [CODE
AI Structural Patterns5 hits · 5 pts
SeverityFileLineSnippetContext
LOWtest/test_mongodb_integration.py360CODE
LOWcmd_arg/arg.py160CODE
LOWmedia_platform/bilibili/client.py416CODE
LOWmedia_platform/tieba/client.py216CODE
LOWmedia_downloader/downloader.py126CODE
AI Slop Vocabulary1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUMpackage-lock.json3425 "resolved": "https://registry.npmmirror.com/robust-predicates/-/robust-predicates-3.0.2.tgz",CODE
Example Usage Blocks1 hit · 2 pts
SeverityFileLineSnippetContext
LOWtools/time_util.py130 # Example usageCOMMENT