Every year, I jokingly set New Year’s resolutions based on whatever is on my mind at the time. Sometimes these resolutions morph into serious life changes, and other times, I abandon them immediately. This year, one of my resolutions was to listen to more music, assuming it would make me happier and more prosperous moving forward. As I pondered how to measure my success at this—I began exploring available solutions. Technically, there’s a dominant choice among music enthusiasts: Last.fm. However, my initial experience on Last.fm was marred by ads and prompts to subscribe, which was less than ideal.
In search of an alternative, I turned to GitHub and discovered a project that seemed to be the perfect solution. Given the variety of services I use for music (like Roon, Apple Music, Qobuz), I found that I’d still need to use Last.fm in the short term to log my listens. However, I came across a fantastic project called Multi-Scrobbler, which acts as a proxy to scrobble music from one service to another. This discovery allowed me to maintain my current setup while utilizing a more open platform, ListenBrainz, free from ads. ListenBrainz offers the unique feature of creating playlists based on listening habits but outputs them in the somewhat obscure JSPF format, which none of my services support, necessitating a conversion solution.
This need led to the inception of my project, Jspfconvert—a perfect opportunity to test whether ChatGPT could develop a functional solution. I envisioned a simple, single-page application (SPA) for this task.
Initially, ChatGPT suggested a Node.js backend with a modern frontend framework, but I specified the need for a straightforward SPA, and off we went.
Once m3u was done I learned Soundiiz.com also accepts XSFP so I quickly added this and here we are:
So far so good on my goal:
Take a look at the app over at https://jspfconvert.pages.dev/. And if you’re curious about the code behind it, feel free to dive into the GitHub repo at diblasio/jspfconvert.
Cheers!