AI Slop Code RIsk Monitor

Guovin/iptv-api

⚡️ IPTV直播源自动更新工具:自动采集、校验、测速并生成可播放结果,支持 M3U/TXT/API 输出、自定义频道、IPv4/IPv6、Docker、GitHub Actions、CLI 与 GUI 多端部署

24.9 Elevated pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for Guovin/iptv-api, a Python project with 25,501 GitHub stars. SynthScan examined 48,668 lines of code across 185 source files, recording 838 pattern matches distributed across 11 syntactic categories. The legacy adjusted pattern signal is 24.9 (Elevated pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

24.9
Adjusted Signal
24.9
Raw Pattern Score
100%
Time Factor
2026-10-09
Last Push
25.5K
Stars
Python
Language
48.7K
Lines of Code
185
Files
838
Pattern Hits
2026-10-12
Scan Date
0.49
HC Hit Rate

Risk Review · v3

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

Cognitive Ownership Risk 39.0/100 · MEDIUM

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

Hallucinated Dependency & Supply Chain Risk 4.3/100 · LOW

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

Agent Over-Engineering Ratio 67.7/100 · HIGH

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

PR Review Velocity Impact 75.3/100 · CRITICAL

Which changes need focused human review? 838 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 91MEDIUM 35LOW 712

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 838 distinct pattern matches across 11 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.

Empty Error Handlers87 hits · 435 pts
SeverityFileLineSnippetContext
HIGHdesktop_ui/controller.py50except asyncio.CancelledError:CODE
HIGHdesktop_ui/controller.py165except asyncio.CancelledError:CODE
HIGHdesktop_ui/controller.py480except requests.RequestException:CODE
HIGHdesktop_ui/controller.py333except requests.RequestException:CODE
HIGHdesktop_ui/updater.py177except OSError:CODE
HIGHdesktop_ui/widgets.py323except (TypeError, ValueError):CODE
HIGHdesktop_ui/app.py53except OSError:CODE
HIGHtests/test_speed_limits.py38except (ConnectionError, BrokenPipeError, asyncio.CancelledError):CODE
HIGHutils/run_state.py37except OSError:CODE
HIGHutils/alias.py81except re.error:CODE
HIGHutils/alias.py36except re.error:CODE
HIGHutils/config.py689except Exception:CODE
HIGHutils/config.py742except ValueError:CODE
HIGHutils/aggregator.py333except asyncio.TimeoutError:CODE
HIGHutils/aggregator.py376except asyncio.CancelledError:CODE
HIGHutils/speed.py199except Exception:CODE
HIGHutils/speed.py231except Exception:CODE
HIGHutils/speed.py262except Exception:CODE
HIGHutils/speed.py408except Exception:CODE
HIGHutils/speed.py528except Exception:CODE
HIGHutils/speed.py427except Exception:CODE
HIGHutils/speed.py545except Exception:CODE
HIGHutils/speed.py554except Exception:CODE
HIGHutils/speed.py661except Exception:CODE
HIGHutils/tools.py199except:CODE
HIGHutils/tools.py313except Exception:CODE
HIGHutils/tools.py1181except Exception:CODE
HIGHutils/tools.py85except Exception:CODE
HIGHutils/tools.py1478except Exception:CODE
HIGHutils/tools.py52except Exception:CODE
HIGHutils/tools.py59except PermissionError:CODE
HIGHutils/tools.py61except Exception:CODE
HIGHutils/channel.py1399except Exception:CODE
HIGHutils/channel.py962except Exception:CODE
HIGHutils/channel.py968except Exception:CODE
HIGHutils/channel.py370except Exception:CODE
HIGHutils/channel.py1086except Exception:CODE
HIGHutils/channel.py271except re.error:CODE
HIGHutils/frozen.py85except Exception:CODE
HIGHutils/frozen.py98except Exception:CODE
HIGHutils/performance.py82except (AttributeError, OSError):CODE
HIGHutils/rtmp_stats.py165except Exception:CODE
HIGHutils/channel_repository.py748except OSError:CODE
HIGHutils/channel_repository.py892except OSError:CODE
HIGHutils/reporting.py225except (OSError, ValueError):CODE
HIGHutils/reporting.py230except Exception:CODE
HIGHutils/ffmpeg/ffmpeg.py163except Exception:CODE
HIGHutils/ffmpeg/ffmpeg.py167except Exception:CODE
HIGHutils/ffmpeg/ffmpeg.py107except Exception:CODE
HIGHutils/ffmpeg/ffmpeg.py130except Exception:CODE
HIGHutils/ffmpeg/ffmpeg.py134except Exception:CODE
HIGHutils/ffmpeg/ffmpeg.py139except Exception:CODE
HIGHutils/ffmpeg/ffmpeg.py143except Exception:CODE
HIGHutils/ffmpeg/ffmpeg.py149except Exception:CODE
HIGHutils/ffmpeg/ffmpeg.py156except Exception:CODE
HIGHutils/ffmpeg/ffmpeg.py116except Exception:CODE
HIGHutils/ffmpeg/probe.py124except Exception:CODE
HIGHutils/ffmpeg/probe.py140except Exception:CODE
HIGHutils/ffmpeg/probe.py144except Exception:CODE
HIGHutils/ffmpeg/probe.py284except Exception:CODE
27 more matches not shown…
Hyper-Verbose Identifiers411 hits · 406 pts
SeverityFileLineSnippetContext
LOW⚡main.py87 def _initialize_pause_control(self):CODE
LOWmain.py223 def _diagnose_aggregated_data(self):CODE
LOWmain.py359 def _write_epg_files_if_needed(self):CODE
LOWdesktop_ui/main_window.py32def _update_notification_icon() -> QPixmap:CODE
LOWdesktop_ui/main_window.py293 def _configure_initial_geometry(self):CODE
LOWdesktop_ui/main_window.py334 def _update_sponsor_banner_visibility(self, _index=None):CODE
LOWdesktop_ui/main_window.py348 def _language_environment_override():CODE
LOWdesktop_ui/main_window.py386 def _remove_navigation_tooltips(self):CODE
LOWdesktop_ui/main_window.py465 def _refresh_navigation_status(self, name: str):CODE
LOWdesktop_ui/main_window.py481 def _refresh_navigation_statuses(self):CODE
LOWdesktop_ui/main_window.py695 def _retranslate_tray_actions(self):CODE
LOWdesktop_ui/main_window.py744 def _copy_service_url_from_tray(self):CODE
LOWdesktop_ui/main_window.py791 def _restart_service_from_tray(self):CODE
LOWdesktop_ui/main_window.py852 def _open_rtmp_limit_settings(self):CODE
LOWdesktop_ui/main_window.py998 def _update_rtmp_navigation_status(self, snapshot: dict):CODE
LOWdesktop_ui/main_window.py1022 def _update_about_navigation_status(self, state: str, payload):CODE
LOWdesktop_ui/main_window.py1064 def _show_update_notification(self, payload: dict):CODE
LOWdesktop_ui/main_window.py1171 def _set_update_navigation_status(self, state: str):STRING
LOWdesktop_ui/main_window.py1261 def _stream_batch_control_finished(self, action: str, success: int, total: int, message: str):STRING
LOWdesktop_ui/main_window.py1313 def _ask_windows_close_action(self):STRING
LOWdesktop_ui/playback.py266 def _update_advanced_visibility(self):CODE
LOWdesktop_ui/runtime.py45def validate_runtime_directory(directory: str | os.PathLike[str]) -> Path:CODE
LOWdesktop_ui/runtime.py52def default_runtime_directory(CODE
LOWdesktop_ui/runtime.py71def prepare_runtime_directory(CODE
LOWdesktop_ui/stream_status.py20def build_channel_stream_states(snapshot: dict) -> dict[str, dict]:CODE
LOWdesktop_ui/stream_status.py67def build_result_stream_states(snapshot: dict) -> dict[str, dict]:CODE
LOWdesktop_ui/stream_status.py82def apply_channel_stream_state(row: dict, states: dict[str, dict]) -> dict:CODE
LOWdesktop_ui/stream_status.py91def apply_result_stream_state(row: dict, states: dict[str, dict]) -> dict:CODE
LOWdesktop_ui/updater.py77def extracted_application_root(staging_dir: Path, platform_name: str | None = None) -> Path:CODE
LOWdesktop_ui/platform_integration.py7def suspend_macos_window_flush(window):CODE
LOWdesktop_ui/platform_integration.py28def set_macos_activation_policy(accessory: bool):CODE
LOWdesktop_ui/single_instance.py20def create_single_instance_server(timeout: int = 500) -> QLocalServer | None:CODE
LOWdesktop_ui/update_manager.py61def _legacy_asset_for_platform(assets: list[dict], key: str, version: str) -> dict | None:CODE
LOWdesktop_ui/pages/rtmp.py526 def _set_bandwidth_idle_state(self):CODE
LOWdesktop_ui/pages/rtmp.py576 def _update_channel_selection(self, preferred_result_key: str | None = None):CODE
LOWdesktop_ui/pages/rtmp.py658 def _request_selected_control(self, action: str):CODE
LOWdesktop_ui/pages/about.py222 def _set_update_available_presentation(self, available: bool):CODE
LOWdesktop_ui/pages/about.py228 def _refresh_update_notice_style(self):CODE
LOWdesktop_ui/pages/about.py319 def _install_confirmation_dialog(self):CODE
LOWdesktop_ui/pages/sources.py216 def _apply_category_tree_surface(tree):CODE
LOWdesktop_ui/pages/sources.py242 def _apply_template_view_mode(self):CODE
LOWdesktop_ui/pages/sources.py498 def move_selected_to_category(self):CODE
LOWdesktop_ui/pages/sources.py803 def _schedule_alias_summary_refresh(self, logical_index, *_):STRING
LOWdesktop_ui/pages/sources.py807 def _connect_alias_layout_refresh(self):STRING
LOWdesktop_ui/pages/sources.py895 def _schedule_table_order_sync(self, *_):STRING
LOWdesktop_ui/pages/settings.py163 def _open_playback_preferences(self):CODE
LOWdesktop_ui/pages/settings.py166 def _open_data_directory_dialog(self):CODE
LOW⚡desktop_ui/pages/channels.py908 def _save_result_drawer_height(self):CODE
LOW⚡desktop_ui/pages/channels.py915 def _toggle_result_drawer_fullscreen(self):CODE
LOW⚡desktop_ui/pages/channels.py923 def _update_drawer_mode_button(self):CODE
LOW⚡desktop_ui/pages/channels.py1853 def _auto_capture_missing_screenshot(self, dialog, row: dict):CODE
LOW⚡desktop_ui/pages/channels.py1861 def _request_dialog_screenshot(self, row: dict):CODE
LOW⚡desktop_ui/pages/channels.py1871 def _screenshot_dialog_finished(self, *_):CODE
LOWdesktop_ui/pages/channels.py842 def _best_channel_playback_result(self, channel: dict) -> dict | None:CODE
LOWdesktop_ui/pages/channels.py967 def _drawer_animation_finished(self):CODE
LOWdesktop_ui/pages/channels.py988 def _event_position_in_drawer(self, event):CODE
LOWdesktop_ui/pages/channels.py995 def _is_drawer_interaction_widget(self, widget):CODE
LOWdesktop_ui/pages/channels.py1051 def _populate_category_directory(self, categories=None):CODE
LOWdesktop_ui/pages/channels.py1177 def _sort_channels_by_category(self, rows):CODE
LOWdesktop_ui/pages/channels.py1437 def _publish_output_selection(self):CODE
351 more matches not shown…
Excessive Try-Catch Wrapping195 hits · 190 pts
SeverityFileLineSnippetContext
LOW⚡main.py139 except Exception:CODE
LOWmain.py317 except Exception as e:CODE
LOWmain.py327 except Exception as e:CODE
LOWmain.py723 except Exception:CODE
LOWmain.py735 except Exception as exc:CODE
LOWmain.py816 except Exception as exc:CODE
LOWdesktop_ui/main_window.py736 except Exception:CODE
MEDIUMdesktop_ui/main_window.py713def _tray_schedule_text(self):CODE
LOWdesktop_ui/controller.py52 except Exception:CODE
LOWdesktop_ui/controller.py167 except Exception:CODE
LOWdesktop_ui/updater.py105 except Exception:CODE
LOWdesktop_ui/updater.py172 except Exception:CODE
LOWdesktop_ui/updater.py194 except Exception as exc:CODE
LOWdesktop_ui/update_manager.py215 except Exception as exc:CODE
LOWdesktop_ui/update_manager.py228 except Exception as exc:CODE
LOWdesktop_ui/update_manager.py273 except Exception as exc:CODE
LOWdesktop_ui/update_manager.py297 except Exception as exc:CODE
LOWdesktop_ui/pages/tasks.py111 except Exception:CODE
LOWdesktop_ui/pages/tasks.py119 except Exception as exc:CODE
MEDIUMdesktop_ui/pages/tasks.py75def refresh(self):CODE
MEDIUMdesktop_ui/pages/tasks.py114def export(self):CODE
LOWdesktop_ui/pages/dashboard.py336 except Exception:CODE
LOWdesktop_ui/pages/dashboard.py604 except Exception:CODE
LOWdesktop_ui/pages/dashboard.py650 except Exception:CODE
MEDIUMdesktop_ui/pages/dashboard.py332def refresh_metrics(self):CODE
MEDIUMdesktop_ui/pages/dashboard.py643def refresh_schedule(self):CODE
LOWdesktop_ui/pages/logs.py272 except Exception as exc:CODE
MEDIUMdesktop_ui/pages/logs.py267def export(self):CODE
MEDIUMdesktop_ui/pages/channels.py1051def _populate_category_directory(self, categories=None):CODE
LOWdesktop_ui/pages/channels.py855 except Exception:CODE
LOWdesktop_ui/pages/channels.py1063 except Exception:CODE
LOWdesktop_ui/pages/channels.py1087 except Exception:CODE
LOWdesktop_ui/pages/channels.py1241 except Exception:CODE
LOWdesktop_ui/pages/channels.py1275 except Exception:CODE
LOWdesktop_ui/pages/channels.py1316 except Exception:CODE
LOWdesktop_ui/pages/channels.py1334 except Exception:CODE
LOWdesktop_ui/pages/channels.py1623 except Exception:CODE
LOWdesktop_ui/pages/channels.py2433 except Exception:CODE
LOWutils/rtmp_runtime.py72 except Exception:CODE
LOWutils/db.py49 except Exception:CODE
LOWutils/db.py132 except Exception:CODE
LOWutils/db.py167 except Exception:CODE
LOWutils/db.py232 except Exception:CODE
LOWutils/config.py689 except Exception:CODE
LOWutils/config.py1165 except Exception as e:CODE
LOWutils/aggregator.py203 except Exception as exc:CODE
LOWutils/aggregator.py223 except Exception as exc:CODE
LOWutils/aggregator.py314 except Exception as exc:CODE
LOWutils/aggregator.py383 except Exception as exc:CODE
LOWutils/speed.py199 except Exception:CODE
LOWutils/speed.py231 except Exception:CODE
LOWutils/speed.py262 except Exception:CODE
LOWutils/speed.py308 except Exception:CODE
LOWutils/speed.py408 except Exception:CODE
LOWutils/speed.py427 except Exception:CODE
LOWutils/speed.py450 except Exception as e:CODE
LOWutils/speed.py480 except Exception:CODE
LOWutils/speed.py498 except Exception:CODE
LOWutils/speed.py528 except Exception:CODE
LOWutils/speed.py545 except Exception:CODE
135 more matches not shown…
Deep Nesting87 hits · 69 pts
SeverityFileLineSnippetContext
LOWmain.py599CODE
LOWmain.py916CODE
LOWdesktop_ui/main_window.py1022CODE
LOWdesktop_ui/models.py105CODE
LOWdesktop_ui/models.py417CODE
LOWdesktop_ui/updater.py134CODE
LOWdesktop_ui/delegates.py253CODE
LOWdesktop_ui/delegates.py286CODE
LOWdesktop_ui/dialogs/local_source_import.py61CODE
LOWdesktop_ui/dialogs/source_import.py63CODE
LOWdesktop_ui/pages/about.py341CODE
LOWdesktop_ui/pages/dashboard.py361CODE
LOWdesktop_ui/pages/sources.py642CODE
LOWdesktop_ui/pages/sources.py915CODE
LOWdesktop_ui/pages/sources.py943CODE
LOWdesktop_ui/pages/sources.py1370CODE
LOWdesktop_ui/pages/logs.py125CODE
LOWdesktop_ui/pages/channels.py89CODE
LOWdesktop_ui/pages/channels.py2224CODE
LOWtests/test_resource_paths.py11CODE
LOWtests/test_alias.py43CODE
LOWtests/test_alias.py74CODE
LOWutils/db.py102CODE
LOWutils/db.py174CODE
LOWutils/alias.py12CODE
LOWutils/alias.py65CODE
LOWutils/config.py673CODE
LOWutils/config.py754CODE
LOWutils/config.py796CODE
LOWutils/config.py827CODE
LOWutils/config.py1028CODE
LOWutils/config.py1138CODE
LOWutils/aggregator.py22CODE
LOWutils/aggregator.py150CODE
LOWutils/aggregator.py323CODE
LOWutils/aggregator.py362CODE
LOWutils/speed.py133CODE
LOWutils/speed.py312CODE
LOWutils/speed.py455CODE
LOWutils/speed.py630CODE
LOWutils/speed.py697CODE
LOWutils/speed.py730CODE
LOWutils/diagnostics.py23CODE
LOWutils/whitelist.py23CODE
LOWutils/whitelist.py136CODE
LOWutils/tools.py37CODE
LOWutils/tools.py337CODE
LOWutils/tools.py459CODE
LOWutils/tools.py693CODE
LOWutils/tools.py712CODE
LOWutils/tools.py832CODE
LOWutils/tools.py853CODE
LOWutils/tools.py1049CODE
LOWutils/tools.py1247CODE
LOWutils/tools.py1271CODE
LOWutils/tools.py1359CODE
LOWutils/tools.py363CODE
LOWutils/channel.py183CODE
LOWutils/channel.py309CODE
LOWutils/channel.py464CODE
27 more matches not shown…
Decorative Section Separators18 hits · 60 pts
SeverityFileLineSnippetContext
MEDIUM⚡main.py84 # ----------------------------COMMENT
MEDIUM⚡main.py86 # ----------------------------COMMENT
MEDIUM⚡main.py130 # ----------------------------COMMENT
MEDIUM⚡main.py132 # ----------------------------COMMENT
MEDIUMmain.py150 # ----------------------------COMMENT
MEDIUMmain.py152 # ----------------------------COMMENT
MEDIUMmain.py241 # ----------------------------COMMENT
MEDIUMmain.py243 # ----------------------------COMMENT
MEDIUMmain.py385 # ----------------------------COMMENT
MEDIUMmain.py387 # ----------------------------COMMENT
MEDIUMmain.py412 # ----------------------------COMMENT
MEDIUMmain.py414 # ----------------------------COMMENT
MEDIUMmain.py561 # ----------------------------COMMENT
MEDIUMmain.py563 # ----------------------------COMMENT
MEDIUMmain.py596 # ----------------------------COMMENT
MEDIUMmain.py598 # ----------------------------COMMENT
MEDIUMmain.py840 # ----------------------------COMMENT
MEDIUMmain.py842 # ----------------------------COMMENT
Unused Imports22 hits · 22 pts
SeverityFileLineSnippetContext
LOWdesktop_ui/updater.py5CODE
LOWdesktop_ui/app.py59CODE
LOWdesktop_ui/app.py60CODE
LOWdesktop_ui/app.py61CODE
LOWdesktop_ui/update_manager.py12CODE
LOWutils/artifacts.py1CODE
LOWutils/reporting.py1CODE
LOWutils/ffmpeg/__init__.py1CODE
LOWutils/ffmpeg/__init__.py1CODE
LOWutils/ffmpeg/__init__.py2CODE
LOWutils/ffmpeg/__init__.py2CODE
LOWutils/ffmpeg/__init__.py3CODE
LOWutils/ffmpeg/__init__.py3CODE
LOWutils/ffmpeg/__init__.py3CODE
LOWutils/ffmpeg/__init__.py4CODE
LOWutils/ip_checker/__init__.py1CODE
LOWupdates/subscribe/__init__.py1CODE
LOWupdates/epg/__init__.py1CODE
LOWupdates/epg/__init__.py2CODE
LOWupdates/epg/__init__.py2CODE
LOWscripts/gui_showcase/fixture.py1CODE
LOWscripts/gui_showcase/capture.py1CODE
Cross-Language Confusion4 hits · 20 pts
SeverityFileLineSnippetContext
HIGHscripts/publish_results.py721 if (navigator.clipboard && window.isSecureContext) {{CODE
HIGHscripts/publish_results.py733 const originalLabel = button.dataset.originalLabel || label.innerHTML;CODE
HIGHscripts/publish_results.py735 window.clearTimeout(Number(button.dataset.resetTimer || 0));CODE
HIGHscripts/gui_showcase/capture.py88 if ownerPID == targetPID && name == "IPTV-API" && layer == 0 && windowWidth == {width} && windowHeight == {height} {CODE
Modern Structural Boilerplate6 hits · 6 pts
SeverityFileLineSnippetContext
LOWdesktop_ui/__init__.py1__all__ = []CODE
LOWdesktop_ui/pages/__init__.py1__all__ = []CODE
LOWutils/frozen.py102__all__ = ["mark_url_bad", "mark_url_good", "is_url_frozen", "get_current_frozen_set", "load", "save"]CODE
LOW⚡utils/channel_repository.py1152def set_channel_logo(db_path: str, channel_key: str, logo: str) -> None:STRING
LOW⚡utils/channel_repository.py1162def update_result_measurement(db_path: str, channel_key: str, result_key: str, measurement: dict) -> None:STRING
LOWutils/ffmpeg/__init__.py6__all__ = [CODE
AI Structural Patterns5 hits · 4 pts
SeverityFileLineSnippetContext
LOWutils/aggregator.py66CODE
LOWutils/speed.py312CODE
LOWutils/speed.py630CODE
LOWutils/channel.py1276CODE
LOWutils/channel_quality.py9CODE
Over-Commented Block2 hits · 2 pts
SeverityFileLineSnippetContext
LOWconfig/whitelist.txt1# 这是接口的白名单,白名单内的接口将不会参与测速,始终保留至结果最前;COMMENT
LOWconfig/local.txt1# 这是本地源列表,一行一个源,格式为:频道名称,接口地址COMMENT
Fake / Example Data1 hit · 1 pts
SeverityFileLineSnippetContext
LOWutils/speed.py62 "placeholder",CODE