Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

playerctl metadata sometimes returns "No player could handle this command" #557

Closed
cloudlena opened this issue Apr 3, 2020 · 8 comments
Closed
Labels
bug A functionality or parts of a program that do not work as intended wontfix Issues that will not be fixed under any circumstances

Comments

@cloudlena
Copy link

cloudlena commented Apr 3, 2020

Description

The playerctl metadata command mostly returns No player could handle this command for me even though any other interaction with playerctl works without any problems.

To Reproduce

  1. Run spotifyd
  2. Run playerctl --list-all which correctly lists spotifyd
  3. Run playerctl metadata which returns No player could handle this command most of the time and the correct data sometimes... Here's the output of me running the command multiple times within a few seconds:
$ playerctl metadata
No player could handle this command
$ playerctl metadata
No player could handle this command
$ playerctl metadata
No player could handle this command
$ playerctl metadata
No player could handle this command
$ playerctl metadata
spotifyd mpris:trackid             spotify:track:64eE2KiDEelfK3BOmQVYl4
spotifyd xesam:album               Wings Of Love
spotifyd xesam:albumArtist         Philippe El Sisi
spotifyd xesam:albumArtist         A & Z
spotifyd xesam:albumArtist         Cari
spotifyd xesam:artist              Philippe El Sisi
spotifyd xesam:artist              A & Z
spotifyd xesam:artist              Cari
spotifyd xesam:trackNumber         1
spotifyd xesam:title               Wings Of Love
spotifyd xesam:autoRating          0.40999999999999998
spotifyd xesam:discNumber          1
spotifyd mpris:artUrl              https://i.scdn.co/image/ab67616d0000b27331b3986f04d11e56a3f2bcae
spotifyd mpris:length              258857000
spotifyd xesam:url                 https://open.spotify.com/track/64eE2KiDEelfK3BOmQVYl4
$ playerctl metadata
No player could handle this command

Expected behavior

playerctl should return the correct metadata every time I run playerctl metadata.

Logs

