Making The Best App For Scrobbling Radio
For the longest time I’ve been trying to reconcile something when it comes to scrobbling my music. I’m a big fan of radio and have long aimed to log my plays to last.fm when I do listen. This has been a challenge to say the least. I can do it pretty well on macOS using Web Scrobbler, but mobile has always been a different problem. Being a longtime Apple ecosystem guy, you run into the walls of the walled garden on a certain level when it comes to logging now playing information that Android users don’t encounter.
In the early days of iPhone I found this great app called Radium that allowed me to scrobble streaming radio stations. While it wasn’t perfect, it was pretty effective at what it did. It tended to rely on the station stream having accompanying song and artist data, and this was not a given by any stretch. And sometimes when they did have that data, it might be inverted, so you’d end up having to correct the song and artist manually on last.fm. Safe to say I only listened to those stations briefly before giving up.
A few years passed and Radium became abandonware in 2017. The app worked for macOS and iOS and I recall using it for awhile after, but at some point the whole thing became untenable. Since then I sought a replacement. I looked high and low through the App Store. The best I found on macOS was DeaDBeeF, which had many of the same problems Radium, where certain streams were inverted and there was no way to correct this problem. I even tried making feature requests about adding the ability to flip song and artist on a per station basis, but the developer wasn’t interesting in pursuing the feature.
The iOS problem
On iOS it was much more dire. There were zillions of radio streaming, but none that actually cared about anything but providing bulk access to hundreds of radio stations. There wasn’t really any that focused on quality of metadata, often just a station logo and stream URL was about all they cared to show and that was about it. Most apps were more focused on promoting the radio station versus making the music the star of the show. I think when it comes to frustration about radio, it’ll often be when the listener wants to know what the name of the song was. There were of course individual station apps, but I know personally I don’t want 40 single purpose apps on my phone so I could listen to a variety of stations. They often treat the music with the respect if deserves, showing the song, artist, album, album art and sometimes even information about the song in the case of a station like KEXP.
A few years I ago Web Scrobbler released a Safari extension for iOS/iPadOS and it’s been an absolute game changer for scrobbling radio on the go. Now I could scrobble my favourite stations through Safari, but it came with its own challenges. Having to navigate to each particular site. Some sites, like KEXP, don’t update their page data very well when the screen is off. Keeping the screen active in perpetuity was a terrible solution, but I did just that for a spell as I sought to scrobble on the go. I did find another site called FMSpins that did fix this issue for me, so that was handy.
Genesis of an idea
It was that site that got my gears turning a bit. For the longest time I thought the streaming data was tied to the stream URL. Some had the data and some didn’t. But then the simple revelation came to me (and this might have been obvious to many developers out there), but the data was typically coming from 2 different places, a data API and the audio stream. FMSpins was consolidating 6 different radio stations and presenting the data being pulled from APIs into a cool site that looked to bridge the community piece to listening, while also connecting the experience to Spotify and the listeners streaming service.
While I’d been looking for years for someone to make comprehensive radio streaming app that would include my need to scrobble (and really when I say scrobble, I mean last.fm, libre.fm and ListenBrainz too), I started to see a path for how I could create the app of my dreams. I’m a frontend web guy and truthfully never really been into becoming what you’d class as a true developer. I’d always wanted to maintain that tether to being a creative (as a trained graphic designer), but I did always have the foundational skills to get into developing more extensively. I think I was reading a little bit about Progressive Web Apps(PWAs) and the lightbulb went off. I’d long had this idea that to make a scrobbling radio app I’d have to learn Swift and submit to the App Store and I was really not interested in getting that far down the rabbit hole.
I was poking around GitHub at some point and taking a look at PWAs and found this simple project that was meant to play a single radio station the developer liked. In looking at the code I understood what was going on and was able to fork the project and get it working to play KEXP and their API. Then next was figuring out how to create a structure that would handle multiple stations, and really I was off to the races. As I didn’t consider myself an ace with Javascript, I used this as an opportunity to try ChatGPT and expand my Javascript knowledge in one fell swoop. Over the last 9 months I’ve been able to piece together what I feel might be the best app for scrobbling radio available today.
Try out ScrobbleRadio
So I invite you to check out ScrobbleRadio for yourself. If you’re really fond of radio and love keeping track of what you listen to, this is the app for you. I’m going to write an additional blog (maybe a few) on my development journey and a lot of the technical hurdles I encountered along the way.
About James
James Harris is a frontend web developer and graphic designer from Cambridge, Ontario. He's a blogger, mixtape maker, chronic scrobbler, sci-fi geek & dad to a wonderful daughter.0 Responses
Powered by Webmentions via Webmention.io and Bridgy