AI Slop Code RIsk Monitor

streamlink/streamlink

Streamlink is a CLI utility which pipes video streams from various services into a video player

11.2 Moderate pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for streamlink/streamlink, a Python project with 11,841 GitHub stars. SynthScan examined 101,461 lines of code across 559 source files, recording 936 pattern matches distributed across 19 syntactic categories. The legacy adjusted pattern signal is 11.2 (Moderate 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.

11.2
Adjusted Signal
11.2
Raw Pattern Score
100%
Time Factor
2026-10-10
Last Push
11.8K
Stars
Python
Language
101.5K
Lines of Code
559
Files
936
Pattern Hits
2026-10-12
Scan Date
0.07
HC Hit Rate

Risk Review · v3

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

Cognitive Ownership Risk 22.1/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 19.3/100 · LOW

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

Agent Over-Engineering Ratio 24.6/100 · LOW

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

PR Review Velocity Impact 44.6/100 · MEDIUM

Which changes need focused human review? 936 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 2HIGH 39MEDIUM 25LOW 870

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 936 distinct pattern matches across 19 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 Identifiers366 hits · 365 pts
SeverityFileLineSnippetContext
LOWbuild_backend/test_plugins_json.py142def test_parse_sequence_or_mapping(parser: type[ast.NodeVisitor], code: str, expected: Any, raises: nullcontext):CODE
LOWbuild_backend/test_build_backend.py42def test_filter_cmd_option_args(config_settings: dict, expected: str, options: list):CODE
LOWbuild_backend/__init__.py20def get_requires_for_build_wheel( # type: ignore[no-redef]CODE
LOWbuild_backend/plugins_json.py441 def _filter_dataclass_none_value(items: list[tuple[str, Any]]) -> dict[str, Any]:CODE
LOWtests/test_streamlink_api.py24 def test_no_streams_exception(self):CODE
LOWtests/test_streamlink_api.py37 def test_stream_type_wildcard(self):CODE
LOWtests/conftest.py58def pytest_collection_modifyitems(items: list[pytest.Item]): # pragma: no coverCODE
LOWtests/conftest.py150def _clear_threadname_counters():CODE
LOWtests/test_options.py131 def test_mutablemapping_methods(self, options: MappedOptions):CODE
LOWtests/test_plugin.py171 def test_matchers_inheritance(self):CODE
LOWtests/test_plugin.py195 def test_matchers_inheritance_named_duplicate(self):CODE
LOWtests/test_plugin.py206 def test_matchers_not_matching(self):CODE
LOWtests/test_plugin.py214 def test_no_matchers_not_matching(self):CODE
LOWtests/test_plugin.py253 def test_named_matchers_and_matches(self):CODE
LOWtests/test_plugin.py301 def test_pluginargument_type_registry(self):CODE
LOWtests/test_plugin.py323 def test_arguments_inheritance(self):CODE
LOWtests/test_plugin_userinput.py51def test_user_input_not_implemented(session: Streamlink, testplugin: _TestPlugin):CODE
LOWtests/test_plugin_userinput.py73def test_user_input_console_no_tty(console: Mock, testplugin: _TestPlugin):CODE
LOWtests/test_validate.py51 def test_validate_failure_custom(self, schema: validate.Schema):CODE
LOWtests/test_validate.py1211 def test_failure_url_attribute(self):STRING
LOWtests/test_validate.py1473 def test_re_namespace_override(self):STRING
LOW⚡tests/test_validate.py1646 def test_chunk_newline_no_tag(self):STRING
LOW⚡tests/test_validate.py1654 def test_chunk_newline_ignored_tag(self):STRING
LOW⚡tests/test_validate.py1662 def test_chunk_newline_length_tag(self):STRING
LOWtests/test_validate.py1761 def test_multiple_nested_context(self):STRING
LOWtests/test_api_websocket.py201 def test_reconnect_disconnected(self, client: FakeWebsocketClient, websocketapp: Mock):CODE
LOWtests/test_cache.py273 def test_expires_at_overflowerror(self, cache: Cache):CODE
LOWtests/test_logger.py529 def test_capture_consecutive_once(CODE
LOWtests/plugins/conftest.py16def pytest_collection_modifyitems(items: list[pytest.Item]): # pragma: no coverCODE
LOW⚡tests/plugins/conftest.py36def _parametrize_plugincanhandleurl_test_all_matchers_match(metafunc: pytest.Metafunc):CODE
LOW⚡tests/plugins/conftest.py46def _parametrize_plugincanhandleurl_test_all_named_matchers_have_tests(metafunc: pytest.Metafunc):CODE
LOW⚡tests/plugins/conftest.py56def _parametrize_plugincanhandleurl_test_url_matches_positive_unnamed(metafunc: pytest.Metafunc):CODE
LOW⚡tests/plugins/conftest.py64def _parametrize_plugincanhandleurl_test_url_matches_positive_named(metafunc: pytest.Metafunc):CODE
LOW⚡tests/plugins/conftest.py74def _parametrize_plugincanhandleurl_test_url_matches_groups_unnamed(metafunc: pytest.Metafunc):CODE
LOW⚡tests/plugins/conftest.py84def _parametrize_plugincanhandleurl_test_url_matches_groups_named(metafunc: pytest.Metafunc):CODE
LOW⚡tests/plugins/conftest.py94def _parametrize_plugincanhandleurl_test_url_matches_negative(metafunc: pytest.Metafunc):CODE
LOWtests/plugins/test_twitch.py185def test_multivariant_and_weights(CODE
LOWtests/plugins/test_twitch.py235 def test_hls_daterange_unknown(self):CODE
LOWtests/plugins/test_twitch.py256 def test_hls_daterange_by_class(self):CODE
LOWtests/plugins/test_twitch.py351 def test_hls_has_preroll_and_midroll(self, mock_log):CODE
LOWtests/plugins/test_twitch.py404 def test_hls_low_latency_has_prefetch(self, mock_log):CODE
LOWtests/plugins/test_twitch.py427 def test_hls_no_low_latency_has_prefetch(self, mock_log):CODE
LOWtests/plugins/test_twitch.py450 def test_hls_low_latency_no_prefetch(self, mock_log):CODE
LOWtests/plugins/test_twitch.py470 def test_hls_low_latency_has_prefetch_has_preroll(self, mock_log):CODE
LOWtests/plugins/test_twitch.py493 def test_hls_low_latency_has_prefetch_no_preroll_with_prefetch_ads(self, mock_log):CODE
LOWtests/plugins/test_twitch.py536 def test_hls_low_latency_no_prefetch_has_preroll(self, mock_log):CODE
LOWtests/plugins/test_twitch.py559 def test_hls_low_latency_no_ads_reload_time(self):CODE
LOWtests/plugins/test_twitch.py573 def test_hls_prefetch_after_discontinuity(self, mock_log):CODE
LOWtests/plugins/test_twitch.py590 def test_hls_ignored_discontinuity(self, mock_log):CODE
LOWtests/plugins/test_twitch.py962 def test_integrity_check_not_forced(self, plugin: Twitch, mock: rm.Mocker):CODE
LOWtests/plugins/test_twitch.py997 def test_integrity_check_forced(self, plugin: Twitch, mock: rm.Mocker):CODE
LOWtests/plugins/test_twitch.py1113 def test_multivariant_response(CODE
LOWtests/plugins/test_twitch.py1259 def test_metadata_channel_no_data(self, mock_request_channel, metadata):CODE
LOWtests/plugins/test_twitch.py1264 def test_metadata_channel_no_category(self, mock_request_channel, metadata):CODE
LOWtests/plugins/test_twitch.py1287 def test_metadata_video_no_data(self, mock_request_video, metadata):CODE
LOWtests/plugins/test_twitch.py1309 def test_metadata_clip_no_data(self, mock_request_clip, metadata):CODE
LOW⚡tests/plugins/__init__.py142 def test_all_named_matchers_have_tests(self, matcher: Matcher):CODE
LOW⚡tests/plugins/__init__.py148 def test_url_matches_positive_unnamed(self, url: TUrl):CODE
LOW⚡tests/plugins/__init__.py154 def test_url_matches_positive_named(self, name: TName, url: TUrl):CODE
LOW⚡tests/plugins/__init__.py161 def test_url_matches_groups_unnamed(self, url: TUrl, groups: TMatchGroup):CODE
306 more matches not shown…
Unused Imports343 hits · 333 pts
SeverityFileLineSnippetContext
LOWsetup.py34CODE
LOWsetup.py80CODE
LOWbuild_backend/onbuild.py1CODE
LOWbuild_backend/test_plugins_json.py1CODE
LOWbuild_backend/__init__.py2CODE
LOWbuild_backend/__init__.py13CODE
LOWbuild_backend/plugins_json.py1CODE
LOWbuild_backend/commands.py1CODE
LOWtests/test_streamlink_api.py1CODE
LOWtests/conftest.py1CODE
LOWtests/test_options.py1CODE
LOWtests/test_plugin.py1CODE
LOWtests/test_plugin_userinput.py1CODE
LOWtests/__init__.py8CODE
LOWtests/test_compat.py1CODE
LOWtests/test_api_websocket.py1CODE
LOWtests/test_cache.py1CODE
LOWtests/test_logger.py1CODE
LOWtests/mixins/stream_hls.py1CODE
LOWtests/plugins/conftest.py1CODE
LOWtests/plugins/test_rtpplay.py1CODE
LOWtests/plugins/test_dash.py1CODE
LOWtests/plugins/test_twitch.py1CODE
LOWtests/plugins/__init__.py1CODE
LOWtests/plugins/test_hls.py1CODE
LOWtests/plugins/test_ustreamtv.py1CODE
LOWtests/plugins/test_http.py1CODE
LOWtests/plugins/test_vk.py1CODE
LOWtests/plugins/test_soop.py1CODE
LOWtests/plugins/test_filmon.py1CODE
LOWtests/stream/test_stream_json.py1CODE
LOWtests/stream/test_file.py1CODE
LOWtests/stream/test_ffmpegmux.py1CODE
LOWtests/stream/hls/test_hls.py1CODE
LOWtests/stream/hls/test_m3u8.py1CODE
LOWtests/stream/dash/test_dash.py1CODE
LOWtests/utils/test_num.py1CODE
LOWtests/utils/test_named_pipe.py1CODE
LOWtests/utils/test_id3v2.py1CODE
LOWtests/utils/test_args.py1CODE
LOWtests/utils/test_thread.py1CODE
LOWtests/utils/test_path.py1CODE
LOWtests/utils/test_processoutput.py1CODE
LOWtests/utils/test_random.py1CODE
LOWtests/utils/test_dataclass.py1CODE
LOWtests/cli/test_argparser.py1CODE
LOWtests/cli/test_streamrunner.py1CODE
LOWtests/cli/test_compat.py1CODE
LOWtests/cli/output/test_player.py1CODE
LOWtests/cli/output/test_file.py1CODE
LOWtests/cli/utils/test_player.py1CODE
LOWtests/cli/utils/test_versioncheck.py1CODE
LOWtests/cli/utils/test_path.py1CODE
LOWtests/cli/main/test_handle_url.py1CODE
LOWtests/cli/main/conftest.py1CODE
LOWtests/cli/main/test_logging.py1CODE
LOWtests/cli/main/test_player_argv.py1CODE
LOWtests/cli/main/test_can_handle_url.py1CODE
LOWtests/cli/main/test_setup_config_args.py1CODE
LOWtests/cli/main/test_show_matchers.py1CODE
283 more matches not shown…
Empty Error Handlers19 hits · 95 pts
SeverityFileLineSnippetContext
HIGHtests/stream/dash/test_dash.py535except StopIteration:CODE
HIGHtests/utils/test_named_pipe.py14except ImportError:CODE
HIGHsrc/streamlink/cache.py97except FileNotFoundError:CODE
HIGHsrc/streamlink/logger.py167except OSError:CODE
HIGHsrc/streamlink/plugins/vk.py65except StopIteration:CODE
HIGHsrc/streamlink/plugins/vk.py77except PluginError:CODE
HIGHsrc/streamlink/plugins/mdstrm.py56except ValueError:CODE
HIGHsrc/streamlink/plugins/reuters.py38except PluginError:CODE
HIGHsrc/streamlink/plugins/reuters.py50except PluginError:CODE
HIGHsrc/streamlink/plugins/reuters.py70except PluginError:CODE
HIGHsrc/streamlink/plugins/reuters.py87except PluginError:CODE
HIGHsrc/streamlink/plugins/tiktok.py64except ValueError:CODE
HIGHsrc/streamlink/stream/stream.py41except TypeError:CODE
HIGHsrc/streamlink/stream/wrappers.py86except Exception:CODE
HIGHsrc/streamlink/stream/segmented/segmented.py300except StopIteration:CODE
HIGHsrc/streamlink/stream/hls/hls.py759except TypeError:CODE
HIGHsrc/streamlink/stream/hls/m3u8.py279except BinasciiError:CODE
HIGHsrc/streamlink/utils/named_pipe.py17except ImportError:CODE
HIGHsrc/streamlink/session/session.py122except PluginError:CODE
Cross-Language Confusion17 hits · 79 pts
SeverityFileLineSnippetContext
HIGHtests/test_validate.py1558 """{"a": ["b", true, false, null, 1, 2.3]}""",STRING
HIGH⚡tests/test_validate.py1650 self.__next_f.push([1, "a0:[\"$\",\"$L6c\",null,[{\"a\":\"b\"}]]\n\na1:[\"$\",\"$L6c\",null,[{\"c\":\"d\CODE
HIGH⚡tests/test_validate.py1650 self.__next_f.push([1, "a0:[\"$\",\"$L6c\",null,[{\"a\":\"b\"}]]\n\na1:[\"$\",\"$L6c\",null,[{\"c\":\"d\CODE
HIGH⚡tests/test_validate.py1658 self.__next_f.push([1, "a0:I[123,[{\"a\":\"b\"}]]\n\na1:Idiscarded-because-no-json\na2:Z[456,[{\"c\":\"dCODE
HIGH⚡tests/test_validate.py1666 self.__next_f.push([1, "a0:T10,[\"foobarfoobar\"]\n\na1:T10,foobar0123456789\na2:Ta0,[\"foobar\"]"])CODE
HIGH⚡tests/test_validate.py1672 validate.validate(validate.nextjs_inline_rsc(), 'self.__next_f.push([0, "foo"])')STRING
HIGHtests/test_validate.py1683 validate.validate(validate.nextjs_inline_rsc(), 'self.__next_f.push([1, "a0:Tfoo,bar"])')STRING
HIGHtests/cli/main/test_show_matchers.py94 "name": null,CODE
HIGHtests/cli/main/test_show_matchers.py106 "name": null,CODE
HIGHtests/cli/main/test_show_matchers.py120 "name": null,CODE
HIGHsrc/streamlink/validate/_validators.py611 assert schema.validate(\"\"\"{"a":[1,2,3],"b":null}\"\"\") == {"a": [1, 2, 3], "b": None}STRING
HIGH⚡src/streamlink/validate/_validators.py705 self.__next_f.push([1, "a0:[\\\"$\\\",\\\"$L6c\\\",null,[{\\\"key\\\":\\\"value\\\"}]]"])STRING
HIGH⚡src/streamlink/validate/_validators.py705 self.__next_f.push([1, "a0:[\\\"$\\\",\\\"$L6c\\\",null,[{\\\"key\\\":\\\"value\\\"}]]"])STRING
HIGHsrc/streamlink/plugins/mjunoon.py36 is_live_channel_re = re.compile(r'"isLiveBroadcast":\s*"(true|undefined)"')CODE
HIGHsrc/streamlink/plugins/twitch.py655 "body": null,CODE
HIGHsrc/streamlink/webbrowser/cdp/devtools/emulation.py756 respective variables to be undefined, even if previously overridden.STRING
HIGHsrc/streamlink/webbrowser/cdp/devtools/runtime.py494 unserializable primitive value or neither of (for undefined) them should be specified.STRING
Deep Nesting54 hits · 54 pts
SeverityFileLineSnippetContext
LOWsetup.py37CODE
LOWtests/testutils/test_handshake.py18CODE
LOWdocs/sphinxext/ext_argparse.py126CODE
LOWscript/github-release.py343CODE
LOWscript/generate-cdp.py551CODE
LOWsrc/streamlink/validate/_validators.py696CODE
LOWsrc/streamlink/validate/_validators.py746CODE
LOWsrc/streamlink/validate/_validate.py89CODE
LOWsrc/streamlink/plugins/adultswim.py164CODE
LOWsrc/streamlink/plugins/youtube.py85CODE
LOWsrc/streamlink/plugins/ustreamtv.py217CODE
LOWsrc/streamlink/plugins/brightcove.py33CODE
LOWsrc/streamlink/plugins/zattoo.py200CODE
LOWsrc/streamlink/plugins/bbciplayer.py135CODE
LOWsrc/streamlink/plugins/bbciplayer.py194CODE
LOWsrc/streamlink/plugins/nicolive.py367CODE
LOWsrc/streamlink/plugins/abematv.py217CODE
LOWsrc/streamlink/plugins/bilibili.py204CODE
LOWsrc/streamlink/plugins/atresplayer.py42CODE
LOWsrc/streamlink/plugins/dailymotion.py53CODE
LOWsrc/streamlink/plugins/openrectv.py140CODE
LOWsrc/streamlink/plugins/pixiv.py115CODE
LOWsrc/streamlink/plugins/sportschau.py64CODE
LOWsrc/streamlink/plugins/zdf_mediathek.py191CODE
LOWsrc/streamlink/plugins/twitch.py912CODE
LOWsrc/streamlink/plugins/twitch.py1002CODE
LOWsrc/streamlink/plugins/steam.py86CODE
LOWsrc/streamlink/plugins/wwenetwork.py81CODE
LOWsrc/streamlink/stream/hls/hls.py388CODE
LOWsrc/streamlink/stream/hls/hls.py829CODE
LOWsrc/streamlink/stream/hls/m3u8.py596CODE
LOWsrc/streamlink/stream/dash/manifest.py425CODE
LOWsrc/streamlink/stream/dash/dash.py111CODE
LOWsrc/streamlink/stream/dash/dash.py292CODE
LOWsrc/streamlink/plugin/plugin.py104CODE
LOWsrc/streamlink/plugin/plugin.py144CODE
LOWsrc/streamlink/plugin/plugin.py392CODE
LOWsrc/streamlink/packages/requests_file.py34CODE
LOWsrc/streamlink/session/http.py138CODE
LOWsrc/streamlink/session/http.py178CODE
LOWsrc/streamlink_cli/streamrunner.py93CODE
LOWsrc/streamlink_cli/main.py118CODE
LOWsrc/streamlink_cli/main.py215CODE
LOWsrc/streamlink_cli/main.py379CODE
LOWsrc/streamlink_cli/main.py445CODE
LOWsrc/streamlink_cli/main.py618CODE
LOWsrc/streamlink_cli/main.py773CODE
LOWsrc/streamlink_cli/main.py1010CODE
LOWsrc/streamlink_cli/argparser.py1651CODE
LOWsrc/streamlink_cli/output/player.py366CODE
LOWsrc/streamlink_cli/console/console.py113CODE
LOWsrc/streamlink_cli/console/stream.py109CODE
LOWsrc/streamlink_cli/console/stream.py130CODE
LOWsrc/streamlink_cli/console/progress.py54CODE
Self-Referential Comments17 hits · 51 pts
SeverityFileLineSnippetContext
MEDIUMscript/generate-cdp.py80# This file is generated from the CDP specification. If you need to makeCOMMENT
MEDIUMsrc/streamlink/plugin/plugin.py494 # Create the best/worst synonymsCOMMENT
MEDIUMsrc/streamlink/webbrowser/cdp/devtools/fetch.py3# This file is generated from the CDP specification. If you need to makeCOMMENT
MEDIUMsrc/streamlink/webbrowser/cdp/devtools/input_.py3# This file is generated from the CDP specification. If you need to makeCOMMENT
MEDIUMsrc/streamlink/webbrowser/cdp/devtools/util.py3# This file is generated from the CDP specification. If you need to makeCOMMENT
MEDIUMsrc/streamlink/webbrowser/cdp/devtools/security.py3# This file is generated from the CDP specification. If you need to makeCOMMENT
MEDIUMsrc/streamlink/webbrowser/cdp/devtools/io.py3# This file is generated from the CDP specification. If you need to makeCOMMENT
MEDIUMsrc/streamlink/webbrowser/cdp/devtools/emulation.py3# This file is generated from the CDP specification. If you need to makeCOMMENT
MEDIUMsrc/streamlink/webbrowser/cdp/devtools/inspector.py3# This file is generated from the CDP specification. If you need to makeCOMMENT
MEDIUMsrc/streamlink/webbrowser/cdp/devtools/__init__.py3# This file is generated from the CDP specification. If you need to makeCOMMENT
MEDIUMsrc/streamlink/webbrowser/cdp/devtools/page.py3# This file is generated from the CDP specification. If you need to makeCOMMENT
MEDIUMsrc/streamlink/webbrowser/cdp/devtools/runtime.py3# This file is generated from the CDP specification. If you need to makeCOMMENT
MEDIUMsrc/streamlink/webbrowser/cdp/devtools/debugger.py3# This file is generated from the CDP specification. If you need to makeCOMMENT
MEDIUMsrc/streamlink/webbrowser/cdp/devtools/browser.py3# This file is generated from the CDP specification. If you need to makeCOMMENT
MEDIUMsrc/streamlink/webbrowser/cdp/devtools/network.py3# This file is generated from the CDP specification. If you need to makeCOMMENT
MEDIUMsrc/streamlink/webbrowser/cdp/devtools/target.py3# This file is generated from the CDP specification. If you need to makeCOMMENT
MEDIUMsrc/streamlink/webbrowser/cdp/devtools/dom.py3# This file is generated from the CDP specification. If you need to makeCOMMENT
Excessive Try-Catch Wrapping44 hits · 46 pts
SeverityFileLineSnippetContext
LOWtests/resources/__init__.py20 except Exception as err: # pragma: no coverCODE
LOWtests/testutils/test_handshake.py24 except Exception as err:CODE
MEDIUMtests/testutils/test_handshake.py18def run(self):CODE
LOWdocs/sphinxext/ext_argparse.py67 except Exception as err:CODE
LOWdocs/sphinxext/ext_plugins.py258 except Exception as err:CODE
LOWscript/github-release.py584 except Exception:STRING
LOWscript/build-shell-completions.py68 except Exception as err:CODE
LOWscript/test-plugin-urls.py167 except Exception as err:CODE
LOWscript/test-plugin-urls.py198 except Exception:CODE
LOWscript/test-plugin-urls.py212 except Exception:CODE
LOWscript/test-plugin-urls.py243 except Exception as err:CODE
MEDIUMscript/test-plugin-urls.py229def main(self) -> int:CODE
LOWsrc/streamlink/cache.py99 except Exception as err:CODE
LOWsrc/streamlink/cache.py145 except Exception as err:CODE
LOWsrc/streamlink/plugins/douyu.py93 except Exception:CODE
LOWsrc/streamlink/plugins/zattoo.py292 except Exception:STRING
LOWsrc/streamlink/plugins/bbciplayer.py154 except Exception:CODE
LOWsrc/streamlink/plugins/kick.py207 except Exception as err:STRING
LOWsrc/streamlink/plugins/kick.py256 except Exception as err:STRING
LOWsrc/streamlink/plugins/twitch.py715 except Exception as err:STRING
LOWsrc/streamlink/plugins/twitcasting.py146 except Exception as err:CODE
LOWsrc/streamlink/stream/wrappers.py86 except Exception:CODE
LOWsrc/streamlink/stream/hls/hls.py411 except Exception as err:CODE
LOWsrc/streamlink/stream/hls/hls.py812 except Exception:CODE
LOWsrc/streamlink/stream/hls/hls.py823 except Exception:CODE
LOWsrc/streamlink/stream/dash/dash.py317 except Exception as err:CODE
LOWsrc/streamlink/plugin/api/webbrowser/aws_waf.py73 except Exception as err:CODE
LOWsrc/streamlink/utils/formatter.py47 except Exception:CODE
LOWsrc/streamlink/utils/processoutput.py91 except Exception:CODE
LOWsrc/streamlink/utils/parse.py15 except Exception as err:CODE
MEDIUMsrc/streamlink/utils/parse.py12def _parse(parser, data, name, exception, schema, *args, **kwargs):CODE
LOWsrc/streamlink/webbrowser/cdp/connection.py255 except Exception as err:CODE
MEDIUMsrc/streamlink/webbrowser/cdp/connection.py94def __anext__(self) -> TCDPEvent:CODE
LOWsrc/streamlink/session/plugins.py288 except Exception:CODE
LOWsrc/streamlink/session/plugins.py294 except Exception:CODE
LOWsrc/streamlink/session/http.py267 except Exception as err:CODE
LOWsrc/streamlink/session/http.py390 except Exception as rerr:CODE
LOWsrc/streamlink_cli/main.py604 except Exception:CODE
LOWsrc/streamlink_cli/main.py967 except Exception as err:CODE
LOWsrc/streamlink_cli/main.py1004 except Exception as err:CODE
LOWsrc/streamlink_cli/utils/versioncheck.py33 except Exception as err:CODE
MEDIUMsrc/streamlink_cli/utils/versioncheck.py25def get_latest() -> str:CODE
LOWsrc/streamlink_cli/console/console.py89 except Exception as err:CODE
LOWsrc/streamlink_cli/console/progress.py97 except Exception:CODE
Modern Structural Boilerplate28 hits · 27 pts
SeverityFileLineSnippetContext
LOWbuild_backend/commands.py15__all__ = ["cmdclass"]CODE
LOWscript/github-release.py282 def update_release(self, release_id: int, payload: dict) -> None:STRING
LOWscript/generate-cdp.py71logger = logging.getLogger(__name__)CODE
LOWsrc/streamlink/options.py76 def set_explicit(self, key: str, value: Any) -> None:CODE
LOWsrc/streamlink/options.py310__all__ = [CODE
LOWsrc/streamlink/compat.py98__all__ = [CODE
LOWsrc/streamlink/cache.py246__all__ = ["Cache"]CODE
LOWsrc/streamlink/logger.py295__all__ = [CODE
LOWsrc/streamlink/exceptions.py53__all__ = [CODE
LOWsrc/streamlink/buffers.py163__all__ = ["Buffer", "RingBuffer"]CODE
LOWsrc/streamlink/stream/stream.py75__all__ = ["Stream", "StreamIO"]CODE
LOWsrc/streamlink/stream/wrappers.py110__all__ = ["StreamIOWrapper", "StreamIOIterWrapper", "StreamIOThreadWrapper"]CODE
LOWsrc/streamlink/plugin/__init__.py14__all__ = [CODE
LOWsrc/streamlink/plugin/plugin.py353 def set_option(self, key: str, value: Any) -> None:CODE
LOWsrc/streamlink/plugin/plugin.py807__all__ = [CODE
LOWsrc/streamlink/utils/times.py138__all__ = [STRING
LOWsrc/streamlink/utils/args.py101__all__ = [CODE
LOWsrc/streamlink/webbrowser/cdp/client.py444 async def _update_user_agent(self) -> None:CODE
LOWsrc/streamlink/webbrowser/cdp/connection.py111 def set_response(self, response: TCmdResponse | Exception) -> None:CODE
LOWsrc/streamlink/session/session.py61 def set_option(self, key: str, value: Any) -> None:CODE
LOWsrc/streamlink/session/session.py204__all__ = ["Streamlink"]CODE
LOWsrc/streamlink/session/http.py178 def set_interface(self, interface: str | None) -> None:CODE
LOWsrc/streamlink/session/http.py241 def set_address_family(self, family: socket.AddressFamily | None = None) -> None:CODE
LOWsrc/streamlink/session/http.py463__all__ = ["HTTPSession", "SSLContextAdapter", "TLSNoDHAdapter", "TLSSecLevel1Adapter"]CODE
LOWsrc/streamlink_cli/compat.py17__all__ = [CODE
LOWsrc/streamlink_cli/constants.py58__all__ = [CODE
LOWsrc/streamlink_cli/argparser.py1713__all__ = ["ArgumentParser", "build_parser", "setup_session_options", "setup_plugin_args", "setup_plugin_options"]CODE
LOWsrc/streamlink_cli/utils/__init__.py10__all__ = [CODE
Hallucination Indicators2 hits · 20 pts
SeverityFileLineSnippetContext
CRITICALtests/cli/main/conftest.py91 streamlink_cli.main.logger.root.handlers.clear()CODE
CRITICALsrc/streamlink/webbrowser/cdp/client.py478 self.cdp_client.streamlink.http.cookies.set(CODE
AI Structural Patterns18 hits · 16 pts
SeverityFileLineSnippetContext
LOWtests/test_logger.py36CODE
LOWsrc/streamlink/options.py101CODE
LOWsrc/streamlink/logger.py241CODE
LOWsrc/streamlink/plugins/ustvnow.py138CODE
LOWsrc/streamlink/plugin/plugin.py714CODE
LOWsrc/streamlink/plugin/api/websocket.py54CODE
LOWsrc/streamlink/webbrowser/cdp/devtools/input_.py235CODE
LOWsrc/streamlink/webbrowser/cdp/devtools/input_.py363CODE
LOWsrc/streamlink/webbrowser/cdp/devtools/input_.py594CODE
LOWsrc/streamlink/webbrowser/cdp/devtools/emulation.py771CODE
LOWsrc/streamlink/webbrowser/cdp/devtools/page.py2552CODE
LOWsrc/streamlink/webbrowser/cdp/devtools/page.py2836CODE
LOWsrc/streamlink/webbrowser/cdp/devtools/runtime.py839CODE
LOWsrc/streamlink/webbrowser/cdp/devtools/runtime.py980CODE
LOWsrc/streamlink/webbrowser/cdp/devtools/network.py3134CODE
LOWsrc/streamlink/webbrowser/cdp/devtools/target.py355CODE
LOWsrc/streamlink/session/http.py322CODE
LOWsrc/streamlink_cli/output/player.py219CODE
Cross-File Repetition3 hits · 15 pts
SeverityFileLineSnippetContext
HIGHpyproject.toml0streamlink is a command-line utility that extracts streams from various services and pipes them into a video player of cSTRING
HIGHtests/cli/main/test_logging.py0streamlink is a command-line utility that extracts streams from various services and pipes them into a video player of cSTRING
HIGHsrc/streamlink_cli/argparser.py0streamlink is a command-line utility that extracts streams from various services and pipes them into a video player of cSTRING
Over-Commented Block9 hits · 9 pts
SeverityFileLineSnippetContext
LOWbuild_backend/__init__.py21 config_settings: dict | None = None,COMMENT
LOWscript/generate-cdp.py1#!/usr/bin/env pythonCOMMENT
LOWsrc/streamlink/plugins/twitch.py101 # Use the average duration of all regular segments for the duration of prefetch segments.COMMENT
LOWsrc/streamlink/utils/url.py41 # urlparse("127.0.0.1:1234") == ParseResult(scheme='127.0.0.1', netloc='', path='1234/foo', ...)COMMENT
LOWsrc/streamlink/webbrowser/chromium.py101 # Disable some built-in extensions that aren't affected by `--disable-extensions`COMMENT
LOWsrc/streamlink/webbrowser/cdp/connection.py121# Copyright (c) 2018 Hyperion GrayCOMMENT
LOWsrc/streamlink/webbrowser/cdp/devtools/network.py3541 #: Each request the page makes will have a unique id, however if any redirects are encounteredCOMMENT
LOWsrc/streamlink/webbrowser/cdp/devtools/network.py4241COMMENT
LOWsrc/streamlink/session/http.py61 return socket.AF_INETCOMMENT
Decorative Section Separators2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMtests/conftest.py90# ========================COMMENT
MEDIUMtests/conftest.py92# ========================COMMENT
AI Slop Vocabulary4 hits · 5 pts
SeverityFileLineSnippetContext
LOWsrc/streamlink/plugins/bloomberg.py156 # just return the first streamCOMMENT
LOWsrc/streamlink/plugins/nrk.py106 # just return the first itemCOMMENT
LOWsrc/streamlink/plugins/twitch.py1033 # Don't raise and simply return no streams on 4xx/5xx playlist responsesSTRING
LOWsrc/streamlink/plugins/pandalive.py133 # all stream qualities share the same URL, so just use the first oneCOMMENT
Fake / Example Data4 hits · 4 pts
SeverityFileLineSnippetContext
LOWtests/plugins/test_ustvnow.py20 b'{"login_id":"test@test.com","login_key":"testtest1234","login_mode":"1","manufacturer":"123"}',CODE
LOWsrc/streamlink/plugins/radiko.py78 "x-radiko-user": "dummy_user",CODE
LOWsrc/streamlink/plugins/radiko.py90 "x-radiko-user": "dummy_user",CODE
LOWsrc/streamlink/webbrowser/cdp/devtools/dom.py119 PLACEHOLDER = "placeholder"CODE
Redundant / Tautological Comments3 hits · 4 pts
SeverityFileLineSnippetContext
LOWsrc/streamlink/plugins/twitch.py1008 # Check if the media playlists are accessible:STRING
LOWsrc/streamlink/packages/requests_file.py67 # Open the file, translate certain errors into HTTP responsesCOMMENT
LOWsrc/streamlink/packages/requests_file.py109 # Check if the drive assumptions above were correct. If path_driveCOMMENT
Dead Code1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUMsrc/streamlink/stream/segmented/segmented.py269CODE
Slop Phrases1 hit · 2 pts
SeverityFileLineSnippetContext
LOWsrc/streamlink/webbrowser/cdp/devtools/runtime.py144 #: NOTE: If you change anything here, make sure to also updateCOMMENT
TODO Padding1 hit · 2 pts
SeverityFileLineSnippetContext
LOWsrc/streamlink_cli/streamrunner.py108 # TODO: Fix error messages (s/when/while/) and only log "Stream ended" when it ended on its own (data == b"").COMMENT