Repository Analysis

spotDL/spotify-downloader

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

7.3 Low AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of spotDL/spotify-downloader, a Python project with 25,414 GitHub stars. SynthScan v2.0 examined 47,392 lines of code across 139 source files, recording 254 pattern matches distributed across 12 syntactic categories. The overall adjusted score of 7.3 places this repository in the Low AI signal band.

The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).

7.3
Adjusted Score
7.3
Raw Score
100%
Time Factor
2026-07-11
Last Push
25.4K
Stars
Python
Language
47.4K
Lines of Code
139
Files
254
Pattern Hits
2026-07-14
Scan Date
0.10
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.

Severity Breakdown

Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.

CRITICAL 0HIGH 14MEDIUM 14LOW 226

Directory Score Breakdown

This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.

Pattern Findings

The scanner identified 254 distinct pattern matches across 12 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.

Modern Structural Boilerplate83 hits · 83 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.py27__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.py14__all__ = ["BandCamp"]CODE
LOWspotdl/providers/audio/bandcamp.py16logger = 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
LOWspotdl/providers/audio/piped.py23__all__ = ["Piped"]CODE
LOWspotdl/providers/audio/piped.py24logger = 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.py21__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 slider.kz ### arguments - search_term: the search term to search for. - args: unused. - kwargs: unused.STRING
HIGHspotdl/providers/audio/sliderkz.py0get results from slider.kz ### arguments - search_term: the search term to search for. - args: unused. - kwargs: unused.STRING
HIGHspotdl/providers/audio/soundcloud.py0get results from slider.kz ### arguments - search_term: the search term to search for. - args: unused. - kwargs: unused.STRING
Hyper-Verbose Identifiers45 hits · 44 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_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_github.py35def test_check_for_updates_fail(monkeypatch):CODE
LOWtests/utils/test_formatter.py104def test_create_file_name_restrict():CODE
LOWtests/utils/test_config.py51def test_get_config_not_created(setup):CODE
LOWtests/utils/test_config.py60def test_use_official_api_default():CODE
LOWtests/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_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.py239def test_download_deno_unsupported_platform(monkeypatch):CODE
LOWtests/utils/test_deno.py251def 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.py152async def handle_get_client_downloads(datastar_signals: ReadSignals):CODE
LOWspotdl/web/routes.py182async def handle_get_client_settings(datastar_signals: ReadSignals):CODE
LOWspotdl/web/routes.py206async def handle_post_client_settings(datastar_signals: ReadSignals):CODE
LOWspotdl/web/routes.py280async def handle_post_client_download(datastar_signals: ReadSignals):STRING
LOWspotdl/web/routes.py347async def handle_get_client_component_settings(datastar_signals: ReadSignals):STRING
LOWspotdl/web/routes.py387async def handle_client_component_search_input_rotating_placeholder():CODE
LOWspotdl/utils/search.py463def get_user_followed_artists() -> List[Artist]:CODE
LOWspotdl/utils/search.py573def 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/progress_handler.py444 def notify_conversion_complete(self, status="Embedding metadata") -> None:CODE
Self-Referential Comments14 hits · 42 pts
SeverityFileLineSnippetContext
MEDIUMspotdl/web/routes.py92 # Create a new client if not foundCOMMENT
MEDIUMspotdl/utils/logging.py187 # 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.py473 # Create the output file pathCOMMENT
MEDIUMspotdl/download/downloader.py490 # Create the temp folder pathCOMMENT
MEDIUMspotdl/download/downloader.py650 # 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 Comments25 hits · 38 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.py254 # 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.py115 # Check if ffmpeg is installedCOMMENT
LOWspotdl/utils/ffmpeg.py139 # Check if ffmpeg is installedCOMMENT
LOWspotdl/utils/ffmpeg.py320 # Check if bitrate is an integerCOMMENT
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.py441 # Check if song has name/artist and url/song_idCOMMENT
LOWspotdl/download/downloader.py493 # 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 Wrapping22 hits · 22 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.py338 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.py188 except Exception as exc:CODE
LOWspotdl/providers/audio/sliderkz.py66 except Exception as exc:CODE
LOWspotdl/providers/audio/base.py398 except Exception as exception:CODE
LOWspotdl/providers/audio/piped.py203 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.py468 except Exception as e:CODE
LOWspotdl/download/downloader.py580 except Exception as exc:CODE
LOWspotdl/download/downloader.py837 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
Deep Nesting11 hits · 11 pts
SeverityFileLineSnippetContext
LOWspotdl/providers/audio/base.py154CODE
LOWspotdl/utils/metadata.py277CODE
LOWspotdl/utils/metadata.py384CODE
LOWspotdl/utils/ffmpeg.py251CODE
LOWspotdl/utils/m3u.py21CODE
LOWspotdl/utils/search.py119CODE
LOWspotdl/download/downloader.py98CODE
LOWspotdl/download/downloader.py425CODE
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.py161 js_code = NoneCOMMENT
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