Skip to content

jherskowitz/spinbin

 
 

Repository files navigation

Spinbin

Turning the web into playlists... one page at a time.

Spinbin scrapes radio station and chart playlists, generates XSPF playlist files, and publishes them via GitHub Pages. Subscribe in Parachord or any XSPF-compatible player.

Playlists

Station Source Add to Parachord XSPF
KEXP Rewind kexp.org Add XSPF
KCRW Rewind kcrw.com Add XSPF
WFMU Rewind wfmu.org Add XSPF
WFUV Rewind wfuv.org Add XSPF
SomaFM Groove Salad Rewind somafm.com Add XSPF
SomaFM Indie Pop Rocks! Rewind somafm.com Add XSPF
XRAY.fm Rewind xray.fm Add XSPF
Vintage Obscura Rewind vintageobscura.net Add XSPF
Radio Paradise Rewind radioparadise.com Add XSPF
NTS Radio Rewind nts.live Add XSPF
WPRB Rewind spinitron.com/WPRB Add XSPF
KALX Rewind spinitron.com/KALX Add XSPF
WMBR Rewind wmbr.org Add XSPF
Bagel Radio Rewind bagelradio.com Add XSPF
SiriusXMU Rewind xmplaylist.com/station/siriusxmu Add XSPF

How It Works

A GitHub Actions workflow runs once a day at 5am EST, fetches playlist data from source APIs, generates XSPF files, and publishes them to GitHub Pages.

Each XSPF feed includes a top-level <image> pointing at the station's brand logo at https://jherskowitz.github.io/spinbin/logos/{key}.svg, so Parachord and any XSPF-aware client can show the station's tile in its subscriptions/library view alongside per-track album art.

Adding New Stations

  1. Create a scraper in scrapers/ with a fetch_plays() function returning [{"title", "creator", "album", "image"}]
  2. Add an entry to PLAYLISTS in generate.py
  3. Add the station card to pages/index.html and a brand color + tile class
  4. Add the new key to KEY_TO_TILE in scripts/build_logos.py, then run python scripts/build_logos.py to generate pages/logos/{key}.svg
  5. Add tests and a row to this README

About

Automatically create xspf playlists from online charts

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 61.3%
  • HTML 38.7%