Scrobblerad.io
A website to listen to cool radio stations and scrobble to LastFM
Install / Use
/learn @jbwharris/Scrobblerad.ioREADME
scrobblerad.io
A PWA and website to listen to cool radio stations and easily scrobble to LastFM.
<img width="1022" alt="ScrobbleRadio header collage of screenshots" src="https://github.com/user-attachments/assets/3c113a51-57cb-46b1-83ee-a29c1d917199">Features
- A diverse set of over 90 different online radio stations from around the world. Featuring KEXP, BBC6, various NPR stations and many more...
- MediaSession controls, so you can easily switch between stations using the media controls on your keyboard
- Song and artist data filtered using Web Scrobbler's Metadata Filter
- Additional filtering to ensure the best possible scrobble data to submit
- Album data from LastFM and MusicBrainz API
- Apple CarPlay support
- Mobile swipe navigation
- Light and Dark Mode support
FAQ
Why another radio streaming app?
There are a zillion radio streaming apps out there, but there really aren’t any that did so with a scrobbling first focus. That was my primary goal, to gather a bunch of great radio stations that have publicly accessible API metadata and make an app that could scrobble the songs to LastFM, Listenbrainz and LibreFM. For years I had struggled with the idea of finding a reliable way to scrobble radio on the go. There had been an early iOS app that did it pretty well, but as LastFM had faded in popularity there just never seemed to be any apps that focused on being able to accurately scrobble online radio. If you'd like to use this with Android and Pano Scrobbler, it should work without much issue.
How does the scrobbling work?
There are a couple ways to scrobble using the app. There is the Login to last.fm button on the left that allows you to enable scrobbling in the app. This is currently just last.fm and not other scrobbling platforms.
The other alternative is Web Scrobbler to handle sending to LastFM, MusicBrainz and LibreFM. You just need to login to each platform. This works on desktop with all major browsers (Chrome, Firefox, Safari etc.) on macOS, Windows and Linus, as well as iOS and iPadOS in Safari and Orion browsers.
For Android, scrobbling works using Pano Scrobbler, I've tested this a bit and it seems to work well.
Is this a progressive web app (PWA)?
Yes. It can be installed on your device as a standalone app on your homescreen. It's no longer a requirement to just use the browser, it can work standalone.
How did you choose the stations?
Part of my motivation was to add Canadian and local stations to my rotation. So there are some pretty niche and deep cut stations in there. Most are Indie and Alternative stations, and some stations that will play a bit of everything. I’ve tried to steer clear of corporate radio stations with lots of commercials, but that doesn’t mean there aren’t some stations with them. My criteria was typically whether they played a decent variety of music. And they needed to have a public API that I could pull the data from. I have added quite a few user requested stations as well. If you have a suggestion, message me on Bluesky or submit a GitHub issue.
Why isn’t the station showing any data?
There are a few different factors that can cause a site to not have streaming data.
- The station is on a commercial break. Some stations pause their info during commercials or put a station ID into their meta data. I’ve tried to minimize that where possible.
- The station is playing a syndicated show, which will typically not have the song data split up. You may just get the last song played before the show started, or the name of the show in the data.
- The API might have stopped updating for some reason. I have a check in there with some stations to check for stale API data, but it's not with all stations. It all depends on whether they have a timestamp on when a track is played in their API.
Does this work with Apple CarPlay?
Yes it does. I originally started this project with the goal of being able to scrobble radio on the go and found it actually integrated really well with car stereos. It’ll show the song and artist in even basic stereo systems and will show the song, artist, album and album art. Skipping stations now works well using the media controls.
The audio feed is skipping, how do I fix this while using Carplay?
To correct a feed that might be out of sync, press skip forward, then back. This will cause the stream to reload and correct itself nearly seamlessly. In Carplay, there are no additional buttons that can be assigned, so this is a handy trick to get things working while driving. The station has a 10 second playback buffer to ensure when skipping between stations it isn't going to load multiple audio streams, so skipping to the next station won't actually load the next station immediately, as it gives a few seconds to ensure that's the station you actually want to listen to.
Completed
- [X] Add native scrobbling to make this a complete PWA solution.
- [X] Add a filter for if the station name is in the metadata and not scrobble it. Sometimes a station will throw in a station ID or commercial into their API metadata.
- [X] Get station skipping working in iOS for Apple CarPlay.
- [X] Fix responsive styling and breakpoints.
- [X] Add lastfm listeners and total listens.
- [X] Add HLS playback to fix the BBC6 playback issue only working on iOS/Safari
To-Do List
- [ ] Add Song.link links to add to various streaming platforms.
- [ ] Add share station functionality
- [ ] Build station grouping functionality and get away from having one mega list of stations. Station grouping will be good for stations like SomaFM that have 30 stations, but I don't want 30 station connector files.
- [ ] Refine initial load screen, allowing user to pick a station group.
- [ ] Load the station that was previously playing on app refresh for iOS.
- [ ] Add recently scrobbled data to the page, so you could have a local indication of what has scrobbled.
- [ ] Fix responsive styling and breakpoints.
- [ ] Randomize station selection.
- [ ] Choose your favourite stations to play instead of selecting from complete list.
- [ ] Add volume controls
- [ ] Add support for native scrobbling for ListenBrainz, libre.fm and RockSky
Acknowledgements
- This project was originally forked from PWA RadioKing Player. When I started this project, I didn't know much about radio APIs or progressive web apps and this project offered me a good introduction while giving me a foundation to build from. It was originally for playing a single radio station and I was able to make an extensible structure where I could add tons of radio stations.
