https://github.com/AliAkhtari78/SpotifyScraper
· scanned 2026-06-17 01:14 UTC (1 month, 2 weeks ago)
28 raw signals (0 security + 28 graph)
Last scanned 1 month, 2 weeks ago · v2 · last Δ +2.6 (diff) · 14 actionable findings from 1 signal source. 14 repeated signals grouped for readability. Security checks, system graph analysis, and verified AI-agent feedback are merged into one review queue.
All 1070 nodes from the latest scan, grouped by kind. Each node is a unit the engine identified (file, function, endpoint, table…). Most users won't need this view — it's primarily for debugging the engine's graph extraction or for AI agents that want to enumerate the project structure.
| Label | Layer | Status | Path |
|---|---|---|---|
test_missing_extra_raises_with_both_install_commands |
software | healthy | tests/browser/test_playwright_transport.py:24 |
_block_playwright |
software | healthy | tests/browser/test_playwright_transport.py:30 |
transport |
software | healthy | tests/browser/test_playwright_transport.py:49 |
test_satisfies_transport_protocol |
software | healthy | tests/browser/test_playwright_transport.py:61 |
test_embed_fetch_returns_parseable_next_data |
software | healthy | tests/browser/test_playwright_transport.py:73 |
test_client_fetches_track_through_browser_transport |
software | healthy | tests/browser/test_playwright_transport.py:85 |
read_id3 |
software | healthy | tests/live/test_media.py:17 |
test_download_cover_and_preview_live |
software | healthy | tests/live/test_media.py:24 |
test_download_cover_and_preview_live_async |
software | healthy | tests/live/test_media.py:44 |
test_get_track_live |
software | healthy | tests/live/test_track.py:13 |
test_get_track_live_async |
software | healthy | tests/live/test_track.py:25 |
_embed_next_data |
software | healthy | tests/unit/test_client_entities.py:51 |
_pathfinder_body |
software | healthy | tests/unit/test_client_entities.py:55 |
_embed_url |
software | healthy | tests/unit/test_client_entities.py:59 |
_embed_html |
software | healthy | tests/unit/test_client_entities.py:63 |
_mock |
software | healthy | tests/unit/test_client_entities.py:72 |
test_get_album_happy_path |
software | healthy | tests/unit/test_client_entities.py:85 |
test_get_artist_happy_path |
software | healthy | tests/unit/test_client_entities.py:97 |
test_get_playlist_happy_path |
software | healthy | tests/unit/test_client_entities.py:108 |
test_get_episode_happy_path |
software | healthy | tests/unit/test_client_entities.py:120 |
test_get_show_happy_path |
software | healthy | tests/unit/test_client_entities.py:130 |
test_pathfinder_uses_embed_token |
software | healthy | tests/unit/test_client_entities.py:147 |
test_episode_degrades_to_embed_on_gql_error |
software | healthy | tests/unit/test_client_entities.py:165 |
_playlist_page |
software | healthy | tests/unit/test_client_entities.py:186 |
test_playlist_pagination_collects_all_pages |
software | healthy | tests/unit/test_client_entities.py:203 |
test_playlist_pagination_stops_at_max_tracks |
software | healthy | tests/unit/test_client_entities.py:229 |
test_playlist_pagination_tail_failure_returns_collected |
software | healthy | tests/unit/test_client_entities.py:245 |
_show_episodes_page |
software | healthy | tests/unit/test_client_entities.py:265 |
_show_router |
software | healthy | tests/unit/test_client_entities.py:281 |
handler |
software | healthy | tests/unit/test_client_entities.py:368 |
test_show_episode_pagination_spans_pages |
software | healthy | tests/unit/test_client_entities.py:298 |
test_show_episode_listing_failure_returns_metadata |
software | healthy | tests/unit/test_client_entities.py:316 |
_mixed_playlist_page |
software | healthy | tests/unit/test_client_entities.py:338 |
test_playlist_pagination_with_non_track_items_no_dupes_or_s… |
software | healthy | tests/unit/test_client_entities.py:359 |
test_album_single_page_does_not_overpaginate |
software | healthy | tests/unit/test_client_entities.py:389 |
test_playlist_skips_local_file_items |
software | healthy | tests/unit/test_client_entities.py:410 |
_variables |
software | healthy | tests/unit/test_client_entities.py:430 |
__init__ |
software | healthy | tests/unit/test_client_entities.py:462 |
headers |
software | healthy | tests/unit/test_client_entities.py:446 |
text |
software | healthy | tests/unit/test_client_entities.py:450 |
content |
software | healthy | tests/unit/test_client_entities.py:454 |
json |
software | healthy | tests/unit/test_client_entities.py:457 |
get |
software | healthy | tests/unit/test_client_entities.py:467 |
close |
software | healthy | tests/unit/test_client_entities.py:473 |
test_custom_transport_drives_get_show |
software | healthy | tests/unit/test_client_entities.py:477 |
test_version_is_pep440 |
software | healthy | tests/unit/test_package.py:8 |
embed_html |
software | healthy | tests/unit/test_client.py:31 |
dead_embed_html |
software | healthy | tests/unit/test_client.py:40 |
test_rich_path_merges_tier1_and_embed |
software | healthy | tests/unit/test_client.py:48 |
test_pathfinder_uses_embed_token |
software | healthy | tests/unit/test_client.py:66 |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
CLAUDE.md |
software | healthy | CLAUDE.md |
.readthedocs.yaml |
software | healthy | .readthedocs.yaml |
CONTRIBUTING.md |
software | healthy | CONTRIBUTING.md |
CHANGELOG.md |
software | healthy | CHANGELOG.md |
mkdocs.yml |
software | healthy | mkdocs.yml |
README.md |
software | healthy | README.md |
pyproject.toml |
software | healthy | pyproject.toml |
Makefile |
software | healthy | Makefile |
SECURITY.md |
software | healthy | SECURITY.md |
LICENSE |
software | healthy | LICENSE |
.pre-commit-config.yaml |
software | healthy | .pre-commit-config.yaml |
CODE_OF_CONDUCT.md |
software | healthy | CODE_OF_CONDUCT.md |
test_playwright_transport.py |
software | healthy | tests/browser/test_playwright_transport.py |
test_media.py |
software | healthy | tests/live/test_media.py |
test_track.py |
software | healthy | tests/live/test_track.py |
test_client_entities.py |
software | healthy | tests/unit/test_client_entities.py |
test_package.py |
software | healthy | tests/unit/test_package.py |
test_client.py |
software | healthy | tests/unit/test_client.py |
test_errors.py |
software | healthy | tests/unit/test_errors.py |
test_urls.py |
software | healthy | tests/unit/test_urls.py |
test_parity.py |
software | healthy | tests/unit/test_parity.py |
test_client_async.py |
software | healthy | tests/unit/test_client_async.py |
test_client_entities_async.py |
software | healthy | tests/unit/test_client_entities_async.py |
test_pathfinder.py |
software | healthy | tests/unit/api/test_pathfinder.py |
test_pathfinder_entities.py |
software | healthy | tests/unit/api/test_pathfinder_entities.py |
test_parse_playlist.py |
software | healthy | tests/unit/api/test_parse_playlist.py |
test_parse_embed.py |
software | healthy | tests/unit/api/test_parse_embed.py |
test_parse_track.py |
software | healthy | tests/unit/api/test_parse_track.py |
test_parse_artist.py |
software | healthy | tests/unit/api/test_parse_artist.py |
test_parse_podcast.py |
software | healthy | tests/unit/api/test_parse_podcast.py |
test_parse_album.py |
software | healthy | tests/unit/api/test_parse_album.py |
test_audio.py |
software | healthy | tests/unit/media/test_audio.py |
test_images.py |
software | healthy | tests/unit/media/test_images.py |
test_anonymous.py |
software | healthy | tests/unit/auth/test_anonymous.py |
test_artist_playlist.py |
software | healthy | tests/unit/models/test_artist_playlist.py |
test_track_album.py |
software | healthy | tests/unit/models/test_track_album.py |
test_base.py |
software | healthy | tests/unit/models/test_base.py |
test_episode_show_lyrics.py |
software | healthy | tests/unit/models/test_episode_show_lyrics.py |
test_transport_async.py |
software | healthy | tests/unit/http/test_transport_async.py |
test_per_host_rate_limit.py |
software | healthy | tests/unit/http/test_per_host_rate_limit.py |
test_transport.py |
software | healthy | tests/unit/http/test_transport.py |
test_retry.py |
software | healthy | tests/unit/http/test_retry.py |
test_ratelimit.py |
software | healthy | tests/unit/http/test_ratelimit.py |
playlist.json |
software | healthy | tests/fixtures/pathfinder/playlist.json |
track.json |
software | healthy | tests/fixtures/pathfinder/track.json |
artist.json |
software | healthy | tests/fixtures/pathfinder/artist.json |
show.json |
software | healthy | tests/fixtures/pathfinder/show.json |
album.json |
software | healthy | tests/fixtures/pathfinder/album.json |
show_episodes.json |
software | healthy | tests/fixtures/pathfinder/show_episodes.json |
episode.json |
software | healthy | tests/fixtures/pathfinder/episode.json |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
tests |
software | healthy | tests |
browser |
software | healthy | tests/browser |
live |
software | healthy | tests/live |
unit |
software | healthy | tests/unit |
api |
software | healthy | tests/unit/api |
media |
software | healthy | tests/unit/media |
auth |
software | healthy | tests/unit/auth |
models |
software | healthy | tests/unit/models |
http |
software | healthy | tests/unit/http |
fixtures |
software | healthy | tests/fixtures |
pathfinder |
software | healthy | tests/fixtures/pathfinder |
embed |
software | healthy | tests/fixtures/embed |
scripts |
software | healthy | scripts |
.github |
software | healthy | .github |
ISSUE_TEMPLATE |
software | healthy | .github/ISSUE_TEMPLATE |
workflows |
software | healthy | .github/workflows |
extras |
software | healthy | extras |
wiki |
software | healthy | extras/wiki |
gh-pages-redirect |
software | healthy | extras/gh-pages-redirect |
blog |
software | healthy | extras/blog |
src |
software | healthy | src |
spotify_scraper |
software | healthy | src/spotify_scraper |
_async |
software | healthy | src/spotify_scraper/_async |
api |
software | healthy | src/spotify_scraper/api |
media |
software | healthy | src/spotify_scraper/media |
browser |
software | healthy | src/spotify_scraper/browser |
auth |
software | healthy | src/spotify_scraper/auth |
models |
software | healthy | src/spotify_scraper/models |
_sync |
software | healthy | src/spotify_scraper/_sync |
http |
software | healthy | src/spotify_scraper/http |
docs |
software | healthy | docs |
reference |
software | healthy | docs/reference |
getting-started |
software | healthy | docs/getting-started |
guides |
software | healthy | docs/guides |
openspec |
software | healthy | openspec |
changes |
software | healthy | openspec/changes |
add-http-transport |
software | healthy | openspec/changes/add-http-transport |
specs |
software | healthy | openspec/changes/add-http-transport/specs |
http-transport |
software | healthy | openspec/changes/add-http-transport/specs/http-transport |
add-docs-site |
software | healthy | openspec/changes/add-docs-site |
specs |
software | healthy | openspec/changes/add-docs-site/specs |
documentation-site |
software | healthy | openspec/changes/add-docs-site/specs/documentation-site |
add-browser-fallback |
software | healthy | openspec/changes/add-browser-fallback |
specs |
software | healthy | openspec/changes/add-browser-fallback/specs |
browser-transport |
software | healthy | openspec/changes/add-browser-fallback/specs/browser-transpo… |
harden-reliability-and-completeness |
software | healthy | openspec/changes/harden-reliability-and-completeness |
specs |
software | healthy | openspec/changes/harden-reliability-and-completeness/specs |
show-episodes |
software | healthy | openspec/changes/harden-reliability-and-completeness/specs/… |
per-host-rate-limiting |
software | healthy | openspec/changes/harden-reliability-and-completeness/specs/… |
add-models-errors-urls |
software | healthy | openspec/changes/add-models-errors-urls |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
_FakeResponse |
software | healthy | tests/unit/test_client_entities.py:439 |
_RecordingTransport |
software | healthy | tests/unit/test_client_entities.py:461 |
_FakeResponse |
software | healthy | tests/unit/test_client.py:193 |
_RecordingTransport |
software | healthy | tests/unit/test_client.py:215 |
_FakeResponse |
software | healthy | tests/unit/test_client_async.py:162 |
_RecordingAsyncTransport |
software | healthy | tests/unit/test_client_async.py:184 |
_FakeResponse |
software | healthy | tests/unit/test_client_entities_async.py:336 |
_RecordingAsyncTransport |
software | healthy | tests/unit/test_client_entities_async.py:358 |
FakeResponse |
software | healthy | tests/unit/auth/test_anonymous.py:35 |
FakeTransport |
software | healthy | tests/unit/auth/test_anonymous.py:56 |
FakeAsyncTransport |
software | healthy | tests/unit/auth/test_anonymous.py:69 |
FailingTransport |
software | healthy | tests/unit/auth/test_anonymous.py:82 |
TokenlessTransport |
software | healthy | tests/unit/auth/test_anonymous.py:90 |
AsyncTokenlessTransport |
software | healthy | tests/unit/auth/test_anonymous.py:98 |
_Stamped |
software | healthy | tests/unit/models/test_base.py:16 |
FakeAsyncTransport |
software | healthy | tests/unit/http/test_transport_async.py:127 |
FakeTransport |
software | healthy | tests/unit/http/test_transport.py:191 |
FakeClock |
software | healthy | tests/unit/http/test_ratelimit.py:12 |
SpotifyScraperError |
software | healthy | src/spotify_scraper/errors.py:10 |
URLError |
software | healthy | src/spotify_scraper/errors.py:14 |
NetworkError |
software | healthy | src/spotify_scraper/errors.py:18 |
RateLimitedError |
software | healthy | src/spotify_scraper/errors.py:32 |
TokenError |
software | healthy | src/spotify_scraper/errors.py:54 |
AuthenticationError |
software | healthy | src/spotify_scraper/errors.py:58 |
NotFoundError |
software | healthy | src/spotify_scraper/errors.py:62 |
ParsingError |
software | healthy | src/spotify_scraper/errors.py:66 |
MediaError |
software | healthy | src/spotify_scraper/errors.py:74 |
AsyncSpotifyClient |
software | healthy | src/spotify_scraper/_async/client.py:45 |
Operation |
software | healthy | src/spotify_scraper/api/pathfinder.py:25 |
EmbedSession |
software | healthy | src/spotify_scraper/api/parse_embed.py:28 |
HasImagesAndName |
software | healthy | src/spotify_scraper/media/images.py:38 |
_BrowserResponse |
software | healthy | src/spotify_scraper/browser/playwright.py:29 |
PlaywrightTransport |
software | healthy | src/spotify_scraper/browser/playwright.py:94 |
AsyncPlaywrightTransport |
software | healthy | src/spotify_scraper/browser/playwright.py:187 |
AnonymousTokenProvider |
software | healthy | src/spotify_scraper/auth/anonymous.py:43 |
AsyncAnonymousTokenProvider |
software | healthy | src/spotify_scraper/auth/anonymous.py:101 |
Episode |
software | healthy | src/spotify_scraper/models/episode.py:14 |
Show |
software | healthy | src/spotify_scraper/models/show.py:14 |
LyricsLine |
software | healthy | src/spotify_scraper/models/lyrics.py:11 |
Lyrics |
software | healthy | src/spotify_scraper/models/lyrics.py:19 |
PlaylistTrack |
software | healthy | src/spotify_scraper/models/playlist.py:15 |
Playlist |
software | healthy | src/spotify_scraper/models/playlist.py:24 |
Album |
software | healthy | src/spotify_scraper/models/album.py:15 |
Track |
software | healthy | src/spotify_scraper/models/track.py:14 |
Image |
software | healthy | src/spotify_scraper/models/common.py:11 |
ArtistRef |
software | healthy | src/spotify_scraper/models/common.py:20 |
AlbumRef |
software | healthy | src/spotify_scraper/models/common.py:33 |
ShowRef |
software | healthy | src/spotify_scraper/models/common.py:43 |
UserRef |
software | healthy | src/spotify_scraper/models/common.py:54 |
ModelBase |
software | healthy | src/spotify_scraper/models/base.py:13 |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
build |
cicd | healthy | .github/workflows/docs.yml |
build |
cicd | healthy | .github/workflows/release.yml |
publish |
cicd | healthy | .github/workflows/release.yml |
github-release |
cicd | healthy | .github/workflows/release.yml |
lint |
cicd | healthy | .github/workflows/ci.yml |
type |
cicd | healthy | .github/workflows/ci.yml |
test |
cicd | healthy | .github/workflows/ci.yml |
build |
cicd | healthy | .github/workflows/ci.yml |
browser |
cicd | healthy | .github/workflows/ci.yml |
live |
cicd | healthy | .github/workflows/canary.yml |
report |
cicd | healthy | .github/workflows/canary.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
gha::docs |
cicd | healthy | .github/workflows/docs.yml |
gha::release |
cicd | healthy | .github/workflows/release.yml |
gha::ci |
cicd | healthy | .github/workflows/ci.yml |
gha::canary |
cicd | healthy | .github/workflows/canary.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
redis |
data | healthy | .claude/skills/openspec-explore/SKILL.md |
sqlite |
data | healthy | .claude/skills/openspec-explore/SKILL.md |
postgres |
data | healthy | .claude/skills/openspec-explore/SKILL.md |
| Label | Layer | Status | Path |
|---|---|---|---|
125.0.0.0 |
network | healthy | scripts/capture_fixtures.py |
132.0.0.0 |
network | healthy | src/spotify_scraper/http/headers.py |
131.0.0.0 |
network | healthy | src/spotify_scraper/http/headers.py |
| Label | Layer | Status | Path |
|---|---|---|---|
auth::.github/workflows/release.yml |
security | healthy | .github/workflows/release.yml |
auth::.claude/skills/openspec-explore/SKILL.md |
security | healthy | .claude/skills/openspec-explore/SKILL.md |
| Label | Layer | Status | Path |
|---|---|---|---|
AliAkhtari78__SpotifyScraper |
software | healthy | /data/fable5_failed_archive/AliAkhtari78__SpotifyScraper |
| Label | Layer | Status | Path |
|---|---|---|---|
PYPI_API_TOKEN |
cicd | healthy | — |
This page is publicly accessible at:
https://repobility.com/scan/c1275503-ea5e-46aa-9a73-9c25b58abbc5/
To check status programmatically (no auth required):
curl -s https://repobility.com/api/v1/public/scan/c1275503-ea5e-46aa-9a73-9c25b58abbc5/
Important — please don't re-submit the same URL repeatedly. The submission endpoint is idempotent: re-submitting the same git URL returns this same scan_token, not a new one. To re-scan this repo, sign up free and use the dashboard.