I have set up a new #Platypush automation flow that registers the tracks the user listens to (through #mpd, #mopidy, or by fetching the #lastfm scrobbles) on a local database, retrieves similar tracks through the last.fm API, and periodically creates a new discovery playlist that contains the top suggested tracks that haven't been listened/suggested yet.
The "top suggested" tracks are calculated through a simple score that takes into account both the match score between the suggested and the listened tracks, and for how many listened tracks a certain track has been reported as a suggestion.
It's a self-hosted and backend-agnostic alternative (with a transparent algorithm) to Spotify's discovery features. I have been using it for several weeks to generate my "Discovery weekly" playlists, and I've been surprised by how many new tracks I discovered - way more than through Spotify's suggestions, that were quite all over the place lately.
I may write a blog article on it, but before that I wanted to check the community's favourite ways of consuming music, so I can provide playlist generation examples that are relevant for that service.
I have been a #Spotify user for more than a decade, until they recently f*cked up their developer experience for good by killing libspotify (technically they already deprecated it years ago, but in all these years they refused to provide official alternatives as well). I have moved to #Tidal since then, so my code now generates new discovery playlists through the Tidal ("unofficial"/reverse engineered) web API.
Do you folks have a favourite (preferably web-based, or with a web API) alternative service that you use to discover and stream music? Fully local options also apply, but then I need to write about how to automatically search and download audio files from cloud services - and even though I have found some ways of doing it, it's obviously illegal to publish those methods :) options like #Bandcamp may also apply, but only a small subset of the tracks that are found on last.fm are available on Bandcamp.
In other words, do you folks have any suggestions for an online music streaming service comparable to Spotify or Tidal when it comes to content availability, but with a good search, playlist management and streaming API (unlike Spotify and Tidal)?
The only reason why I'm using Tidal is that I needed an alternative to Spotify with comparable content availability, and that Tidal is (allegedly) a bit fairer to artists when it comes to remuneration. But I don't like to rely on a web API that has basically been reverse engineered, and on a music service that doesn't even provide an official Linux client.
@BB oh, I hadn't seen their experiments with YouTube Music in a while. I'm not sure if they have fixed the issues that pushed me away from them as a music backend earlier.
Namely, the fact that you can search by artist+album+track name on Spotify/Tidal and just get one result, while on YouTube you may get a lot of results uploaded by different people. I also see that the YouTube API (https://developers.google.com/youtube/v3/docs/search/list) hasn't yet been updated to provide search by artist/album/track/year etc. - something that is quite crucial to consider a music service as a reliable backend.
And the fact that sound quality was all over the place - something that Spotify does better, and Tidal does even better.
I'll give it another look though, especially now that Google has apparently made more steps to fill the gap between YouTube and Spotify. I guess that the main blocker would still be using a Google service as a main driver for music streaming, but I usually feel a bit less guilty after using youtube-dl to rip off all of their content 🏴☠️️
Yes, that has long been the issue with YouTube. Particularly with automated systems like Discord bots which will just play the top result for the search. Increasingly over recent years more and more music has been officially uploaded in high quality by the artists/labels themselves. Though in many cases, these official higher quality uploads are not (yet?) the top result in the search.
...I wonder if the music UI helps with that. I guess you could try to make use of the "order/date" and "videoDefinition" parameters in the API to try to prioritise more recent and higher quality uploads.
And I agree about the downside for relying on a Google service. I switched to the yt-dlp fork sometime ago and haven't looked back :)
P.S. On the off chance this is of any use:
"This project is based on mps, a terminal based program to search, stream and download music. This implementation uses YouTube as a source of content and can play and download video as well as audio. The pafy library handles interfacing with YouTube."
They're also working on a GUI player:
A platform about automation, open-source, software development, data science, science and tech.