Click to show logs
loop process - 1 events, 0.000s
event Readable Token(25165828)
loop process - 1 events, 0.000s
event Readable Token(25165828)
loop process - 1 events, 0.000s
event Readable Token(25165828)
loop process - 1 events, 0.000s
event Readable Token(25165828)
loop process - 1 events, 0.000s
event Readable Token(25165828)
loop process - 1 events, 0.000s
event Readable Token(25165828)
loop process - 1 events, 0.000s
event Readable Token(25165828)
loop process - 1 events, 0.000s
event Readable Token(25165828)
loop process - 1 events, 0.000s
event Readable Token(25165828)
loop process - 1 events, 0.000s
event Readable Token(25165828)
loop process - 1 events, 0.000s
D-Bus i/o poll ready: 35 is Ready(Readable)
D-Bus i/o unix ready: 35 is Readable | Aio
event Readable Token(25165828)
loop process - 1 events, 0.000s
handle_msgs: (MethodCall, Some("/org/mpris/MediaPlayer2"), Some("org.freedesktop.DBus.Properties"), Some("GetAll"))
loop poll - 10.483312529s
loop time - Instant { tv_sec: 14705, tv_nsec: 873506951 }
loop process, 18.51µs
Polling message stream
msgstream found Ok(Ready(Some((MethodCall, Some("/org/mpris/MediaPlayer2"), Some("org.freedesktop.DBus.Properties"), Some("GetAll")))))
registering with poller
event Readable Token(4194303)
loop process - 1 events, 0.000s
checkout waiting for idle connection: "https://api.spotify.com"
Http::connect; scheme=https, host=api.spotify.com, port=None
loop process - 0 events, 0.000s
resolving host="api.spotify.com"
event Readable Token(4194303)
loop process - 1 events, 0.000s
connecting to 35.186.224.53:443
adding I/O source: 0
registering with poller
scheduling Write for: 0
event Readable Token(4194303)
loop process - 1 events, 0.000s
loop process - 0 events, 0.000s
event Writable Token(0)
loop process - 1 events, 0.000s
connected to Some(V4(35.186.224.53:443))
scheduling Read for: 0
scheduling Read for: 0
event Readable Token(4194303)
loop process - 1 events, 0.000s
loop process - 0 events, 0.000s
event Readable | Writable Token(0)
loop process - 1 events, 0.000s
client handshake HTTP/1
handshake complete, spawning background dispatcher task
event Writable Token(0)
event Readable Token(4194303)
loop process - 2 events, 0.000s
scheduling Read for: 0
signal: Want
signal found waiting giver, notifying
flushed({role=client}): State { reading: Init, writing: Init, keep_alive: Busy }
event Readable Token(4194303)
loop process - 1 events, 0.000s
poll_want: taker wants!
checkout dropped for "https://api.spotify.com"
event Readable Token(4194303)
loop process - 1 events, 0.000s
scheduling Read for: 0
Client::encode method=GET, body=None
detected no usage of vectored write, flattening
flushed 465 bytes
flushed({role=client}): State { reading: Init, writing: KeepAlive, keep_alive: Busy }
loop process - 0 events, 0.000s
event Readable | Writable Token(0)
loop process - 1 events, 0.000s
Conn::read_head
read 1386 bytes
Response.parse([Header; 100], [u8; 1386])
Response.parse Complete(576)
parsed 13 headers
incoming body is chunked encoding
decode; state=Chunked(Size, 0)
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Chunk size is 1
incoming chunked header: 0x1 (1 bytes)
Chunked read, remaining=1
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
event Readable | Writable Token(0)
event Readable Token(4194303)
loop process - 2 events, 0.000s
Response: '200 OK' for https://api.spotify.com/v1/me/player
event Readable Token(4194303)
loop process - 1 events, 0.000s
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
loop process - 0 events, 0.000s
event Readable Token(4194303)
loop process - 1 events, 0.000s
decode; state=Chunked(BodyCr, 0)
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Chunk size is 1
incoming chunked header: 0x1 (1 bytes)
Chunked read, remaining=1
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
loop process - 0 events, 0.000s
event Readable Token(4194303)
loop process - 1 events, 0.000s
decode; state=Chunked(BodyCr, 0)
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Chunk size is 1
incoming chunked header: 0x1 (1 bytes)
Chunked read, remaining=1
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
loop process - 0 events, 0.000s
event Readable Token(4194303)
loop process - 1 events, 0.000s
decode; state=Chunked(BodyCr, 0)
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Chunk size is 1
incoming chunked header: 0x1 (1 bytes)
Chunked read, remaining=1
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
loop process - 0 events, 0.000s
event Readable Token(4194303)
loop process - 1 events, 0.000s
decode; state=Chunked(BodyCr, 0)
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Chunk size is 1
incoming chunked header: 0x1 (1 bytes)
Chunked read, remaining=1
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
loop process - 0 events, 0.000s
event Readable Token(4194303)
loop process - 1 events, 0.000s
decode; state=Chunked(BodyCr, 0)
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Chunk size is 1
incoming chunked header: 0x1 (1 bytes)
Chunked read, remaining=1
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
loop process - 0 events, 0.000s
event Readable Token(4194303)
loop process - 1 events, 0.000s
decode; state=Chunked(BodyCr, 0)
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Chunk size is 1
incoming chunked header: 0x1 (1 bytes)
Chunked read, remaining=1
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
loop process - 0 events, 0.000s
event Readable Token(4194303)
loop process - 1 events, 0.000s
decode; state=Chunked(BodyCr, 0)
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Chunk size is 1
incoming chunked header: 0x1 (1 bytes)
Chunked read, remaining=1
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
event Readable Token(4194303)
loop process - 1 events, 0.000s
decode; state=Chunked(BodyCr, 0)
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Chunk size is 1
incoming chunked header: 0x1 (1 bytes)
Chunked read, remaining=1
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
loop process - 0 events, 0.000s
event Readable Token(4194303)
loop process - 1 events, 0.000s
decode; state=Chunked(BodyCr, 0)
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Chunk size is 1
incoming chunked header: 0x1 (1 bytes)
Chunked read, remaining=1
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
event Readable Token(4194303)
loop process - 1 events, 0.000s
decode; state=Chunked(BodyCr, 0)
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Chunk size is 1
incoming chunked header: 0x1 (1 bytes)
Chunked read, remaining=1
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
loop process - 0 events, 0.000s
event Readable Token(4194303)
loop process - 1 events, 0.000s
decode; state=Chunked(BodyCr, 0)
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Chunk size is 1
incoming chunked header: 0x1 (1 bytes)
Chunked read, remaining=1
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
loop process - 0 events, 0.000s
event Readable Token(4194303)
loop process - 1 events, 0.000s
decode; state=Chunked(BodyCr, 0)
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Chunk size is 1
incoming chunked header: 0x1 (1 bytes)
Chunked read, remaining=1
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
loop process - 0 events, 0.000s
event Readable Token(4194303)
loop process - 1 events, 0.000s
decode; state=Chunked(BodyCr, 0)
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Chunk size is 1
incoming chunked header: 0x1 (1 bytes)
Chunked read, remaining=1
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
loop process - 0 events, 0.000s
event Readable Token(4194303)
loop process - 1 events, 0.000s
decode; state=Chunked(BodyCr, 0)
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Chunk size is 1
incoming chunked header: 0x1 (1 bytes)
Chunked read, remaining=1
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
loop process - 0 events, 0.000s
event Readable Token(4194303)
loop process - 1 events, 0.000s
decode; state=Chunked(BodyCr, 0)
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Chunk size is 1
incoming chunked header: 0x1 (1 bytes)
Chunked read, remaining=1
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
loop process - 0 events, 0.000s
event Readable Token(4194303)
loop process - 1 events, 0.000s
decode; state=Chunked(BodyCr, 0)
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Chunk size is 1365
incoming chunked header: 0x555 (1365 bytes)
Chunked read, remaining=1365
flushed({role=client}): State { reading: Body(Chunked(Body, 765)), writing: KeepAlive, keep_alive: Busy }
event Readable Token(4194303)
loop process - 1 events, 0.000s
decode; state=Chunked(Body, 765)
Chunked read, remaining=765
read 767 bytes
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
event Readable Token(4194303)
loop process - 1 events, 0.000s
decode; state=Chunked(BodyCr, 0)
Read chunk hex size
read 5 bytes
Read chunk hex size
Chunk size is 0
end of chunked
incoming body completed
scheduling Read for: 0
maybe_notify; read_from_io blocked
scheduling Read for: 0
signal: Want
signal found waiting giver, notifying
flushed({role=client}): State { reading: Init, writing: Init, keep_alive: Idle }
scheduling Read for: 0
signal: Want
flushed({role=client}): State { reading: Init, writing: Init, keep_alive: Idle }
event Readable Token(4194303)
loop process - 1 events, 0.000s
poll_want: taker wants!
put; add idle connection for "https://api.spotify.com"
pooling idle connection for "https://api.spotify.com"
event Readable Token(4194303)
loop process - 1 events, 0.000s
event Readable Token(4194303)
loop process - 1 events, 0.000s
scheduling Read for: 0
signal: Want
flushed({role=client}): State { reading: Init, writing: Init, keep_alive: Idle }
loop process - 0 events, 0.000s
event Readable Token(4194303)
loop process - 1 events, 0.000s
take? "https://api.spotify.com": expiration = Some(90s)
reuse idle connection for "https://api.spotify.com"
event Readable Token(4194303)
loop process - 1 events, 0.000s
scheduling Read for: 0
Client::encode method=GET, body=None
flushed 483 bytes
flushed({role=client}): State { reading: Init, writing: KeepAlive, keep_alive: Busy }
loop process - 0 events, 0.000s
event Readable | Writable Token(0)
loop process - 1 events, 0.000s
Conn::read_head
read 651 bytes
Response.parse([Header; 100], [u8; 651])
Response.parse Complete(537)
parsed 12 headers
incoming body is chunked encoding
decode; state=Chunked(Size, 0)
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Chunk size is 1
incoming chunked header: 0x1 (1 bytes)
Chunked read, remaining=1
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
event Readable | Writable Token(0)
event Readable Token(4194303)
loop process - 2 events, 0.000s
Response: '429 Too Many Requests' for https://api.spotify.com/v1/me/player/currently-playing
event Readable Token(4194303)
loop process - 1 events, 0.000s
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
loop process - 0 events, 0.000s
event Readable Token(4194303)
loop process - 1 events, 0.000s
decode; state=Chunked(BodyCr, 0)
Read chunk hex size
Read chunk hex size
Read chunk hex size
Chunk size is 95
incoming chunked header: 0x5F (95 bytes)
Chunked read, remaining=95
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
loop process - 0 events, 0.000s
event Readable Token(4194303)
loop process - 1 events, 0.000s
decode; state=Chunked(BodyCr, 0)
Read chunk hex size
read 5 bytes
Read chunk hex size
Chunk size is 0
end of chunked
incoming body completed
scheduling Read for: 0
maybe_notify; read_from_io blocked
scheduling Read for: 0
signal: Want
signal found waiting giver, notifying
flushed({role=client}): State { reading: Init, writing: Init, keep_alive: Idle }
scheduling Read for: 0
signal: Want
flushed({role=client}): State { reading: Init, writing: Init, keep_alive: Idle }
event Readable Token(4194303)
loop process - 1 events, 0.000s
poll_want: taker wants!
put; add idle connection for "https://api.spotify.com"
pooling idle connection for "https://api.spotify.com"
loop process - 0 events, 0.000s
Couldn't fetch metadata from spotify: Err(RateLimited(Some(13)))
event Readable Token(4194303)
loop process - 1 events, 0.000s
scheduling Read for: 0
signal: Want
flushed({role=client}): State { reading: Init, writing: Init, keep_alive: Idle }
take? "https://api.spotify.com": expiration = Some(90s)
reuse idle connection for "https://api.spotify.com"
event Readable Token(4194303)
loop process - 1 events, 0.000s
scheduling Read for: 0
Client::encode method=GET, body=None
flushed 465 bytes
flushed({role=client}): State { reading: Init, writing: KeepAlive, keep_alive: Busy }
loop process - 0 events, 0.000s
event Readable | Writable Token(0)
loop process - 1 events, 0.000s
Conn::read_head
read 760 bytes
Response.parse([Header; 100], [u8; 760])
Response.parse Complete(537)
parsed 12 headers
incoming body is chunked encoding
decode; state=Chunked(Size, 0)
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Chunk size is 1
incoming chunked header: 0x1 (1 bytes)
Chunked read, remaining=1
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
event Readable Token(4194303)
loop process - 1 events, 0.000s
Response: '429 Too Many Requests' for https://api.spotify.com/v1/me/player
event Readable Token(4194303)
loop process - 1 events, 0.000s
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
loop process - 0 events, 0.000s
event Readable Token(4194303)
loop process - 1 events, 0.000s
decode; state=Chunked(BodyCr, 0)
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Chunk size is 1
incoming chunked header: 0x1 (1 bytes)
Chunked read, remaining=1
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
loop process - 0 events, 0.000s
event Readable Token(4194303)
loop process - 1 events, 0.000s
decode; state=Chunked(BodyCr, 0)
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Chunk size is 1
incoming chunked header: 0x1 (1 bytes)
Chunked read, remaining=1
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
loop process - 0 events, 0.000s
event Readable Token(4194303)
loop process - 1 events, 0.000s
decode; state=Chunked(BodyCr, 0)
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Chunk size is 1
incoming chunked header: 0x1 (1 bytes)
Chunked read, remaining=1
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
loop process - 0 events, 0.000s
event Readable Token(4194303)
loop process - 1 events, 0.000s
decode; state=Chunked(BodyCr, 0)
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Chunk size is 1
incoming chunked header: 0x1 (1 bytes)
Chunked read, remaining=1
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
loop process - 0 events, 0.000s
event Readable Token(4194303)
loop process - 1 events, 0.000s
decode; state=Chunked(BodyCr, 0)
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Chunk size is 1
incoming chunked header: 0x1 (1 bytes)
Chunked read, remaining=1
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
loop process - 0 events, 0.000s
event Readable Token(4194303)
loop process - 1 events, 0.000s
decode; state=Chunked(BodyCr, 0)
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Chunk size is 1
incoming chunked header: 0x1 (1 bytes)
Chunked read, remaining=1
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
loop process - 0 events, 0.000s
event Readable Token(4194303)
loop process - 1 events, 0.000s
decode; state=Chunked(BodyCr, 0)
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Chunk size is 1
incoming chunked header: 0x1 (1 bytes)
Chunked read, remaining=1
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
loop process - 0 events, 0.000s
event Readable Token(4194303)
loop process - 1 events, 0.000s
decode; state=Chunked(BodyCr, 0)
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Chunk size is 1
incoming chunked header: 0x1 (1 bytes)
Chunked read, remaining=1
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
loop process - 0 events, 0.000s
event Readable Token(4194303)
loop process - 1 events, 0.000s
decode; state=Chunked(BodyCr, 0)
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Chunk size is 1
incoming chunked header: 0x1 (1 bytes)
Chunked read, remaining=1
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
loop process - 0 events, 0.000s
event Readable Token(4194303)
loop process - 1 events, 0.000s
decode; state=Chunked(BodyCr, 0)
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Chunk size is 86
incoming chunked header: 0x56 (86 bytes)
Chunked read, remaining=86
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
loop process - 0 events, 0.000s
event Readable Token(4194303)
loop process - 1 events, 0.000s
decode; state=Chunked(BodyCr, 0)
Read chunk hex size
read 5 bytes
Read chunk hex size
Chunk size is 0
end of chunked
incoming body completed
scheduling Read for: 0
maybe_notify; read_from_io blocked
scheduling Read for: 0
signal: Want
signal found waiting giver, notifying
flushed({role=client}): State { reading: Init, writing: Init, keep_alive: Idle }
scheduling Read for: 0
signal: Want
flushed({role=client}): State { reading: Init, writing: Init, keep_alive: Idle }
event Readable Token(4194303)
loop process - 1 events, 0.000s
poll_want: taker wants!
put; add idle connection for "https://api.spotify.com"
pooling idle connection for "https://api.spotify.com"
loop process - 0 events, 0.000s
event Readable Token(4194303)
loop process - 1 events, 0.000s
scheduling Read for: 0
signal: Want
flushed({role=client}): State { reading: Init, writing: Init, keep_alive: Idle }
loop process - 0 events, 0.000s
event Readable Token(4194303)
loop process - 1 events, 0.000s
take? "https://api.spotify.com": expiration = Some(90s)
reuse idle connection for "https://api.spotify.com"
event Readable Token(4194303)
loop process - 1 events, 0.000s
scheduling Read for: 0
Client::encode method=GET, body=None
flushed 465 bytes
flushed({role=client}): State { reading: Init, writing: KeepAlive, keep_alive: Busy }
loop process - 0 events, 0.000s
event Readable | Writable Token(0)
loop process - 1 events, 0.000s
Conn::read_head
read 661 bytes
Response.parse([Header; 100], [u8; 661])
Response.parse Complete(537)
parsed 12 headers
incoming body is chunked encoding
decode; state=Chunked(Size, 0)
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Chunk size is 1
incoming chunked header: 0x1 (1 bytes)
Chunked read, remaining=1
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
event Readable Token(4194303)
loop process - 1 events, 0.000s
Response: '429 Too Many Requests' for https://api.spotify.com/v1/me/player
event Readable Token(4194303)
loop process - 1 events, 0.000s
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
loop process - 0 events, 0.000s
event Readable Token(4194303)
loop process - 1 events, 0.000s
decode; state=Chunked(BodyCr, 0)
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Chunk size is 1
incoming chunked header: 0x1 (1 bytes)
Chunked read, remaining=1
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
loop process - 0 events, 0.000s
event Readable Token(4194303)
loop process - 1 events, 0.000s
decode; state=Chunked(BodyCr, 0)
Read chunk hex size
Read chunk hex size
Read chunk hex size
Chunk size is 94
incoming chunked header: 0x5E (94 bytes)
Chunked read, remaining=94
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
loop process - 0 events, 0.000s
decode; state=Chunked(BodyCr, 0)
Read chunk hex size
read 5 bytes
Read chunk hex size
Chunk size is 0
end of chunked
incoming body completed
scheduling Read for: 0
maybe_notify; read_from_io blocked
scheduling Read for: 0
signal: Want
signal found waiting giver, notifying
flushed({role=client}): State { reading: Init, writing: Init, keep_alive: Idle }
scheduling Read for: 0
signal: Want
flushed({role=client}): State { reading: Init, writing: Init, keep_alive: Idle }
event Readable Token(4194303)
loop process - 1 events, 0.000s
poll_want: taker wants!
put; add idle connection for "https://api.spotify.com"
pooling idle connection for "https://api.spotify.com"
loop process - 0 events, 0.000s
event Readable Token(4194303)
loop process - 1 events, 0.000s
scheduling Read for: 0
signal: Want
flushed({role=client}): State { reading: Init, writing: Init, keep_alive: Idle }
event Readable Token(4194303)
loop process - 1 events, 0.000s
take? "https://api.spotify.com": expiration = Some(90s)
reuse idle connection for "https://api.spotify.com"
event Readable Token(4194303)
loop process - 1 events, 0.000s
scheduling Read for: 0
Client::encode method=GET, body=None
flushed 465 bytes
flushed({role=client}): State { reading: Init, writing: KeepAlive, keep_alive: Busy }
loop process - 0 events, 0.000s
event Readable | Writable Token(0)
loop process - 1 events, 0.000s
Conn::read_head
read 795 bytes
Response.parse([Header; 100], [u8; 795])
Response.parse Complete(537)
parsed 12 headers
incoming body is chunked encoding
decode; state=Chunked(Size, 0)
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Chunk size is 1
incoming chunked header: 0x1 (1 bytes)
Chunked read, remaining=1
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
event Readable Token(4194303)
loop process - 1 events, 0.000s
Response: '429 Too Many Requests' for https://api.spotify.com/v1/me/player
event Readable Token(4194303)
loop process - 1 events, 0.000s
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
loop process - 0 events, 0.000s
decode; state=Chunked(BodyCr, 0)
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Chunk size is 1
incoming chunked header: 0x1 (1 bytes)
Chunked read, remaining=1
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
event Readable Token(4194303)
loop process - 1 events, 0.000s
decode; state=Chunked(BodyCr, 0)
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Chunk size is 1
incoming chunked header: 0x1 (1 bytes)
Chunked read, remaining=1
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
loop process - 0 events, 0.000s
event Readable Token(4194303)
loop process - 1 events, 0.000s
decode; state=Chunked(BodyCr, 0)
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Chunk size is 1
incoming chunked header: 0x1 (1 bytes)
Chunked read, remaining=1
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
loop process - 0 events, 0.000s
event Readable Token(4194303)
loop process - 1 events, 0.000s
decode; state=Chunked(BodyCr, 0)
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Chunk size is 1
incoming chunked header: 0x1 (1 bytes)
Chunked read, remaining=1
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
loop process - 0 events, 0.000s
event Readable Token(4194303)
loop process - 1 events, 0.000s
decode; state=Chunked(BodyCr, 0)
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Chunk size is 1
incoming chunked header: 0x1 (1 bytes)
Chunked read, remaining=1
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
loop process - 0 events, 0.000s
event Readable Token(4194303)
loop process - 1 events, 0.000s
decode; state=Chunked(BodyCr, 0)
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Chunk size is 1
incoming chunked header: 0x1 (1 bytes)
Chunked read, remaining=1
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
loop process - 0 events, 0.000s
event Readable Token(4194303)
loop process - 1 events, 0.000s
decode; state=Chunked(BodyCr, 0)
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Chunk size is 1
incoming chunked header: 0x1 (1 bytes)
Chunked read, remaining=1
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
event Readable Token(4194303)
loop process - 1 events, 0.000s
decode; state=Chunked(BodyCr, 0)
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Chunk size is 1
incoming chunked header: 0x1 (1 bytes)
Chunked read, remaining=1
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
event Readable Token(4194303)
loop process - 1 events, 0.000s
decode; state=Chunked(BodyCr, 0)
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Chunk size is 1
incoming chunked header: 0x1 (1 bytes)
Chunked read, remaining=1
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
loop process - 0 events, 0.000s
event Readable Token(4194303)
loop process - 1 events, 0.000s
decode; state=Chunked(BodyCr, 0)
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Chunk size is 1
incoming chunked header: 0x1 (1 bytes)
Chunked read, remaining=1
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
event Readable Token(4194303)
loop process - 1 events, 0.000s
decode; state=Chunked(BodyCr, 0)
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Chunk size is 1
incoming chunked header: 0x1 (1 bytes)
Chunked read, remaining=1
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
event Readable Token(4194303)
loop process - 1 events, 0.000s
decode; state=Chunked(BodyCr, 0)
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Read chunk hex size
Chunk size is 1
incoming chunked header: 0x1 (1 bytes)
Chunked read, remaining=1
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
event Readable Token(4194303)
loop process - 1 events, 0.000s
decode; state=Chunked(BodyCr, 0)
Read chunk hex size
Read chunk hex size
Read chunk hex size
Chunk size is 83
incoming chunked header: 0x53 (83 bytes)
Chunked read, remaining=83
flushed({role=client}): State { reading: Body(Chunked(BodyCr, 0)), writing: KeepAlive, keep_alive: Busy }
event Readable Token(4194303)
loop process - 1 events, 0.000s
decode; state=Chunked(BodyCr, 0)
Read chunk hex size
read 5 bytes
Read chunk hex size
Chunk size is 0
end of chunked
incoming body completed
scheduling Read for: 0
maybe_notify; read_from_io blocked
scheduling Read for: 0
signal: Want
signal found waiting giver, notifying
flushed({role=client}): State { reading: Init, writing: Init, keep_alive: Idle }
scheduling Read for: 0
signal: Want
flushed({role=client}): State { reading: Init, writing: Init, keep_alive: Idle }
event Readable Token(4194303)
loop process - 1 events, 0.000s
poll_want: taker wants!
put; add idle connection for "https://api.spotify.com"
pooling idle connection for "https://api.spotify.com"
loop process - 0 events, 0.000s
event Readable Token(4194303)
loop process - 1 events, 0.000s
scheduling Read for: 0
signal: Want
flushed({role=client}): State { reading: Init, writing: Init, keep_alive: Idle }
loop process - 0 events, 0.000s
Polling message stream
msgstream found Ok(NotReady)
D-Bus i/o poll ready: 35 is Ready(Readable)
D-Bus i/o unix ready: 35 is Readable | Aio
scheduling Read for: 4
loop poll - 60.693µs
loop time - Instant { tv_sec: 14706, tv_nsec: 394322376 }
loop process, 17.788µs
event Readable | Writable Token(12582915)
loop process - 1 events, 0.000s
scheduling Read for: 3
loop poll - 6.370339345s
loop time - Instant { tv_sec: 14712, tv_nsec: 764687320 }
loop process, 20.989µs
Polling message stream
msgstream found Ok(NotReady)
Polling message stream
msgstream found Ok(NotReady)
scheduling Read for: 5
flushing framed transport
writing; remaining=1064
framed transport flushed
loop poll - 148.006µs
loop time - Instant { tv_sec: 14712, tv_nsec: 765028728 }
loop process, 16.296µs
Polling message stream
msgstream found Ok(NotReady)
event Readable | Writable Token(20971525)
loop process - 1 events, 0.000s
attempting to decode a frame
frame decoded from buffer
attempting to decode a frame
scheduling Read for: 5
flushing framed transport
framed transport flushed
loop poll - 55.194904ms
loop time - Instant { tv_sec: 14712, tv_nsec: 820269990 }
loop process, 15.945µs
Polling message stream
msgstream found Ok(NotReady)
drop Spirc[0]
Shutting down player thread ...
drop Player[0]
drop Session[0]
drop AudioKeyManager
drop ChannelManager
drop MercuryManager
Dropping AMessageStream
AMessageStream telling ADriver to quit
shutdown; state=pool::State { lifecycle: Running, num_futures: 0 }
  -> transitioned to shutdown
  -> shutting down workers
deregistering handle with poller
dropping I/O source: 0
deregistering handle with poller
dropping I/O source: 1
deregistering handle with poller
dropping I/O source: 2
dropping I/O source: 4
dropping I/O source: 3
drop Dispatch
deregistering handle with poller
dropping I/O source: 5

Compilation flags

I'm using spotifyd-bin-full 0.2.24-1 from the AUR.

Versions (please complete the following information):

  • OS: Arch Linux
  • Spotifyd: 0.2.24
  • cargo: 1.42.0
  • playerctl: 2.1.1

The relevant log line is probably

Couldn't fetch metadata from spotify: Err(RateLimited(Some(13)))

May be related to #337 and/or #503. I couldn't find the error message I received in any of these two issues so I created another one but feel free to close this one if you think it's a duplicate.

@cloudlena cloudlena added the bug A functionality or parts of a program that do not work as intended label Apr 3, 2020
@cloudlena cloudlena changed the title playerctl metadata returns "No player could handle this command" playerctl metadata sometimes returns "No player could handle this command" Apr 3, 2020
@AndydeCleyre
Copy link

AndydeCleyre commented Apr 5, 2020

I believe this is the same problem I'm having, also on Arch.

$ watch -n 1 playerctl status

Shows that it is very frequently switching between Playing and Stopped states.

Similarly, I'm scrobbling with rescrobbled, and those logs look like:

2020-04-05 13:39:54.139342561  Found active player Spotifyd
2020-04-05 13:39:54.377935864  ----
2020-04-05 13:39:54.377942411  Now playing: Cotton Jones - Blood Red Sentimental Blues (Paranoid Cocoon)
2020-04-05 13:39:54.461332976  Status updated on Last.fm successfully
2020-04-05 13:39:55.905873917  Failed to get metadata: D-Bus call failed: "Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken."
2020-04-05 13:39:57.077695676  Failed to retrieve playback status: D-Bus call failed: "Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken."
2020-04-05 13:39:58.079546224  Player Spotifyd stopped, looking for a new MPRIS player...
2020-04-05 13:39:58.331233479  Found active player Spotifyd
2020-04-05 13:39:58.624023600  ----
2020-04-05 13:39:58.624027994  Now playing: Cotton Jones - Blood Red Sentimental Blues (Paranoid Cocoon)
2020-04-05 13:39:58.701995291  Status updated on Last.fm successfully
2020-04-05 13:40:00.824852534  Failed to retrieve playback status: D-Bus call failed: "Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken."
2020-04-05 13:40:02.087142356  Failed to retrieve playback status: D-Bus call failed: "Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken."
2020-04-05 13:40:05.521878170  Player Spotifyd stopped, looking for a new MPRIS player...
2020-04-05 13:40:06.117661968  Found active player Spotifyd
2020-04-05 13:40:06.984793725  ----
2020-04-05 13:40:06.984811916  Now playing: Cotton Jones - Blood Red Sentimental Blues (Paranoid Cocoon)
2020-04-05 13:40:07.061411175  Status updated on Last.fm successfully
2020-04-05 13:40:09.788520706  Failed to retrieve playback status: D-Bus call failed: "Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken."

