Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Spotify-Qt (github.com/kraxarn)
84 points by ericzawo on May 9, 2023 | hide | past | favorite | 44 comments


Spotify client has interesting history, originally it was very tight, raw win32 I believe, than iirc they transitioned to Qt and finally few iterations of the "modern" web based stack. Fun fact, the original client was developed by the same person as ScummVM, OpenTTD, and original uTorrent.


I think they used P2P networking to serve the audio files before they switched to centralized server hosting?



Were they sued for using pirated content back then?


That is a fun fact. Scumm games were a big part of my childhood.


Spotify web client with Adblock works best imo. No shuffle playing of albums. Or “shuffled” radio playlists. Don’t even need premium.


Your playback quality is still (I consider, severely) restricted[1], among other features I might not be aware of. They might also start injecting ads into the audio stream soon, if they realise ad blocking methods are popular (Twitch has done this for example).

[1]: https://support.spotify.com/us/article/audio-quality


You can use the spotifyd lightweight daemon client to play the audio, but control it from a browser session.


spotifyd requires spotify premium though.


They might also start injecting ads into the audio stream soon

...just like how broadcast radio works?


Walmart with reused bags and a getaway car works best IMO. Don't even need to pay.


While that is a very funny sentence, the half a cent I'm withholding from the artist by blocking the ad is hardly a robbery. Just buy a CD once in a while if the guilt is too much to handle.


Indeed, over half of all musicians make their primary income from live performances because streaming pays so little to most!


But also no local files


https://github.com/jpochyla/psst

This is a similar (actively maintained) app also based on librespot.


https://github.com/xou816/spot

Also this one, which I've come around to quite like :)

ncspot is another amazing option if you're comfortable with the terminal.


This is new to me and I'm digging it. It says something about spotify that so many people seem to want to reinvent the wheel.


Spotify is in a weird spot where we have an absolutely fantastic open-source implementation of its client api in Librespot, but exactly 0 upstream support for that api...


Take literally any super popular program and you will find tons of alternative clients.


If the main selling point is that it's a lightweight alternative, it would be good to include some details in the readme (e.g. RAM usage, CPU, etc).

And then detail how packaging it as a Snap undoes all their hard work.


The snap is mostly a leftover from before AppImage builds were available, as that was the easiest way for me to package binaries at first. AppImage is now the preferred way to run the application on distros that don't have packages from their native package manager. I'll make sure to update the readme!


Using the Spotify Rest API it is already possible to build nice feature rich Spotify clients for remote players. I don't think there is a supported native playback library? I'm not sure how local playback is implemented in this project.

The main problem I have with the Spotify API is that its remote playback management API is limited/incompatible with some players (Sonos).


It relies on a separate client for playback, which can be an open source client like librespot/spotifyd, or an official client. It's also mostly older systems using the older, deprecated, playback client that aren't compatible with the Web API afaik.


Gave it a quick spin on Windows and it's incredibly slow to drag the window around, no idea why but I'd guess it's redrawing for every frame.

Interesting though, could be good if it offers better playlist management, for instance I'd like to see all artists who's songs I've liked.


Haven't noticed any issues like that under Windows, so please open an issue with more details. You can also try either enabling a native window handle from "Settings > Interface > General > Use native window", or enable a native window frame from "Settings > Interface > Title bar > Disable Application title bar".

I'll also see if I can implement something like that!


Unfortunately, it also cannot find my audio device (I have several connected), so it failed at the the one job it really had.


Only devices exposing to the Web API, and logged in with the same account, are currently supported. If you know that a device you're trying to use is exposed, please open an issue with more details.


On the other hand, this Rust-based one called Psst looks awesome and works: https://github.com/jpochyla/psst


You have windows mixer for that, which allows you to select audio device for any app


Been using this for maybe a year or something. It is superb, like the original used to be, and should be! Thank you for this effort.


Thank you so much for the kind words :)


on macOS, unfortunately, this was a painful experience. on startup, after setting up the Spotify app keys, the app froze while refreshing (audio) devices. it slowed down, stopped working, and had to be force quit.

I was looking forward to a snazzy spotify desktop ui!


That's also my experience with the official clients after their recent big update. It constantly crashed and did all sorts of weird stuff so I uninstalled it and have started using their web client for playback + a quick and dirty GUI for their API to fill in some of the missing features like playing a playlist sorted by last added, proper random shuffle, actually stop playing when queue ends, etc.

This project looks good though, will have to try it later and see if it works any better for me.


I regularly test on macOS, and haven't experienced any similar issues, so please open up an issue with more details.


Neat! I wonder if it's possible to achieve a similar project for Deezer.


Afaik, the Deezer API only allows for querying tracks, and not control playback, so I don't think anything similar is possible.


What are the dangers of running this?


Read the source, Luke.


isn't it just an interface to a proprietary binary which has no source to be read?


No, it uses librespot which is a open re-implementation of libspotify, which was Spotify's old, but now pulled, SDK. The risk however is that when Spotify thinks it's no longer worth supporting older harder devices that rely on the original libspotify, they'll pull the endpoints and remove functionality (already happened to search, for example, but they could use the newer APIs for that - it's going to be hard when they do it with playback, as the new APIs require DRM).


The client itself only uses the official API, and is perfectly safe to use. Playback clients like librespot clearly state that they are "probably forbidden" in their readmes however, so that may be different.


> Note: Controlling playback requires Spotify Premium.

Too bad.


That's the result of Spotify's api, which restricts a lot to just premium users IIRC. Not the dev's fault here


I quit Spotify when I found out they don't have a "block song" feature on the desktop app. They have it on their mobile app, but it only applies locally to that device.

Realized I was paying for YouTube premium, which comes with Music included. Better deal IMO.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: