Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1 Commit
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

⛏ Trackdigger

Turn the songs you mark while watching a DJ set on YouTube into a fully-IDed, downloaded crate β€” automatically.

Trackdigger overview

Why

It's a pain. You're listening to a set, a track grabs you, and now you've got to go hunt it down. So you Shazam it (which whiffs on the unreleased edits) or dig through 1001tracklists and comment sections one track at a time. All that searching pulls you out of the music. You stop listening and start managing.

Trackdigger kills that friction. While the set plays you just tap a key on the tracks you love. Afterward it works out what each one is, finds it, and drops the mp3 straight into your crate. So you can listen more, collect more, and build your own sets instead of playing detective.

What it does

Mark a track on YouTube β†’ Trackdigger IDs it (from 1001tracklists + the YouTube comment/description tracklist + AudD acoustic fingerprint), finds it on SoundCloud / Spotify, and downloads it as <song> - <artist>.mp3 into your crate folder. Tracks no database can name (unreleased edits) get ripped straight from the set as a fallback β€” so every mark becomes a file.

One-of-a-kind because it cross-references three ID sources and falls back between them. Most tools rely on one (acoustic, or a single database).

Install

1 β€” Server + pipeline

pip install -r lookup/requirements.txt        # requests, beautifulsoup4, browser_cookie3, curl_cffi, yt-dlp
brew install ffmpeg ; pipx install spotdl      # external tools
python3 serve.py                               # starts the local server on :8300

2 β€” Chrome extension

  1. Open chrome://extensions
  2. Toggle Developer mode (top-right)
  3. Load unpacked β†’ select the extension/ folder
  4. Pin the β˜… icon. Stay logged into 1001tracklists.com and soundcloud.com in Chrome (Trackdigger reads those sessions locally β€” see Privacy).

Optional API keys (each gitignored, copy the .example.json):

  • lookup/audd_config.json β†’ {"api_token": "..."} β€” AudD acoustic fallback
  • spotify_config.json β†’ {"client_id": "..."} β€” Spotify search/like
  • SoundCloud needs no key (public web API + your logged-in session)

Use

Mark tracks β€” while a set plays on YouTube, press Shift+S (or the β˜… in the player) on each track you like. Marks auto-sync to the server.

Run it β€” either the CLI, or the Claude Code skill (skill/SKILL.md, e.g. /trackdigger, "ID this set"):

cd lookup
python3 identify_set.py <youtube_video_id>             # identify the marks
python3 identify_set.py <youtube_video_id> --download  # + mp3s into your crate
python3 identify_set.py <youtube_video_id> --like      # + like on SoundCloud/Spotify
python3 download.py "<soundcloud|youtube|spotify url>" # grab any single track
python3 report.py                                      # text summary

See your results β€” the dashboard, live from your data:

Where the files go β€” ~/Documents/beats/, named <song> - <artist>.mp3, deduped. Point Serato (or any DJ app) at that folder.

How it works

 YouTube set ──(extension: Shift+S)──▢ server :8300 ──▢ identify ──▢ find ──▢ download
   mark a track                         /api/tracklist     β”‚           β”‚         β”‚
                                                            β”œ 1001tracklists (headless, your cookies)
                                                            β”œ YouTube comments/description (yt-dlp)
                                                            β”” AudD acoustic ID (audio clip)
                                  resolve per mark: AudD β–Έ 1001tl β–Έ comments β–Έ your label
                                  download: Spotify β–Έ SoundCloud β–Έ rip-from-set  β†’  ~/Documents/beats

Editable diagram: docs/trackdigger-pipeline.excalidraw

Components: extension/ (Chrome MV3), serve.py (local server + bs4 parser), lookup/ (pipeline: identify_set.py orchestrator, fetch_1001.py, parse_1001.py, yt_tracklist.py, crossref.py, soundcloud.py, spotify.py, streaming.py, download.py, report.py), ui/ (dashboard), skill/ (Claude skill), docs/.

Privacy

Trackdigger reads your 1001tracklists and SoundCloud session cookies locally (via browser_cookie3) so it can act as your logged-in browser β€” they are never uploaded or stored. API keys and your listening data live in gitignored files and stay on your machine.

πŸ€– Built with Claude Code

Releases

Packages

Contributors

Languages