(constantly)

EDIT: Forgot to mention, I'm using spotifyd-full 0.2.24-1 from the AUR.

@dustinlyons
Copy link
Contributor

I'm also seeing this occasional behavior. Running spotifyd-bin-full 0.2.24-1 and playerctl 2.1.1 on Arch Linux.

@Tene21
Copy link

Tene21 commented Aug 25, 2020

I'm also seeing this behaviour. Running spotifyd 0.2.24-2 from the AUR and playerctl 2.2.1-1 on Arch.

@carlsmedstad
Copy link

Having the same issue. Running the same versions of spotifyd and playerctl as above.

@gpk2000
Copy link

gpk2000 commented Sep 25, 2020

Any workarounds for this? I am unable to get metadata using the command.

@yousefamar
Copy link

One solution that worked for me is at the bottom of #503 (and hopefully in the readme soon). The problem isn't with playerctl (it happend also if you dbus-send directly), and it's do with rate limiting as @mastertinner pointed out. The problem was that this metadata was gotten via the Spotify API, and spotifyd uses a single Client ID for this, so the requests were getting rate-limited, because they're across every spotifyd user presumably. To work around this, you should create and use your own Client ID. To do that currently:

  1. Compile spotifyd from source (master branch is ok), as the latest official build is quite old and doesn't have @sirwindfield's hotfix. Alternatively, you can checkout v0.2.24 and patch it yourself
  2. When you build/install, make sure that you set at least the --features dbus_mpris flag, along with anything else you need
  3. If you have a config file, make sure it's in the new TOML format to avoid problems, as the binary doesn't have that yet either
  4. Go to https://developer.spotify.com/dashboard/login, create an app (call it whatever), and copy the client ID
  5. When you run spotifyd, set the SPOTIFYD_CLIENT_ID environment variable to that client ID, e.g. with the default one SPOTIFYD_CLIENT_ID=2c1ea588dfbc4a989e2426f8385297c3 spotifyd --no-daemon
  6. If you use systemd, you can add the environment variable to the [Service] section of your spotifyd.service, like below
spotifyd.service with SPOTIFYD_CLIENT_ID
[Unit]
Description=A spotify playing daemon
Documentation=https://github.com/Spotifyd/spotifyd
Wants=sound.target
After=sound.target
Wants=network-online.target
After=network-online.target

[Service]
ExecStart=/usr/bin/spotifyd --no-daemon
Restart=always
RestartSec=12
Environment=SPOTIFYD_CLIENT_ID=2c1ea588dfbc4a989e2426f8385297c3

[Install]
WantedBy=default.target

#337 makes me think that there is potentially also a second issue where tokens expire after an hour and need to be re-fetched, but I haven't run into that yet.

@PoSayDone
Copy link

@yousefamar, thanks a lot!

@stale
Copy link

stale bot commented Feb 4, 2021

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

@stale stale bot added the wontfix Issues that will not be fixed under any circumstances label Feb 4, 2021
@stale stale bot closed this as completed Feb 14, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug A functionality or parts of a program that do not work as intended wontfix Issues that will not be fixed under any circumstances
Projects
None yet
Development

No branches or pull requests

8 participants