Skip to content

Repository files navigation

DJ Scrobbler

Tests Release License: MIT

DJ Scrobbler is a desktop music app for people who listen to long-form DJ sets on YouTube, but still want precise Last.fm listening history.

It searches for a matching tracklist, follows the currently playing track, and scrobbles individual songs instead of flattening a one-hour mix into a single play.

Website · Releases · Changelog · Architecture · Roadmap

What It Does

  • Search YouTube for DJ sets directly inside the app.
  • Save favorite sets and browse listening history across sessions.
  • Search 1001Tracklists and set79 in parallel, preferring an exact 1001Tracklists match.
  • Show the active tracklist in sync with playback, highlighting the current track.
  • Enrich identified tracks with artwork when a provider has none.
  • Connect a Last.fm account and scrobble each individual track as it plays.
  • Keep the DJ set title as the album in Last.fm, so listening history retains context.
  • Resume interrupted sets from where you left off.
  • Edit set metadata and browse favorites by DJ, event, or venue.
  • Track local listening totals and show upcoming DJ events near a saved location.
  • Three visual themes: Neon Night, Signal Teal, Sunset Deck.

Why

Streaming platforms still do a poor job with DJ sets, radio shows, mixes, and other long-form music. A tracklist may exist somewhere on the web, but the player usually treats the whole set as one item.

DJ Scrobbler tries to bridge that gap: an app-owned YouTube player on one side, tracklist communities on the other, and Last.fm as the permanent listening history.

It is also a small love letter to Last.fm, which remains one of the most useful social music platforms ever made.

Download

Installers are published on the GitHub Releases page.

DJ Scrobbler is built for:

  • macOS (Apple Silicon and Intel)
  • Windows
  • Linux

macOS

DJ Scrobbler isn't notarized with Apple yet, so a copy downloaded through the browser is blocked by Gatekeeper. Install it with one command instead — no Gatekeeper dialog, no workarounds:

curl -fsSL https://raw.githubusercontent.com/ericcastro/dj-scrobbler/main/install.sh | bash

After that the app keeps itself up to date: when a new release is available it downloads and installs it in place with one click.

How It Works

DJ Scrobbler has three plugin layers:

  • Source plugins understand playable set URLs (currently YouTube).
  • Tracklist plugins find and extract tracklists (currently 1001Tracklists and set79).
  • Event plugins find upcoming appearances for tagged DJs (currently Resident Advisor and Shotgun).

When you open a DJ set, the app starts its own YouTube player immediately and searches both tracklist providers. An exact 1001Tracklists match wins; set79 is a best-effort fallback based on title and duration. The app maps the player's current time onto provider cue points, updates Now Playing, records listening stats, and scrobbles to Last.fm once a track has genuinely played long enough.

Tracklists, provider preferences, set metadata, and artwork results are cached locally. User-facing history, favorites, edits, settings, and listening statistics remain local to the machine.

For a deeper breakdown, see ARCHITECTURE.md.

Development

Requirements: Node.js 20+, npm.

npm install   # install dependencies
npm start     # run the app
npm run dev   # run with developer extras enabled
npm test      # run the test suite

Enable verbose logging:

DJ_VERBOSE=1 npm start

Load a specific YouTube URL on startup (useful for testing a specific set):

DJ_DEBUG_LOAD_URL=https://www.youtube.com/watch?v=... npm start

Status

DJ Scrobbler is in active early development, working toward a stable 1.0 release. Rough edges are expected — particularly around tracklist matching, which depends on third-party sites that can change their structure or behaviour at any time.

License

MIT

About

A desktop app for listening to DJ sets on YouTube — with tracklist sync, track history, and Last.fm scrobbling

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages