AI Slop Code RIsk Monitor

spotDL/spotify-downloader

Download your Spotify playlists and songs along with album art and metadata (from YouTube if a match is found).

7.7 Moderate pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for spotDL/spotify-downloader, a Python project with 26,295 GitHub stars. SynthScan examined 48,085 lines of code across 142 source files, recording 266 pattern matches distributed across 13 syntactic categories. The legacy adjusted pattern signal is 7.7 (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.

7.7
Adjusted Signal
7.7
Raw Pattern Score
100%
Time Factor
2026-10-09
Last Push
26.3K
Stars
Python
Language
48.1K
Lines of Code
142
Files
266
Pattern Hits
2026-10-12
Scan Date
0.12
HC Hit Rate

Risk Review · v3

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

Cognitive Ownership Risk 14.9/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 3.3/100 · LOW

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

Agent Over-Engineering Ratio 22.3/100 · LOW

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

PR Review Velocity Impact 32.6/100 · MEDIUM

Which changes need focused human review? 266 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 17MEDIUM 14LOW 235

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 266 distinct pattern matches across 13 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.

Modern Structural Boilerplate83 hits · 84 pts
SeverityFileLineSnippetContext
LOWspotdl/__init__.py20__all__ = ["Spotdl", "console_entry_point", "__version__"]CODE
LOWspotdl/__init__.py22logger = logging.getLogger(__name__)CODE
LOWspotdl/types/options.py11__all__ = [CODE
LOWspotdl/types/album.py11__all__ = ["Album", "AlbumError"]CODE
LOWspotdl/types/artist.py13__all__ = ["Artist", "ArtistError"]CODE
LOWspotdl/types/result.py10__all__ = ["Result"]CODE
LOWspotdl/types/playlist.py12__all__ = ["Playlist", "PlaylistError"]CODE
LOWspotdl/types/playlist.py14logger = logging.getLogger(__name__)CODE
LOWspotdl/types/saved.py11__all__ = ["Saved", "SavedError"]CODE
LOWspotdl/types/song.py13__all__ = ["Song", "SongList", "SongError"]CODE
LOWspotdl/web/api.py33__all__ = [CODE
LOWspotdl/web/routes.py28__all__ = ["router"]CODE
LOWspotdl/providers/lyrics/genius.py13__all__ = ["Genius"]CODE
LOWspotdl/providers/lyrics/musixmatch.py14__all__ = ["MusixMatch"]CODE
LOWspotdl/providers/lyrics/synced.py12__all__ = ["Synced"]CODE
LOWspotdl/providers/lyrics/__init__.py11__all__ = ["AzLyrics", "Genius", "MusixMatch", "Synced", "LyricsProvider"]CODE
LOWspotdl/providers/lyrics/base.py11__all__ = ["LyricsProvider"]CODE
LOWspotdl/providers/lyrics/base.py12logger = logging.getLogger(__name__)CODE
LOWspotdl/providers/lyrics/azlyrics.py13__all__ = ["AzLyrics"]CODE
LOWspotdl/providers/lyrics/azlyrics.py14logger = logging.getLogger(__name__)CODE
LOWspotdl/providers/audio/bandcamp.py16__all__ = ["BandCamp"]CODE
LOWspotdl/providers/audio/bandcamp.py18logger = logging.getLogger(__name__)CODE
LOWspotdl/providers/audio/youtube.py12__all__ = ["YouTube"]CODE
LOWspotdl/providers/audio/sliderkz.py14__all__ = ["SliderKZ"]CODE
LOWspotdl/providers/audio/sliderkz.py16logger = logging.getLogger(__name__)CODE
LOWspotdl/providers/audio/__init__.py17__all__ = [CODE
LOWspotdl/providers/audio/soundcloud.py16__all__ = ["SoundCloud"]CODE
LOWspotdl/providers/audio/soundcloud.py18logger = logging.getLogger(__name__)CODE
LOWspotdl/providers/audio/ytmusic.py14__all__ = ["YouTubeMusic"]CODE
LOWspotdl/providers/audio/ytmusic.py16logger = logging.getLogger(__name__)CODE
LOWspotdl/providers/audio/base.py23__all__ = ["AudioProviderError", "AudioProvider", "ISRC_REGEX", "YTDLLogger"]CODE
LOWspotdl/providers/audio/base.py25logger = logging.getLogger(__name__)CODE
LOW⚡spotdl/providers/audio/piped.py17__all__ = ["Piped"]CODE
LOW⚡spotdl/providers/audio/piped.py18logger = logging.getLogger(__name__)CODE
LOWspotdl/utils/logging.py16__all__ = [CODE
LOWspotdl/utils/console.py15__all__ = [CODE
LOWspotdl/utils/formatter.py23__all__ = [CODE
LOWspotdl/utils/formatter.py73logger = logging.getLogger(__name__)CODE
LOWspotdl/utils/web.py23__all__ = [CODE
LOWspotdl/utils/config.py22__all__ = [CODE
LOWspotdl/utils/config.py39logger = logging.getLogger(__name__)CODE
LOWspotdl/utils/metadata.py49logger = logging.getLogger(__name__)CODE
LOWspotdl/utils/metadata.py51__all__ = [CODE
LOWspotdl/utils/downloader.py7__all__ = ["check_ytmusic_connection"]CODE
LOWspotdl/utils/arguments.py17__all__ = ["OPERATIONS", "SmartFormatter", "parse_arguments"]CODE
LOWspotdl/utils/ffmpeg.py24__all__ = [CODE
LOWspotdl/utils/matching.py20__all__ = [CODE
LOWspotdl/utils/matching.py40logger = logging.getLogger(__name__)CODE
LOWspotdl/utils/m3u.py12__all__ = [CODE
LOWspotdl/utils/m3u.py18logger = logging.getLogger(__name__)CODE
LOWspotdl/utils/static.py9__all__ = [CODE
LOWspotdl/utils/archive.py8__all__ = ["Archive"]CODE
LOWspotdl/utils/search.py26__all__ = [CODE
LOWspotdl/utils/search.py40logger = logging.getLogger(__name__)CODE
LOWspotdl/utils/deno.py19logger = logging.getLogger(__name__)CODE
LOWspotdl/utils/deno.py21__all__ = [CODE
LOWspotdl/utils/github.py15__all__ = [CODE
LOWspotdl/utils/spotify.py23__all__ = [CODE
LOWspotdl/utils/spotify.py29logger = logging.getLogger(__name__)CODE
LOWspotdl/utils/lrc.py16logger = logging.getLogger(__name__)CODE
23 more matches not shown…
Cross-File Repetition13 hits · 65 pts
SeverityFileLineSnippetContext
HIGHspotdl/providers/lyrics/genius.py0returns the results for the given song. ### arguments - name: the name of the song. - artists: the artists of the song. STRING
HIGHspotdl/providers/lyrics/musixmatch.py0returns the results for the given song. ### arguments - name: the name of the song. - artists: the artists of the song. STRING
HIGHspotdl/providers/lyrics/synced.py0returns the results for the given song. ### arguments - name: the name of the song. - artists: the artists of the song. STRING
HIGHspotdl/providers/lyrics/base.py0returns the results for the given song. ### arguments - name: the name of the song. - artists: the artists of the song. STRING
HIGHspotdl/providers/lyrics/azlyrics.py0returns the results for the given song. ### arguments - name: the name of the song. - artists: the artists of the song. STRING
HIGHspotdl/providers/lyrics/genius.py0extracts the lyrics from the given url. ### arguments - url: the url to extract the lyrics from. - kwargs: additional arSTRING
HIGHspotdl/providers/lyrics/musixmatch.py0extracts the lyrics from the given url. ### arguments - url: the url to extract the lyrics from. - kwargs: additional arSTRING
HIGHspotdl/providers/lyrics/synced.py0extracts the lyrics from the given url. ### arguments - url: the url to extract the lyrics from. - kwargs: additional arSTRING
HIGHspotdl/providers/lyrics/base.py0extracts the lyrics from the given url. ### arguments - url: the url to extract the lyrics from. - kwargs: additional arSTRING
HIGHspotdl/providers/lyrics/azlyrics.py0extracts the lyrics from the given url. ### arguments - url: the url to extract the lyrics from. - kwargs: additional arSTRING
HIGHspotdl/providers/audio/bandcamp.py0get results from soundcloud ### arguments - search_term: the search term to search for. - args: unused. - kwargs: unusedSTRING
HIGHspotdl/providers/audio/sliderkz.py0get results from soundcloud ### arguments - search_term: the search term to search for. - args: unused. - kwargs: unusedSTRING
HIGHspotdl/providers/audio/soundcloud.py0get results from soundcloud ### arguments - search_term: the search term to search for. - args: unused. - kwargs: unusedSTRING
Hyper-Verbose Identifiers55 hits · 55 pts
SeverityFileLineSnippetContext
LOWtests/conftest.py76def fake_create_subprocess_exec(*args, stdout=None, stderr=None, **kwargs):CODE
LOWtests/types/test_song.py112# def test_song_from_search_term():COMMENT
LOWtests/types/test_song.py197def test_song_from_data_dump_wrong_type():CODE
LOWtests/types/test_playlist.py30def test_playlist_wrong_initget_results():CODE
LOWtests/types/test_playlist.py61def test_playlist_from_string():CODE
LOWtests/providers/lyrics/test_musixmatch.py7# def test_get_musixmatch_lyrics():COMMENT
LOWtests/providers/audio/test_youtube.py84def test_yt_get_results_normalizes_null_metadata(mocker):CODE
LOWtests/providers/audio/test_bandcamp_piped.py79def malformed_optional_bandcamp_payload():CODE
LOWtests/providers/audio/test_bandcamp_piped.py132def test_bandcamp_search_handles_invalid_json_and_malformed_rows(monkeypatch):CODE
LOWtests/providers/audio/test_bandcamp_piped.py160def test_bandcamp_get_results_handles_bad_candidates_and_optional_data(monkeypatch):CODE
LOWtests/providers/audio/test_bandcamp_piped.py203def test_piped_get_results_handles_failed_api_responses_and_malformed_rows():CODE
LOWtests/providers/audio/test_bandcamp_piped.py263def test_piped_get_results_uses_api_proxy_isrc_and_canonical_youtube_url():CODE
LOWtests/providers/audio/test_bandcamp_piped.py282def test_piped_get_download_metadata_delegates_to_yt_dlp_with_proxy(mocker):CODE
LOWtests/providers/audio/test_ytmusic.py54def test_ytm_get_results_retries_with_new_client(mocker):CODE
LOWtests/utils/test_logging.py8def test_spotdl_formatter_format():CODE
LOWtests/utils/test_search.py94def test_get_simple_songs_skips_missing_video_details(monkeypatch):CODE
LOWtests/utils/test_github.py35def test_check_for_updates_fail(monkeypatch):CODE
LOWtests/utils/test_formatter.py104def test_create_file_name_restrict():CODE
LOW⚡tests/utils/test_config.py51def test_get_config_not_created(setup):CODE
LOW⚡tests/utils/test_config.py60def test_use_official_api_default():CODE
LOW⚡tests/utils/test_config.py70def test_use_official_api_from_config():CODE
LOWtests/utils/test_config.py84def test_use_official_api_argument_overrides_config():CODE
LOWtests/utils/test_matching.py4def test_calc_album_match_without_song_album(mocker):CODE
LOWtests/utils/test_ffmpeg.py29def test_is_not_ffmpeg_installed(monkeypatch):STRING
LOWtests/utils/test_ffmpeg.py42def test_get_none_ffmpeg_path(monkeypatch):STRING
LOWtests/utils/test_ffmpeg.py55def test_get_none_ffmpeg_version(monkeypatch):STRING
LOWtests/utils/test_ffmpeg.py69def test_get_none_local_ffmpeg(monkeypatch):STRING
LOWtests/utils/test_downloader.py4def test_check_ytmusic_connection_suppresses_empty_search_log(mocker):CODE
LOWtests/utils/test_deno.py33def test_is_not_deno_installed(monkeypatch):CODE
LOWtests/utils/test_deno.py84def test_get_local_deno_yt_dlp_options(monkeypatch, tmp_path):CODE
LOWtests/utils/test_deno.py104def test_get_local_deno_yt_dlp_options_ignores_non_executable(monkeypatch, tmp_path):CODE
LOWtests/utils/test_deno.py118def test_get_local_deno_yt_dlp_options_ignores_missing_local(monkeypatch):CODE
LOWtests/utils/test_deno.py128def test_user_js_runtime_overrides_local_deno(monkeypatch, tmp_path):CODE
LOWtests/utils/test_deno.py147def test_audio_provider_uses_local_deno_yt_dlp_options(monkeypatch, tmp_path):CODE
LOWtests/utils/test_deno.py173def test_piped_uses_local_deno_yt_dlp_options(monkeypatch, tmp_path):CODE
LOWtests/utils/test_deno.py240def test_download_deno_unsupported_platform(monkeypatch):CODE
LOWtests/utils/test_deno.py252def test_download_deno_invalid_archive(monkeypatch, tmp_path):CODE
LOWtests/utils/test_spotify.py45def test_init_uses_free_client_by_default(monkeypatch):CODE
LOWtests/utils/test_spotify.py94def test_init_uses_official_client_when_requested(monkeypatch):CODE
LOWtests/utils/test_spotify.py144def test_init_uses_official_client_for_official_api_only_options(monkeypatch, caplog):CODE
LOWtests/utils/test_arguments.py11def test_parse_use_official_api(monkeypatch):CODE
LOWspotdl/web/routes.py153async def handle_get_client_downloads(datastar_signals: ReadSignals):CODE
LOWspotdl/web/routes.py183async def handle_get_client_settings(datastar_signals: ReadSignals):CODE
LOWspotdl/web/routes.py207async def handle_post_client_settings(datastar_signals: ReadSignals):CODE
LOWspotdl/web/routes.py281async def handle_post_client_download(datastar_signals: ReadSignals):STRING
LOWspotdl/web/routes.py348async def handle_get_client_component_settings(datastar_signals: ReadSignals):STRING
LOWspotdl/web/routes.py388async def handle_client_component_search_input_rotating_placeholder():CODE
LOW⚡spotdl/providers/audio/piped.py26def _legacy_piped_watch_url_to_youtube(url: str) -> str:CODE
LOWspotdl/utils/search.py471def get_user_followed_artists() -> List[Artist]:CODE
LOWspotdl/utils/search.py581def get_song_from_file_metadata(file: Path, id3_separator: str = "/") -> Optional[Song]:CODE
LOWspotdl/utils/deno.py120def get_local_deno_yt_dlp_options() -> Dict[str, Dict[str, Dict[str, str]]]:CODE
LOWspotdl/utils/spotify.py152def _init_official_spotify_client(**kwargs) -> _OfficialSpotifyClient:CODE
LOWspotdl/utils/spotify.py160def _init_free_spotify_client(**kwargs) -> Any:CODE
LOWspotdl/download/downloader.py448 async def async_search_and_download( # pylint: disable=R0911CODE
LOWspotdl/download/progress_handler.py449 def notify_conversion_complete(self, status="Embedding metadata") -> None:CODE
Self-Referential Comments14 hits · 42 pts
SeverityFileLineSnippetContext
MEDIUMspotdl/web/routes.py93 # Create a new client if not foundCOMMENT
MEDIUMspotdl/utils/logging.py178 # Create a rich handlerCOMMENT
MEDIUMspotdl/utils/config.py62 # Define the new, correct XDG config path (~/.config/spotdl)COMMENT
MEDIUMspotdl/utils/config.py65 # Define the old path (~/.spotdl) for backward compatibilityCOMMENT
MEDIUMspotdl/utils/metadata.py299 # Create the image object for the file typeCOMMENT
MEDIUMspotdl/utils/m3u.py145 # Create a single m3u file for specified song list nameCOMMENT
MEDIUMspotdl/download/downloader.py501 # Create the output file pathCOMMENT
MEDIUMspotdl/download/downloader.py518 # Create the temp folder pathCOMMENT
MEDIUMspotdl/download/downloader.py681 # Create the output directory if it doesn't existCOMMENT
MEDIUMspotdl/console/save.py88 # The following function calls blocking code, which would block whole event loop.COMMENT
MEDIUMspotdl/console/web.py58 # Create the event loopCOMMENT
MEDIUMspotdl/console/url.py58 # The following function calls blocking code, which would block whole event loop.COMMENT
MEDIUMspotdl/console/meta.py36 # Create a list of all songs from all paths in queryCOMMENT
MEDIUMspotdl/console/meta.py152 # The following function calls blocking code, which would block whole event loop.COMMENT
Redundant / Tautological Comments24 hits · 36 pts
SeverityFileLineSnippetContext
LOWspotdl/types/playlist.py85 # Add tracks to the listCOMMENT
LOWspotdl/providers/audio/sliderkz.py60 # Check if the response is validCOMMENT
LOWspotdl/providers/audio/base.py260 # Check if any of the search results is in theCOMMENT
LOWspotdl/utils/formatter.py351 # Check if the file name length is greater than the limitCOMMENT
LOWspotdl/utils/web.py128 # Add the connection to the list of connectionsCOMMENT
LOWspotdl/utils/metadata.py357 # Check if the lyrics are in lrc formatCOMMENT
LOWspotdl/utils/metadata.py613 # Check if the lyrics are in lrc formatCOMMENT
LOWspotdl/utils/downloader.py19 # Check if we are getting results from YouTube MusicCOMMENT
LOWspotdl/utils/ffmpeg.py119 # Check if ffmpeg is installedCOMMENT
LOWspotdl/utils/ffmpeg.py144 # Check if ffmpeg is installedCOMMENT
LOWspotdl/utils/matching.py489 # # Check if the main artist is simlarCOMMENT
LOWspotdl/utils/matching.py494 # Check if other song artists are in the result nameCOMMENT
LOWspotdl/utils/matching.py735 # Check if result contains forbidden wordsCOMMENT
LOWspotdl/utils/m3u.py110 # Check if the file name ends with .m3u or .m3u8COMMENT
LOWspotdl/utils/github.py165 # Check if the given url is a url to a GitHub repo. If it is, tell theCOMMENT
LOWspotdl/download/downloader.py468 # Check if song has name/artist and url/song_idCOMMENT
LOWspotdl/download/downloader.py521 # Check if there is an already existing song file, with the same spotify URL in itsCOMMENT
LOWspotdl/console/entry_point.py64 # Check if sys.argv contains an actionCOMMENT
LOWspotdl/console/entry_point.py91 # Check if ffmpeg is installedCOMMENT
LOWspotdl/console/entry_point.py98 # Check if we might be blocked by YouTube Music without stopping downloads.COMMENT
LOWspotdl/console/entry_point.py123 # Check if save file is present and if it's validCOMMENT
LOWspotdl/console/entry_point.py130 # Check if the user is logged inCOMMENT
LOWspotdl/console/meta.py58 # Check if song has metadataCOMMENT
LOWspotdl/console/meta.py122 # Check if the song has lyricCOMMENT
Unused Imports29 hits · 29 pts
SeverityFileLineSnippetContext
LOWtests/test_main.py3CODE
LOWtests/types/test_song.py3CODE
LOWtests/utils/test_logging.py3CODE
LOWtests/utils/test_archive.py1CODE
LOWtests/utils/test_formatter.py3CODE
LOWtests/utils/test_config.py7CODE
LOWtests/utils/test_m3u.py1CODE
LOWtests/utils/test_ffmpeg.py12CODE
LOWtests/utils/test_deno.py10CODE
LOWspotdl/__init__.py12CODE
LOWspotdl/__init__.py13CODE
LOWspotdl/__main__.py5CODE
LOWspotdl/web/utils.py7CODE
LOWspotdl/providers/lyrics/__init__.py5CODE
LOWspotdl/providers/lyrics/__init__.py6CODE
LOWspotdl/providers/lyrics/__init__.py7CODE
LOWspotdl/providers/lyrics/__init__.py8CODE
LOWspotdl/providers/lyrics/__init__.py9CODE
LOWspotdl/providers/audio/__init__.py5CODE
LOWspotdl/providers/audio/__init__.py6CODE
LOWspotdl/providers/audio/__init__.py6CODE
LOWspotdl/providers/audio/__init__.py6CODE
LOWspotdl/providers/audio/__init__.py6CODE
LOWspotdl/providers/audio/__init__.py12CODE
LOWspotdl/providers/audio/__init__.py13CODE
LOWspotdl/providers/audio/__init__.py14CODE
LOWspotdl/providers/audio/__init__.py15CODE
LOWspotdl/utils/logging.py9CODE
LOWspotdl/console/__init__.py5CODE
Excessive Try-Catch Wrapping21 hits · 20 pts
SeverityFileLineSnippetContext
LOWtests/conftest.py61 except Exception:CODE
LOWspotdl/__init__.py142 except Exception as exc:CODE
LOWspotdl/web/api.py203 except Exception as exception:CODE
LOWspotdl/web/routes.py339 except Exception as exception:STRING
LOWspotdl/providers/lyrics/base.py82 except Exception as exc:CODE
LOWspotdl/providers/lyrics/base.py120 except Exception as exc:CODE
LOWspotdl/providers/audio/bandcamp.py219 except Exception as exc:CODE
LOWspotdl/providers/audio/sliderkz.py66 except Exception as exc:CODE
LOWspotdl/providers/audio/base.py404 except Exception as exception:CODE
LOWspotdl/utils/metadata.py195 except Exception as exc:CODE
LOWspotdl/utils/metadata.py296 except Exception:CODE
LOWspotdl/utils/metadata.py609 except Exception:CODE
LOWspotdl/utils/search.py113 except Exception as exc:CODE
LOWspotdl/utils/lrc.py35 except Exception:CODE
LOWspotdl/download/downloader.py496 except Exception as e:CODE
LOWspotdl/download/downloader.py608 except Exception as exc:CODE
LOWspotdl/download/downloader.py876 except Exception as exception:CODE
LOWspotdl/console/save.py64 except Exception as exception:CODE
LOWspotdl/console/save.py81 except Exception as exception:CODE
LOWspotdl/console/entry_point.py164 except Exception as exc:CODE
LOWspotdl/console/url.py51 except Exception as exception:CODE
Empty Error Handlers3 hits · 15 pts
SeverityFileLineSnippetContext
HIGHspotdl/providers/lyrics/azlyrics.py182except (requests.ConnectionError, requests.TooManyRedirects):CODE
HIGHspotdl/utils/metadata.py609except Exception:CODE
HIGHspotdl/download/downloader.py432except RuntimeError:CODE
Deep Nesting12 hits · 12 pts
SeverityFileLineSnippetContext
LOWspotdl/providers/audio/base.py160CODE
LOWspotdl/utils/metadata.py277CODE
LOWspotdl/utils/metadata.py384CODE
LOWspotdl/utils/ffmpeg.py311CODE
LOWspotdl/utils/ffmpeg.py419CODE
LOWspotdl/utils/m3u.py21CODE
LOWspotdl/utils/search.py119CODE
LOWspotdl/download/downloader.py98CODE
LOWspotdl/download/downloader.py448CODE
LOWspotdl/console/sync.py21CODE
LOWspotdl/console/meta.py22CODE
LOWspotdl/console/meta.py54CODE
Over-Commented Block7 hits · 7 pts
SeverityFileLineSnippetContext
LOWtests/test_matching.py261 ),COMMENT
LOWtests/types/test_song.py121# assert song.album_name == "Ropes"COMMENT
LOWtests/providers/lyrics/test_azlyrics.py1# import pytestCOMMENT
LOWtests/providers/lyrics/test_musixmatch.py1# import pytestCOMMENT
LOWspotdl/web/api.py41router = APIRouter()COMMENT
LOWspotdl/web/api.py61# if (COMMENT
LOWspotdl/providers/lyrics/azlyrics.py161COMMENT
AI Structural Patterns3 hits · 3 pts
SeverityFileLineSnippetContext
LOWtests/conftest.py46CODE
LOWspotdl/utils/formatter.py122CODE
LOWspotdl/utils/spotify.py209CODE
Cross-Language Confusion1 hit · 2 pts
SeverityFileLineSnippetContext
HIGHtests/types/test_song.py163 "download_url": null,STRING
Fake / Example Data1 hit · 1 pts
SeverityFileLineSnippetContext
LOWspotdl/web/static/assets/tailwindcss/browser@4.js7"use strict";(()=>{var e=10;function t(t,i){let a=i?.from?{file:i.from,code:t}:null;"\ufeff"===t[0]&&(t=" "+t.slice(1));CODE