kraxarn / spotify-qt

Lightweight Spotify client using Qt
GNU General Public License v3.0
1.11k stars 63 forks source link

Ability to view queue #63

Closed randomdude999 closed 1 year ago

randomdude999 commented 3 years ago

It would be nice if it was possible to view and edit the play queue.

kraxarn commented 3 years ago

Afaik, there's no way to get this from the Web API. The client could try to "guess" the queue, but it would be completely useless as soon as shuffle is enabled.

randomdude999 commented 3 years ago

Well, that's a shame. I guess there's really nothing you can do in that case.

By the way, I really appreciate your effort working on this client. Apart from this one issue (which isn't even your fault), it has everything I could ask for. Thanks for making this.

atroxix commented 3 years ago

For me shuffling wouldn't be an issue because I never use it - I use either queue or play some pre-defined playlist, or just an artist radio. Because queue is the most essential feature for me, I should manage my queue from another device from the official client.

What does the "guessing" mean in this case? Perhaps it would still be better than nothing? What happens when a track is queued in spotify-qt? Does it go into the Spotify queue, but is just not reflected anyhow in spotify-qt? If I'd use ONLY spotify-qt to add something to queue and play tracks off it, it could also be an option for spotify-qt to keep track of the queue "locally" and display it as "local queue" or something similar?

randomdude999 commented 3 years ago

basically, spotify-qt has no way to ask the spotify api for the queue. this means that if anything outside spotify-qt made changes to the queue, it wouldn't be accurate anymore. keeping a local queue would be pretty difficult with the current api, and in any case it would be pretty fragile if any other client is involved, but if the eventual plans to have a bundled librespot-based player ever come to fruition, it would be totally feasible (as spotify-qt would then itself be responsible for handling all queue operations). afaik that is a long term goal of the project, but it will take a while before that gets implemented.

in the meantime, it might be possible to hack something together when using a locally running spotifyd. it would be possible to make spotifyd open a socket where it listens to commands that can't be handled using the web api, like queue management, and then send commands using that from spotify-qt. however, even that would be a fair bit of work which would probably better be directed at implementing the internal librespot player instead.

(for the record i'm in no way affiliated with spotify-qt, these are just my thoughts)

kraxarn commented 3 years ago

More or less. Adding a "guessed" queue wouldn't provide any additional functionality that the track list doesn't already provide. The guessed queue would basically just find the current track in the list and show all coming tracks. Tracks added to the queue wouldn't show up, it would only work with playlists and albums, and the API doesn't allow you to skip multiple tracks at once. That's why I don't think it would be very useful. Having a "local queue" is an option, but it can too easily get out of sync, from even just restarting the client, so I don't think it's useful enough to actually implement.

Implementing an embedded playback client is a long-term goal, but it's not very likely to be usable in a while. In the meantime, the goal is to deprecate the current librespot/spotifyd integrations and instead add support for librespot-java, as it provides an API that can actually fetch the correct queue among other things. Then this issue can be resolved in the best way currently possible.

kraxarn commented 1 year ago

Not sure when it was added, but I just randomly noticed that the queue is now available from the API, so I ended up implementing proper support for it 🎉

charlesmulder commented 1 year ago

I'm running spotify-qt v3.10 with librespot 0.4.2, but can't seem to find the queue. May need someone to point out the obvious to me please?

charlesmulder commented 1 year ago

Ah. I need to update to v3.11.