xmplaylist in the wild
I’ve been collecting places where the xmplaylist.com API has shown up in the wild. I always think these are pretty interesting, so here’s a quick roundup of projects I’ve found that are scraping my data or using the API. As always, please use the xmplaylist feed endpoint instead of making 300 requests for all channels. /api/feed
SiriusXM plugin for Lyrion Media Server
This plugin uses the xmplaylist.com API to fetch recent tracks metadata for SiriusXM channels because SiriusXM itself doesn’t expose that track metadata easily. The audio side is completely separate. It uses FFmpeg to demux the HLS streams and feed FLAC to the media server. It started as a Python proxy and was eventually ported to Perl to fit the plugin footprint.
EasyList
I finally made it. xmplaylist.com was added to EasyList so adblockers can more aggressively block my ads. Honestly, I’m just happy to be included.
PowerShell module wrapper
This XmPlaylist module wraps the API for all you Windows power users. It exposes station lookups and recently played queries directly in your shell. It even includes helpers to format items or play tracks via yt-dlp and ffplay which honestly isn’t a great way to get music, but I’m here for it.
XM → Spotify archiver
This is a serverless bot that scrapes recent tracks and archives them into Spotify playlists, running entirely on GitHub Actions via cron. It uses cloudscraper to bypass Cloudflare challenges because I assume the github actions ip addresses are trash or they’ve forgotten to include a user agent. It dedupes tracks locally and even auto-rotates playlists when they near Spotify’s 10,000 track cap. It’s built to self-heal if the local JSON state gets corrupted, which is probably better error handling than I have in my own app.
XM Spotify Sync
This Python-based tool bridges the gap between satellite radio and streaming by automatically syncing tracks from XM Radio stations directly to your Spotify playlists. Built with a modern architecture featuring a FastAPI backend and Flask frontend, it handles the heavy lifting of polling station data and updating your playlists in the background. The project is container-ready with Docker Compose and Kubernetes support, making it a robust solution for archiving your favorite radio curation.
Android “playlist hijacker”
This one is a standalone Android app scaffold built with Kotlin and Compose. It scrapes XM channel history and mirrors it into private YouTube playlists using the Google Sign-In and YouTube Data APIs. It has some maintenance tools to shuffle items or trim the playlist down to an 80-item cap. The code is a bit rough—there are some TODOs left in key places like the playlist ID mapping—but it’s a cool proof of concept for a mobile-first approach. I appreciate the repo name XMPLAYLISTHIJACKERSTANDALONE, wonderful vibe.
SiriusXM to USB
This Python CLI retrieves station data from the API and then scours YouTube Music for matches. The author built it to demonstrate creating a powerful CLI in under a day, complete with multiprocessing and colored logging. It even includes a --download flag.