A spotify daemon

Overview

Spotifyd

All Contributors

Cargo Downloads Dependabot Status Github Actions - CD Github Actions - CI

An open source Spotify client running as a UNIX daemon.

Spotifyd streams music just like the official client, but is more lightweight and supports more platforms. Spotifyd also supports the Spotify Connect protocol, which makes it show up as a device that can be controlled from the official clients.

Note: Spotifyd requires a Spotify Premium account.

To read about how to install and configure Spotifyd, take a look at our wiki!

Common issues

  • Spotifyd will not work without Spotify Premium
  • The device name cannot contain spaces

Contributing

We always appreciate help during the development of spotifyd! If you are new to programming, open source or Rust in general, take a look at issues tagged with good first issue. These normally are easy to resolve and don't take much time to implement.

Credits

This project would not have been possible without the amazing reverse engineering work done in librespot, mostly by plietar.

Comments
  • Web API related MPRIS commands stop working after one hour

    Web API related MPRIS commands stop working after one hour

    Still using the old 0.2.10 version with MPRIS. There is a process polling information on several MPRIS services (not just spotifyd) that polls every few second. Changing the polling interval doesn't seem to have an effect on the time that the MPRIS interface stops working. It seems that spotifyd MPRIS is responsive only for about 1 hours. Changing the polling interval doesn't change anything, it seems that the problem always happens after one hour.

    bug help wanted wontfix 
    opened by hifiberry 62
  • Panic: zero-initalisation of ov_callbacks

    Panic: zero-initalisation of ov_callbacks

    Description

    I had successfully compiled and used Spotifyd for several days prior to this issue. I then decided I wanted to enable additional feature flags, so uninstalled the original instance and built again.

    However, after installing this new instance, I receive the following log messages when trying to play music from a Connect-capable client:

    
    No proxy specified
    
    Using software volume controller.
    
    Connecting to AP "gew1-accesspoint-b-qzv4.ap.spotify.com:443"
    
    Authenticated as "USERNAME" !
    
    Country: "GB"
    
    Unhandled DBus message: (Signal, Some("/org/freedesktop/DBus"), Some("org.freedesktop.DBus"), Some("NameAcquired"))
    
    Unhandled DBus message: (Signal, Some("/org/freedesktop/DBus"), Some("org.freedesktop.DBus"), Some("NameAcquired"))
    
    Loading <Broken> with Spotify URI <spotify:track:6qF9QltwbDeujrVrzpCoLj>
    
    Caught panic with message: attempted to zero-initialize type `librespot_tremor::tremor_sys::ov_callbacks`, which is invalid
    
    Caught panic with message: called `Result::unwrap()` on an `Err` value: "SendError(..)"
    
    Player thread panicked!
    

    The application then exits.

    Upon realising this, I attempted to rebuild the source with the original options and reinstall that, however the same error displays as above. I tried a variety of build options and appropriate configuration tweaking to no end, including using the crates.io release to no avail.

    To Reproduce Not something I can describe to reproduce, as it occurred suddenly and is persistent among rebuilds.

    Logs

    Click to show logs Loading config from "/home/pi/.config/spotifyd/spotifyd.conf"

    CliConfig { config_path: None, no_daemon: true, verbose: true, pid: None, shared_config: SharedConfigValues { username: Some("taken out for privacy"), password: Some("taken out for privacy"), password_cmd: None, use_keyring: false, on_song_change_hook: None, cache_path: None, no-audio-cache: false, backend: Some(PulseAudio), volume_controller: None, device: None, control: None, mixer: None, device_name: Some("RaspberryPiTV"), bitrate: Some(Bitrate320), volume_normalisation: false, normalisation_pregain: None, zeroconf_port: None, proxy: None } }

    Found shell "/bin/bash" using SHELL environment variable.

    No proxy specified

    registering with poller

    registering with poller

    registering with poller

    registering with poller

    build; num-workers=4

    registering with poller

    Using software volume controller.

    starting background reactor

    adding I/O source: 0

    registering with poller

    Zeroconf server listening on 0.0.0.0:37183

    adding I/O source: 4194305

    registering with poller

    event Writable Token(4194305)

    adding I/O source: 8388610

    registering with poller

    loop process - 1 events, 0.000s

    event Writable Token(8388610)

    loop process - 1 events, 0.000s

    adding I/O source: 12582915

    registering with poller

    event Writable Token(12582915)

    loop process - 1 events, 0.000s

    park; waiting for idle connection: "http://apresolve.spotify.com"

    Http::connect("http://apresolve.spotify.com/")

    consuming notification queue

    resolving host="apresolve.spotify.com", port=80

    scheduling Read for: 0

    scheduling Read for: 1

    sending packet to 224.0.0.251:5353

    event Readable | Writable Token(4194305)

    loop process - 1 events, 0.000s

    scheduling Read for: 2

    sending packet to [ff02::fb]:5353

    scheduling Read for: 3

    loop poll - 1.90442ms

    loop time - Instant { tv_sec: 5973, tv_nsec: 505571470 }

    loop process, 41.351µs

    event Readable | Writable Token(8388610)

    loop process - 1 events, 0.000s

    received packet from 192.168.1.182:5353

    received packet from 192.168.1.182:5353 with no query

    scheduling Read for: 1

    scheduling Read for: 1

    received packet from [fe80::6c2e:d9c1:337:5394]:5353

    received packet from [fe80::6c2e:d9c1:337:5394]:5353 with no query

    scheduling Read for: 2

    scheduling Read for: 2

    loop poll - 326.755µs

    loop time - Instant { tv_sec: 5973, tv_nsec: 505963465 }

    loop process, 36.055µs

    scheduling Read for: 1

    scheduling Read for: 2

    loop poll - 45.666µs

    loop time - Instant { tv_sec: 5973, tv_nsec: 506065445 }

    loop process, 34µs

    loop poll - 128.534738ms

    loop time - Instant { tv_sec: 5973, tv_nsec: 634651312 }

    loop process, 56.574µs

    connecting to 34.98.74.57:80

    adding I/O source: 16777220

    registering with poller

    scheduling Write for: 4

    event Writable Token(16777220)

    loop process - 1 events, 0.000s

    loop poll - 18.134288ms

    loop time - Instant { tv_sec: 5973, tv_nsec: 653032245 }

    loop process, 22.926µs

    read_keep_alive; is_mid_message=false

    scheduling Read for: 4

    should_keep_alive(version=Http11, header=None) = true

    Client::encode has_body=false, method=None

    reclaiming write buf Vec

    flushed 47 bytes

    flushed State { reading: Init, writing: KeepAlive, keep_alive: Busy, error: None }

    wants_read_again? false

    loop poll - 199.664µs

    loop time - Instant { tv_sec: 5973, tv_nsec: 653334649 }

    loop process, 16.074µs

    event Readable | Writable Token(16777220)

    loop process - 1 events, 0.000s

    Conn::read_head

    read 594 bytes

    Response.parse([Header; 100], [u8; 594])

    Response.parse Complete(176)

    maybe_literal not found, copying "Via"

    parsed 5 headers (176 bytes)

    incoming body is content-length (418 bytes)

    expecting_continue(version=Http11, header=None) = false

    should_keep_alive(version=Http11, header=None) = true

    Conn::read_body

    decode; state=Length(418)

    flushed State { reading: Body(Length(0)), writing: KeepAlive, keep_alive: Busy, error: None }

    wants_read_again? false

    loop poll - 27.867997ms

    loop time - Instant { tv_sec: 5973, tv_nsec: 681227461 }

    loop process, 18.445µs

    Conn::read_body

    decode; state=Length(0)

    incoming body completed

    scheduling Read for: 4

    maybe_notify; read_from_io blocked

    read_keep_alive; is_mid_message=false

    scheduling Read for: 4

    signal: Want

    flushed State { reading: Init, writing: Init, keep_alive: Idle, error: None }

    wants_read_again? false

    poll_want: taker wants!

    pool dropped, dropping pooled ("http://apresolve.spotify.com")

    loop poll - 169.128µs

    loop time - Instant { tv_sec: 5973, tv_nsec: 681475440 }

    loop process, 17.796µs

    Connecting to AP "gew1-accesspoint-b-n2lk.ap.spotify.com:443"

    adding I/O source: 20971525

    registering with poller

    scheduling Write for: 5

    read_keep_alive; is_mid_message=false

    scheduling Read for: 4

    client tx closed

    State::close_read()

    State::close_write()

    flushed State { reading: Closed, writing: Closed, keep_alive: Disabled, error: None }

    wants_read_again? false

    shut down IO

    deregistering handle with poller

    dropping I/O source: 4

    signal: Closed

    loop poll - 152.628µs

    loop time - Instant { tv_sec: 5973, tv_nsec: 814064256 }

    loop process, 18.722µs

    event Writable Token(20971525)

    loop process - 1 events, 0.000s

    loop poll - 24.842684ms

    loop time - Instant { tv_sec: 5973, tv_nsec: 838934625 }

    loop process, 22.519µs

    scheduling Read for: 5

    event Readable | Writable Token(20971525)

    loop process - 1 events, 0.000s

    loop poll - 22.965875ms

    loop time - Instant { tv_sec: 5973, tv_nsec: 884802432 }

    loop process, 22.981µs

    flushing framed transport

    writing; remaining=133

    framed transport flushed

    scheduling Read for: 5

    event Readable | Writable Token(4194305)

    loop process - 1 events, 0.000s

    received packet from 192.168.1.237:5353

    scheduling Read for: 1

    scheduling Read for: 1

    scheduling Read for: 2

    loop poll - 179.811013ms

    loop time - Instant { tv_sec: 5974, tv_nsec: 87816409 }

    loop process, 22.759µs

    event Readable | Writable Token(20971525)

    loop process - 1 events, 0.000s

    event Readable | Writable Token(20971525)

    loop process - 1 events, 0.000s

    loop poll - 619.45243ms

    loop time - Instant { tv_sec: 5974, tv_nsec: 707304894 }

    loop process, 119.943µs

    attempting to decode a frame

    frame decoded from buffer

    Authenticated as "REDACTED" !

    new Session[0]

    new Spirc[0]

    new MercuryManager

    input volume:65535 to mixer: 65535

    attempting to decode a frame

    frame decoded from buffer

    Session[0] strong=4 weak=2

    attempting to decode a frame

    frame decoded from buffer

    attempting to decode a frame

    frame decoded from buffer

    attempting to decode a frame

    frame decoded from buffer

    Country: "GB"

    attempting to decode a frame

    frame decoded from buffer

    attempting to decode a frame

    frame decoded from buffer

    attempting to decode a frame

    scheduling Read for: 5

    flushing framed transport

    writing; remaining=876

    framed transport flushed

    loop poll - 562.548µs

    loop time - Instant { tv_sec: 5974, tv_nsec: 708687302 }

    loop process, 40.351µs

    new Player[0]

    Using PulseAudio sink

    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 - 17.572444ms

    loop time - Instant { tv_sec: 5974, tv_nsec: 726319912 }

    loop process, 39.629µs

    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

    frame decoded from buffer

    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 - 16.785861ms

    loop time - Instant { tv_sec: 5974, tv_nsec: 743167309 }

    loop process, 39.944µs

    subscribed uri=hm://remote/user/REDACTED/ count=0

    loop poll - 8.352µs

    loop time - Instant { tv_sec: 5974, tv_nsec: 743305474 }

    loop process, 38.499µs

    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 - 2.744613ms

    loop time - Instant { tv_sec: 5974, tv_nsec: 746107697 }

    loop process, 37.463µs

    Modify_watch: Watch { fd: 23, read: true, write: false }, poll_now: false

    adding I/O source: 25165828

    registering with poller

    Dropping AConnection

    scheduling Read for: 4

    scheduling Read for: 4

    D-Bus i/o poll ready: 23 is NotReady

    handle_msgs: (Signal, Some("/org/freedesktop/DBus"), Some("org.freedesktop.DBus"), Some("NameAcquired"))

    handle_msgs: (Signal, Some("/org/freedesktop/DBus"), Some("org.freedesktop.DBus"), Some("NameAcquired"))

    loop poll - 216.682µs

    loop time - Instant { tv_sec: 5974, tv_nsec: 751050023 }

    loop process, 45.592µs

    event Readable | Writable Token(20971525)

    loop process - 1 events, 0.000s

    attempting to decode a frame

    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 - 49.369448ms

    loop time - Instant { tv_sec: 5974, tv_nsec: 800487322 }

    loop process, 44.703µs

    Polling message stream

    msgstream found Ok(Ready(Some((Signal, Some("/org/freedesktop/DBus"), Some("org.freedesktop.DBus"), Some("NameAcquired")))))

    Unhandled DBus message: (Signal, Some("/org/freedesktop/DBus"), Some("org.freedesktop.DBus"), Some("NameAcquired"))

    Polling message stream

    msgstream found Ok(Ready(Some((Signal, Some("/org/freedesktop/DBus"), Some("org.freedesktop.DBus"), Some("NameAcquired")))))

    Unhandled DBus message: (Signal, Some("/org/freedesktop/DBus"), Some("org.freedesktop.DBus"), Some("NameAcquired"))

    Polling message stream

    msgstream found Ok(NotReady)

    kMessageTypeNotify "Nokia 5.3" a0f1362bbbc96bff82ba9a7ebcfc56ffcacfdeda 1698217680 1605868501989

    loop poll - 12.981µs

    loop time - Instant { tv_sec: 5974, tv_nsec: 800946334 }

    loop process, 48.759µs

    event Readable | Writable Token(4194305)

    loop process - 1 events, 0.000s

    received packet from 192.168.1.237:5353

    scheduling Read for: 1

    scheduling Read for: 1

    scheduling Read for: 2

    loop poll - 295.089105ms

    loop time - Instant { tv_sec: 5975, tv_nsec: 96105753 }

    loop process, 48.814µs

    event Readable | Writable Token(4194305)

    loop process - 1 events, 0.000s

    received packet from 192.168.1.237:5353

    scheduling Read for: 1

    scheduling Read for: 1

    scheduling Read for: 2

    loop poll - 4.213226017s

    loop time - Instant { tv_sec: 5979, tv_nsec: 309408065 }

    loop process, 21.741µs

    event Readable | Writable Token(4194305)

    loop process - 1 events, 0.000s

    received packet from 192.168.1.237:5353

    scheduling Read for: 1

    scheduling Read for: 1

    sending packet to 224.0.0.251:5353

    event Readable | Writable Token(4194305)

    loop process - 1 events, 0.000s

    event Readable | Writable Token(4194305)

    loop process - 1 events, 0.000s

    scheduling Read for: 2

    loop poll - 196.614689ms

    loop time - Instant { tv_sec: 5979, tv_nsec: 506057828 }

    loop process, 22.703µs

    received packet from 192.168.1.182:5353

    received packet from 192.168.1.182:5353 with no query

    scheduling Read for: 1

    scheduling Read for: 1

    scheduling Read for: 2

    loop poll - 74.851µs

    loop time - Instant { tv_sec: 5979, tv_nsec: 506169549 }

    loop process, 17.518µs

    event Readable Token(0)

    loop process - 1 events, 0.000s

    scheduling Read for: 0

    loop poll - 66.485193ms

    loop time - Instant { tv_sec: 5979, tv_nsec: 572681649 }

    loop process, 20.259µs

    Conn::read_head

    adding I/O source: 29360134

    registering with poller

    scheduling Read for: 6

    event Writable Token(29360134)

    loop process - 1 events, 0.000s

    flushed State { reading: Init, writing: Init, keep_alive: Busy, error: None }

    wants_read_again? false

    loop poll - 107.906µs

    loop time - Instant { tv_sec: 5979, tv_nsec: 572822221 }

    loop process, 16.407µs

    event Readable | Writable Token(29360134)

    loop process - 1 events, 0.000s

    Conn::read_head

    read 222 bytes

    Request.parse([Header; 100], [u8; 222])

    Request.parse Complete(222)

    maybe_literal not found, copying "Keep-Alive"

    parsed 6 headers (222 bytes)

    incoming body is content-length (0 bytes)

    expecting_continue(version=Http11, header=None) = false

    should_keep_alive(version=Http11, header=Some(Connection([KeepAlive]))) = true

    read_keep_alive; is_mid_message=true

    should_keep_alive(version=Http11, header=None) = true

    Server::encode has_body=true, method=Some(Get)

    encoding chunked 450B

    flushed 546 bytes

    scheduling Read for: 6

    maybe_notify; read_from_io blocked

    flushed State { reading: Init, writing: Init, keep_alive: Idle, error: None }

    wants_read_again? false

    loop poll - 1.541295ms

    loop time - Instant { tv_sec: 5979, tv_nsec: 574388849 }

    loop process, 18.092µs

    event Readable | Writable Token(29360134)

    loop process - 1 events, 0.000s

    Conn::read_head

    read 0 bytes

    parse eof

    State::close_read()

    read eof

    read_keep_alive; is_mid_message=true

    flushed State { reading: Closed, writing: Init, keep_alive: Disabled, error: None }

    wants_read_again? false

    shut down IO

    deregistering handle with poller

    dropping I/O source: 6

    loop poll - 3.530881ms

    loop time - Instant { tv_sec: 5979, tv_nsec: 577948026 }

    loop process, 17.259µs

    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 - 294.498761ms

    loop time - Instant { tv_sec: 5979, tv_nsec: 872473657 }

    loop process, 47.518µs

    Polling message stream

    msgstream found Ok(NotReady)

    kMessageTypeHello "Nokia 5.3" a0f1362bbbc96bff82ba9a7ebcfc56ffcacfdeda 1698222811 1605868507120

    scheduling Read for: 5

    flushing framed transport

    writing; remaining=393

    framed transport flushed

    loop poll - 212.275µs

    loop time - Instant { tv_sec: 5979, tv_nsec: 873014465 }

    loop process, 43.981µs

    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 - 27.351412ms

    loop time - Instant { tv_sec: 5979, tv_nsec: 900432468 }

    loop process, 46.426µs

    Polling message stream

    msgstream found Ok(NotReady)

    loop poll - 12.148µs

    loop time - Instant { tv_sec: 5979, tv_nsec: 900612003 }

    loop process, 49.203µs

    event Readable | Writable Token(4194305)

    loop process - 1 events, 0.000s

    received packet from 192.168.1.237:5353

    scheduling Read for: 1

    scheduling Read for: 1

    scheduling Read for: 2

    loop poll - 407.842414ms

    loop time - Instant { tv_sec: 5980, tv_nsec: 308527657 }

    loop process, 47.777µs

    event Readable Token(0)

    loop process - 1 events, 0.000s

    scheduling Read for: 0

    loop poll - 220.500978ms

    loop time - Instant { tv_sec: 5980, tv_nsec: 529104893 }

    loop process, 47.907µs

    Conn::read_head

    adding I/O source: 33554438

    registering with poller

    scheduling Read for: 6

    event Writable Token(33554438)

    loop process - 1 events, 0.000s

    flushed State { reading: Init, writing: Init, keep_alive: Busy, error: None }

    wants_read_again? false

    loop poll - 268.849µs

    loop time - Instant { tv_sec: 5980, tv_nsec: 529448093 }

    loop process, 58.462µs

    event Readable | Writable Token(33554438)

    loop process - 1 events, 0.000s

    Conn::read_head

    read 222 bytes

    Request.parse([Header; 100], [u8; 222])

    Request.parse Complete(222)

    maybe_literal not found, copying "Keep-Alive"

    parsed 6 headers (222 bytes)

    incoming body is content-length (0 bytes)

    expecting_continue(version=Http11, header=None) = false

    should_keep_alive(version=Http11, header=Some(Connection([KeepAlive]))) = true

    read_keep_alive; is_mid_message=true

    should_keep_alive(version=Http11, header=None) = true

    Server::encode has_body=true, method=Some(Get)

    encoding chunked 450B

    flushed 546 bytes

    scheduling Read for: 6

    maybe_notify; read_from_io blocked

    flushed State { reading: Init, writing: Init, keep_alive: Idle, error: None }

    wants_read_again? false

    loop poll - 847.934µs

    loop time - Instant { tv_sec: 5980, tv_nsec: 530378970 }

    loop process, 43.407µs

    event Readable | Writable Token(33554438)

    loop process - 1 events, 0.000s

    Conn::read_head

    read 0 bytes

    parse eof

    State::close_read()

    read eof

    read_keep_alive; is_mid_message=true

    flushed State { reading: Closed, writing: Init, keep_alive: Disabled, error: None }

    wants_read_again? false

    shut down IO

    deregistering handle with poller

    dropping I/O source: 6

    loop poll - 7.834475ms

    loop time - Instant { tv_sec: 5980, tv_nsec: 538281777 }

    loop process, 47.296µs

    event Readable | Writable Token(4194305)

    loop process - 1 events, 0.000s

    received packet from 192.168.1.237:5353

    scheduling Read for: 1

    scheduling Read for: 1

    sending packet to 224.0.0.251:5353

    scheduling Read for: 2

    loop poll - 77.209149ms

    loop time - Instant { tv_sec: 5980, tv_nsec: 615564184 }

    loop process, 45.148µs

    event Readable | Writable Token(4194305)

    loop process - 1 events, 0.000s

    received packet from 192.168.1.182:5353

    received packet from 192.168.1.182:5353 with no query

    scheduling Read for: 1

    scheduling Read for: 1

    scheduling Read for: 2

    loop poll - 318.811µs

    loop time - Instant { tv_sec: 5980, tv_nsec: 615953865 }

    loop process, 39.129µs

    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 - 227.069635ms

    loop time - Instant { tv_sec: 5980, tv_nsec: 843083388 }

    loop process, 46.537µs

    Polling message stream

    msgstream found Ok(NotReady)

    kMessageTypeNotify "Nokia 5.3" a0f1362bbbc96bff82ba9a7ebcfc56ffcacfdeda 1698223783 1605868508092

    loop poll - 10.407µs

    loop time - Instant { tv_sec: 5980, tv_nsec: 843346959 }

    loop process, 44.536µs

    event Readable | Writable Token(4194305)

    loop process - 1 events, 0.000s

    received packet from 192.168.1.237:5353

    scheduling Read for: 1

    scheduling Read for: 1

    scheduling Read for: 2

    loop poll - 478.45311ms

    loop time - Instant { tv_sec: 5981, tv_nsec: 321866568 }

    loop process, 41.704µs

    event Readable Token(0)

    loop process - 1 events, 0.000s

    scheduling Read for: 0

    loop poll - 938.291809ms

    loop time - Instant { tv_sec: 5982, tv_nsec: 260224080 }

    loop process, 48.315µs

    Conn::read_head

    adding I/O source: 37748742

    registering with poller

    event Readable | Writable Token(37748742)

    loop process - 1 events, 0.000s

    read 222 bytes

    Request.parse([Header; 100], [u8; 222])

    Request.parse Complete(222)

    maybe_literal not found, copying "Keep-Alive"

    parsed 6 headers (222 bytes)

    incoming body is content-length (0 bytes)

    expecting_continue(version=Http11, header=None) = false

    should_keep_alive(version=Http11, header=Some(Connection([KeepAlive]))) = true

    read_keep_alive; is_mid_message=true

    should_keep_alive(version=Http11, header=None) = true

    Server::encode has_body=true, method=Some(Get)

    encoding chunked 450B

    flushed 546 bytes

    scheduling Read for: 6

    maybe_notify; read_from_io blocked

    flushed State { reading: Init, writing: Init, keep_alive: Idle, error: None }

    wants_read_again? false

    loop poll - 843.86µs

    loop time - Instant { tv_sec: 5982, tv_nsec: 261142976 }

    loop process, 42.648µs

    event Readable | Writable Token(37748742)

    loop process - 1 events, 0.000s

    Conn::read_head

    read 0 bytes

    parse eof

    State::close_read()

    read eof

    read_keep_alive; is_mid_message=true

    flushed State { reading: Closed, writing: Init, keep_alive: Disabled, error: None }

    wants_read_again? false

    shut down IO

    deregistering handle with poller

    dropping I/O source: 6

    loop poll - 2.008289ms

    loop time - Instant { tv_sec: 5982, tv_nsec: 263217857 }

    loop process, 43.518µs

    event Readable | Writable Token(4194305)

    loop process - 1 events, 0.000s

    received packet from 192.168.1.237:5353

    scheduling Read for: 1

    scheduling Read for: 1

    sending packet to 224.0.0.251:5353

    event Readable | Writable Token(4194305)

    loop process - 1 events, 0.000s

    scheduling Read for: 2

    loop poll - 93.033412ms

    loop time - Instant { tv_sec: 5982, tv_nsec: 356318842 }

    loop process, 49.073µs

    received packet from 192.168.1.182:5353

    received packet from 192.168.1.182:5353 with no query

    scheduling Read for: 1

    scheduling Read for: 1

    scheduling Read for: 2

    loop poll - 221.33µs

    loop time - Instant { tv_sec: 5982, tv_nsec: 356617671 }

    loop process, 44.907µs

    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 - 259.871256ms

    loop time - Instant { tv_sec: 5982, tv_nsec: 616556834 }

    loop process, 49.444µs

    Polling message stream

    msgstream found Ok(NotReady)

    kMessageTypeNotify "Nokia 5.3" a0f1362bbbc96bff82ba9a7ebcfc56ffcacfdeda 1698225544 1605868509853

    loop poll - 12.573µs

    loop time - Instant { tv_sec: 5982, tv_nsec: 616906329 }

    loop process, 53.907µs

    event Readable Token(0)

    loop process - 1 events, 0.000s

    scheduling Read for: 0

    loop poll - 543.555099ms

    loop time - Instant { tv_sec: 5983, tv_nsec: 160539298 }

    loop process, 43.388µs

    Conn::read_head

    adding I/O source: 41943046

    registering with poller

    event Readable | Writable Token(41943046)

    loop process - 1 events, 0.000s

    read 222 bytes

    Request.parse([Header; 100], [u8; 222])

    Request.parse Complete(222)

    maybe_literal not found, copying "Keep-Alive"

    parsed 6 headers (222 bytes)

    incoming body is content-length (0 bytes)

    expecting_continue(version=Http11, header=None) = false

    should_keep_alive(version=Http11, header=Some(Connection([KeepAlive]))) = true

    read_keep_alive; is_mid_message=true

    should_keep_alive(version=Http11, header=None) = true

    Server::encode has_body=true, method=Some(Get)

    encoding chunked 450B

    flushed 546 bytes

    scheduling Read for: 6

    maybe_notify; read_from_io blocked

    flushed State { reading: Init, writing: Init, keep_alive: Idle, error: None }

    wants_read_again? false

    loop poll - 787.379µs

    loop time - Instant { tv_sec: 5983, tv_nsec: 161394954 }

    loop process, 38.092µs

    event Readable | Writable Token(41943046)

    loop process - 1 events, 0.000s

    Conn::read_head

    read 0 bytes

    parse eof

    State::close_read()

    read eof

    read_keep_alive; is_mid_message=true

    flushed State { reading: Closed, writing: Init, keep_alive: Disabled, error: None }

    wants_read_again? false

    shut down IO

    deregistering handle with poller

    dropping I/O source: 6

    loop poll - 4.593349ms

    loop time - Instant { tv_sec: 5983, tv_nsec: 166047450 }

    loop process, 43.944µs

    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 - 41.998152ms

    loop time - Instant { tv_sec: 5983, tv_nsec: 208114046 }

    loop process, 41.425µs

    Polling message stream

    msgstream found Ok(NotReady)

    kMessageTypeLoad "Nokia 5.3" a0f1362bbbc96bff82ba9a7ebcfc56ffcacfdeda 1698226110 1605868509853

    State: context_uri: "spotify:album:69fOwmdCZIaWPE4OLLnuQi" index: 2 position_ms: 7039 status: kPlayStatusPause position_measured_at: 1605868510465 context_description: "" shuffle: false repeat: false playing_from_fallback: true row: 0 playing_track_index: 2 track {gid: "\031\327?\022\326@J\305\246*\272\372\235\n\334%"} track {gid: "#(\261\262\022\310G\235\267.O\203\333v8\366"} track {gid: "\323E\211\022\224\232NA\257o\303\371X\236-\025"} track {gid: "2|8p\322^Kl\203\321Loz\351\363e"} track {gid: "oUlG\312\005HF\210\266s!\3548\210m"} track {gid: "\350\312\377(\233|E.\252x\302k*\256\326A"} track {gid: "%\002\306[\262\023D\313\253\302V\213-Y\000\265"} track {gid: "_\372\34678\377MR\254\034\321\333\3013\036e"} track {gid: "?\357\312\321\336NK\022\242\343\226c\301~#\203"} track {gid: "\200\022\345\251\2455C[\246\245\271\352\206\031\2504"} track {gid: "\211\320!W/\H\221\203hN\376<6\361\220"} track {gid: "\275\261\002\316\377DI\231\221\252l\032Q\267l\205"} track {gid: "\201\345-\2178BG\213\255\306\231\211\322&"} track {gid: "\344<7!t\036C\005\227:y\242G\037\302\373"} track {gid: "\310\252\t\254\343AM\336\253\230\206JRa\310~"} track {gid: "$\327*\310\237cK\340\256\231\353\215\215\365\200\"} track {gid: "\252\365\n\227r\023O\272\251\023\234\352H\251\335\345"} track {gid: "\306\017\265\0252<EA\270\300\254#\316\306\206@"} track {gid: "@ty\372\201\251G\377\220\213\r\221\302\333\202\331"}

    Frame has 19 tracks

    Loading context: spotify:album:69fOwmdCZIaWPE4OLLnuQi index: [2] of 19

    command=Load(SpotifyId { id: 280828155756069103410723341265459358997, audio_type: Track }, false, 7039)

    scheduling Read for: 5

    flushing framed transport

    writing; remaining=899

    framed transport flushed

    loop poll - 198.812µs

    loop time - Instant { tv_sec: 5983, tv_nsec: 209566175 }

    loop process, 40.203µs

    event Readable | Writable Token(4194305)

    loop process - 1 events, 0.000s

    received packet from 192.168.1.237:5353

    scheduling Read for: 1

    scheduling Read for: 1

    sending packet to 224.0.0.251:5353

    event Readable | Writable Token(4194305)

    loop process - 1 events, 0.000s

    scheduling Read for: 2

    loop poll - 9.944059ms

    loop time - Instant { tv_sec: 5983, tv_nsec: 219570696 }

    loop process, 44.148µs

    received packet from 192.168.1.182:5353

    received packet from 192.168.1.182:5353 with no query

    scheduling Read for: 1

    scheduling Read for: 1

    scheduling Read for: 2

    loop poll - 167.257µs

    loop time - Instant { tv_sec: 5983, tv_nsec: 219807786 }

    loop process, 40.777µs

    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

    frame decoded from buffer

    attempting to decode a frame

    scheduling Read for: 5

    flushing framed transport

    framed transport flushed

    loop poll - 13.378034ms

    loop time - Instant { tv_sec: 5983, tv_nsec: 233247819 }

    loop process, 46.814µs

    Polling message stream

    msgstream found Ok(NotReady)

    Loading with Spotify URI spotify:track:6qF9QltwbDeujrVrzpCoLj

    new AudioKeyManager

    loop poll - 12µs

    loop time - Instant { tv_sec: 5983, tv_nsec: 233424817 }

    loop process, 141.387µs

    Downloading file 18e55e1787e41646e9d2725de2f0c9648c046ee0

    requesting chunk 0

    new ChannelManager

    scheduling Read for: 5

    flushing framed transport

    writing; remaining=102

    framed transport flushed

    loop poll - 345.07µs

    loop time - Instant { tv_sec: 5983, tv_nsec: 233940218 }

    loop process, 47.036µs

    consuming notification queue

    loop poll - 105.147µs

    loop time - Instant { tv_sec: 5983, tv_nsec: 234118882 }

    loop process, 52.203µs

    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 - 24.65365ms

    loop time - Instant { tv_sec: 5983, tv_nsec: 258847753 }

    loop process, 44.685µs

    event Readable | Writable Token(20971525)

    loop process - 1 events, 0.000s

    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

    frame decoded from buffer

    attempting to decode a frame

    attempting to decode a frame

    frame decoded from buffer

    attempting to decode a frame

    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 - 13.338442ms

    loop time - Instant { tv_sec: 5983, tv_nsec: 272257268 }

    loop process, 47.703µs

    consuming notification queue

    event Readable | Writable Token(20971525)

    loop process - 1 events, 0.000s

    loop poll - 384.828µs

    loop time - Instant { tv_sec: 5983, tv_nsec: 272715392 }

    loop process, 45.499µs

    attempting to decode a frame

    scheduling Read for: 5

    flushing framed transport

    framed transport flushed

    loop poll - 115.499µs

    loop time - Instant { tv_sec: 5983, tv_nsec: 272900223 }

    loop process, 41.037µs

    event Readable | Writable Token(20971525)

    loop process - 1 events, 0.000s

    attempting to decode a frame

    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 - 5.391635ms

    loop time - Instant { tv_sec: 5983, tv_nsec: 278354765 }

    loop process, 41.777µs

    loop poll - 46.869µs

    loop time - Instant { tv_sec: 5983, tv_nsec: 278465763 }

    loop process, 42.815µs

    event Readable | Writable Token(20971525)

    loop process - 1 events, 0.000s

    attempting to decode a frame

    attempting to decode a frame

    event Readable | Writable Token(20971525)

    loop process - 1 events, 0.000s

    frame decoded from buffer

    attempting to decode a frame

    attempting to decode a frame

    scheduling Read for: 5

    flushing framed transport

    framed transport flushed

    loop poll - 12.544063ms

    loop time - Instant { tv_sec: 5983, tv_nsec: 291074196 }

    loop process, 49.166µs

    event Readable | Writable Token(20971525)

    loop process - 1 events, 0.000s

    loop poll - 322.348µs

    loop time - Instant { tv_sec: 5983, tv_nsec: 291470821 }

    loop process, 78.906µs

    attempting to decode a frame

    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

    attempting to decode a frame

    frame decoded from buffer

    attempting to decode a frame

    attempting to decode a frame

    frame decoded from buffer

    attempting to decode a frame

    event Readable | Writable Token(20971525)

    loop process - 1 events, 0.000s

    attempting to decode a frame

    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 - 1.434075ms

    loop time - Instant { tv_sec: 5983, tv_nsec: 293007468 }

    event Readable | Writable Token(20971525)

    loop process - 1 events, 0.000s

    loop process, 318.922µs

    attempting to decode a frame

    attempting to decode a frame

    event Readable | Writable Token(20971525)

    loop process - 1 events, 0.000s

    frame decoded from buffer

    attempting to decode a frame

    attempting to decode a frame

    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 - 921.878µs

    loop time - Instant { tv_sec: 5983, tv_nsec: 294275989 }

    loop process, 43.758µs

    loop poll - 80.61µs

    loop time - Instant { tv_sec: 5983, tv_nsec: 294424172 }

    loop process, 43.222µs

    event Readable | Writable Token(20971525)

    loop process - 1 events, 0.000s

    attempting to decode a frame

    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 - 829.805µs

    loop time - Instant { tv_sec: 5983, tv_nsec: 295319124 }

    loop process, 41.61µs

    loop poll - 44.759µs

    loop time - Instant { tv_sec: 5983, tv_nsec: 295427863 }

    loop process, 42.129µs

    event Readable | Writable Token(20971525)

    loop process - 1 events, 0.000s

    attempting to decode a frame

    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 - 3.165756ms

    loop time - Instant { tv_sec: 5983, tv_nsec: 298657118 }

    loop process, 41.277µs

    loop poll - 46.221µs

    loop time - Instant { tv_sec: 5983, tv_nsec: 298766783 }

    loop process, 42.204µs

    event Readable | Writable Token(20971525)

    loop process - 1 events, 0.000s

    attempting to decode a frame

    attempting to decode a frame

    frame decoded from buffer

    attempting to decode a frame

    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 - 16.197906ms

    loop time - Instant { tv_sec: 5983, tv_nsec: 315028244 }

    loop process, 44.962µs

    event Readable | Writable Token(20971525)

    loop process - 1 events, 0.000s

    event Readable | Writable Token(20971525)

    loop process - 1 events, 0.000s

    attempting to decode a frame

    attempting to decode a frame

    frame decoded from buffer

    attempting to decode a frame

    attempting to decode a frame

    frame decoded from buffer

    attempting to decode a frame

    attempting to decode a frame

    frame decoded from buffer

    attempting to decode a frame

    attempting to decode a frame

    frame decoded from buffer

    attempting to decode a frame

    event Readable | Writable Token(20971525)

    loop process - 1 events, 0.000s

    event Readable | Writable Token(20971525)

    loop process - 1 events, 0.000s

    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

    event Readable | Writable Token(20971525)

    loop process - 1 events, 0.000s

    attempting to decode a frame

    attempting to decode a frame

    frame decoded from buffer

    attempting to decode a frame

    attempting to decode a frame

    frame decoded from buffer

    attempting to decode a frame

    attempting to decode a frame

    frame decoded from buffer

    attempting to decode a frame

    attempting to decode a frame

    frame decoded from buffer

    event Readable | Writable Token(20971525)

    loop process - 1 events, 0.000s

    attempting to decode a frame

    attempting to decode a frame

    frame decoded from buffer

    attempting to decode a frame

    attempting to decode a frame

    frame decoded from buffer

    attempting to decode a frame

    attempting to decode a frame

    frame decoded from buffer

    attempting to decode a frame

    attempting to decode a frame

    frame decoded from buffer

    attempting to decode a frame

    attempting to decode a frame

    frame decoded from buffer

    attempting to decode a frame

    attempting to decode a frame

    frame decoded from buffer

    attempting to decode a frame

    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 - 5.874888ms

    loop time - Instant { tv_sec: 5983, tv_nsec: 321299090 }

    loop process, 48.573µs

    loop poll - 537.234µs

    loop time - Instant { tv_sec: 5983, tv_nsec: 321912767 }

    loop process, 44.129µs

    event Readable | Writable Token(20971525)

    loop process - 1 events, 0.000s

    attempting to decode a frame

    attempting to decode a frame

    frame decoded from buffer

    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 - 15.654931ms

    loop time - Instant { tv_sec: 5983, tv_nsec: 337634031 }

    loop process, 39.814µs

    chunk 0 / 26 complete

    requesting chunk 1

    loop poll - 146.72µs

    loop time - Instant { tv_sec: 5983, tv_nsec: 337842824 }

    loop process, 39.426µs

    scheduling Read for: 5

    Normalisation Data: NormalisationData { track_gain_db: -6.9300003, track_peak: 0.9973827, album_gain_db: -10.010002, album_peak: 1.0153364 }

    Applied normalisation factor: 0.45029798

    flushing framed transport

    writing; remaining=53

    Caught panic with message: attempted to zero-initialize type librespot_tremor::tremor_sys::ov_callbacks, which is invalid

    framed transport flushed

    loop poll - 289.238µs

    loop time - Instant { tv_sec: 5983, tv_nsec: 338198487 }

    loop process, 50.258µs

    loop poll - 16.778µs

    loop time - Instant { tv_sec: 5983, tv_nsec: 338295245 }

    loop process, 49.036µs

    drop Player[0]

    loop poll - 474.254µs

    loop time - Instant { tv_sec: 5983, tv_nsec: 338848775 }

    loop process, 44.647µs

    Polling message stream

    msgstream found Ok(NotReady)

    loop poll - 14.74µs

    loop time - Instant { tv_sec: 5983, tv_nsec: 339007976 }

    loop process, 38.537µs

    event Readable | Writable Token(20971525)

    loop process - 1 events, 0.000s

    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

    event Readable | Writable Token(20971525)

    loop process - 1 events, 0.000s

    event Readable | Writable Token(20971525)

    loop process - 1 events, 0.000s

    event Readable | Writable Token(20971525)

    loop process - 1 events, 0.000s

    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

    attempting to decode a frame

    frame decoded from buffer

    attempting to decode a frame

    attempting to decode a frame

    event Readable | Writable Token(20971525)

    loop process - 1 events, 0.000s

    event Readable | Writable Token(20971525)

    loop process - 1 events, 0.000s

    frame decoded from buffer

    attempting to decode a frame

    attempting to decode a frame

    frame decoded from buffer

    attempting to decode a frame

    attempting to decode a frame

    frame decoded from buffer

    attempting to decode a frame

    attempting to decode a frame

    frame decoded from buffer

    attempting to decode a frame

    attempting to decode a frame

    frame decoded from buffer

    attempting to decode a frame

    attempting to decode a frame

    frame decoded from buffer

    attempting to decode a frame

    attempting to decode a frame

    frame decoded from buffer

    attempting to decode a frame

    attempting to decode a frame

    frame decoded from buffer

    attempting to decode a frame

    attempting to decode a frame

    frame decoded from buffer

    attempting to decode a frame

    attempting to decode a frame

    frame decoded from buffer

    attempting to decode a frame

    attempting to decode a frame

    frame decoded from buffer

    attempting to decode a frame

    attempting to decode a frame

    frame decoded from buffer

    attempting to decode a frame

    attempting to decode a frame

    frame decoded from buffer

    attempting to decode a frame

    attempting to decode a frame

    frame decoded from buffer

    attempting to decode a frame

    attempting to decode a frame

    frame decoded from buffer

    attempting to decode a frame

    attempting to decode a frame

    frame decoded from buffer

    attempting to decode a frame

    attempting to decode a frame

    frame decoded from buffer

    attempting to decode a frame

    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 - 33.415502ms

    loop time - Instant { tv_sec: 5983, tv_nsec: 372480922 }

    loop process, 41.962µs

    event Readable | Writable Token(20971525)

    loop process - 1 events, 0.000s

    attempting to decode a frame

    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

    attempting to decode a frame

    frame decoded from buffer

    event Readable | Writable Token(20971525)

    loop process - 1 events, 0.000s

    event Readable | Writable Token(20971525)

    loop process - 1 events, 0.000s

    attempting to decode a frame

    attempting to decode a frame

    frame decoded from buffer

    attempting to decode a frame

    attempting to decode a frame

    frame decoded from buffer

    attempting to decode a frame

    attempting to decode a frame

    frame decoded from buffer

    attempting to decode a frame

    attempting to decode a frame

    frame decoded from buffer

    attempting to decode a frame

    attempting to decode a frame

    frame decoded from buffer

    attempting to decode a frame

    attempting to decode a frame

    frame decoded from buffer

    attempting to decode a frame

    attempting to decode a frame

    frame decoded from buffer

    attempting to decode a frame

    attempting to decode a frame

    frame decoded from buffer

    attempting to decode a frame

    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 - 18.377471ms

    loop time - Instant { tv_sec: 5983, tv_nsec: 390924947 }

    loop process, 41.703µs

    event Readable | Writable Token(20971525)

    loop process - 1 events, 0.000s

    attempting to decode a frame

    attempting to decode a frame

    frame decoded from buffer

    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 - 17.24143ms

    loop time - Instant { tv_sec: 5983, tv_nsec: 408231820 }

    loop process, 39.666µs

    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 - 57.642046ms

    loop time - Instant { tv_sec: 5983, tv_nsec: 465937365 }

    loop process, 46.647µs

    Polling message stream

    msgstream found Ok(NotReady)

    kMessageTypeNotify "Nokia 5.3" a0f1362bbbc96bff82ba9a7ebcfc56ffcacfdeda 1698226403 1605868510712

    loop poll - 12.5µs

    loop time - Instant { tv_sec: 5983, tv_nsec: 466218380 }

    loop process, 45.999µs

    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 - 1.208130976s

    loop time - Instant { tv_sec: 5984, tv_nsec: 674418207 }

    loop process, 41.963µs

    Polling message stream

    msgstream found Ok(NotReady)

    kMessageTypePlay "Nokia 5.3" a0f1362bbbc96bff82ba9a7ebcfc56ffcacfdeda 1698227616 1605868510712

    Caught panic with message: called Result::unwrap() on an Err value: "SendError(..)"

    drop Spirc[0]

    Shutting down player thread ...

    Player thread panicked!

    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

    dropping I/O source: 3

    dropping I/O source: 4

    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

    drop Dispatch

    deregistering handle with poller

    dropping I/O source: 5

    Compilation flags

    • [x] dbus_mpris
    • [x] dbus_keyring
    • [ ] alsa_backend
    • [ ] portaudio_backend
    • [x] pulseaudio_backend
    • [ ] rodio_backend

    Note that this occurs regardless of features enabled; the working version originally only had alsa_backend enabled, and this no longer works.

    Versions (please complete the following information):

    • OS: Raspian Buster (armhf) on Kernel 5.4.75-v7l+
    • Spotifyd: v0.2.24, both crates.io release and 39106ed8ed270247b1203cc2eed5b05121c90cf7
    • cargo: cargo 1.48.0 (65cbdd2dc 2020-10-14)
    bug blocked by: librespot reproducibility: easy 
    opened by ChildOfDreams 48
  • Spotifyd login problem

    Spotifyd login problem

    Sorry I normally fill out a bug report properly but it's late at night for me and I'm really tired plus I don't think this problem warrants a report. If it's not easily fixable the I'll document every detail.

    spotifyd 0.2.24 from community repo in Arch spotify-tui from AUR

    I've tried to get spotifyd to actually output information using the --verbose flag but that does nothing for me (literally outputs nothing at all).

    Now I'm not 100% sure this is the issue but I believe that the config file isn't using the username and password I've given it. I've tried wrapping the UN and PS in quotations and also tried substituting my UN for my email.

    I feel like whatever syntax it's looking for, I'm probably not using it. Please clear up this in the readme or at least the config file.

    Do you use the email for the UN field or the UN on the profile, do you need to wrap the UN and PS in quotations?

    Anyways back to my problem. I don't believe spotifyd is running properly because spotify-tui doesn't show my device in the list of devices even though I specifically set it in the spotifyd config.

    bug wontfix 
    opened by TechieAndroid 45
  • Spotifyd crashes without specifying a volume_controller

    Spotifyd crashes without specifying a volume_controller

    After building on macos 10.4.6. with portaudio as backend, launching spotifyd results next panic:

    thread 'main' panicked at 'called `Option::unwrap()` on a `None` value', src/libcore/option.rs:347:21
    

    Running with RUST_BACKTRACE=1 shows next stack backtrace:

       0: std::panicking::default_hook::{{closure}}
       1: std::panicking::default_hook
       2: std::panicking::rust_panic_with_hook
       3: std::panicking::continue_panic_fmt
       4: rust_begin_unwind
       5: core::panicking::panic_fmt
       6: core::panicking::panic
       7: spotifyd::config::get_internal_config
       8: spotifyd::main
       9: std::rt::lang_start::{{closure}}
      10: std::panicking::try::do_call
      11: __rust_maybe_catch_panic
      12: std::rt::lang_start_internal
      13: main
    

    I was able to build working version from source on August and after that I've only changed my rust installation from Homebrew version to rustup (guess that's not the problem here?). Any suggestions?

    bug reproducibility: easy 
    opened by otahontas 28
  • [ERROR] Caught panic with message: Authentication failed with reason: BadCredentials

    [ERROR] Caught panic with message: Authentication failed with reason: BadCredentials

    Spotifyd worked for 3 days well until one day (2018.04.01) it stopped with error "BadCredentials".

    Credentials were not changed neither in spotifyd or spotify.com.

    I don't know how to look up the version, but my source was Arch linux aur spotifyd-git 0.1.1.2.g7451cd6-1

    log:

    00:05:54 [TRACE] mio::poll: [<unknown>:785] registering with poller
    00:05:54 [TRACE] tokio_threadpool: [/home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-threadpool-0.1.0/src/lib.rs:523] build; num-workers=8
    00:05:54 [DEBUG] tokio_reactor::background: starting background reactor
    00:05:54 [INFO] Using software volume controller.
    00:05:54 [DEBUG] librespot_connect::discovery: Zeroconf server listening on 0.0.0.0:0
    00:05:54 [TRACE] mio::poll: [<unknown>:785] registering with poller
    00:05:54 [TRACE] mio::poll: [<unknown>:785] registering with poller
    00:05:54 [TRACE] mio::poll: [<unknown>:785] registering with poller
    00:05:54 [TRACE] tokio_reactor: [<unknown>:330] event Writable Token(2)
    00:05:54 [TRACE] tokio_reactor: [<unknown>:330] event Writable Token(3)
    00:05:54 [DEBUG] tokio_reactor: loop process - 2 events, 0.000s
    00:05:54 [DEBUG] tokio_core::reactor: added a timeout: 0
    00:05:54 [TRACE] mio::poll: [<unknown>:785] registering with poller
    00:05:54 [TRACE] tokio_reactor: [<unknown>:330] event Writable Token(4)
    00:05:54 [DEBUG] tokio_reactor: loop process - 1 events, 0.000s
    00:05:54 [TRACE] hyper::client::pool: [<unknown>:178] park; waiting for idle connection: "http://apresolve.spotify.com"
    00:05:54 [TRACE] hyper::client::connect: [<unknown>:118] Http::connect("http://apresolve.spotify.com/")
    00:05:54 [DEBUG] hyper::client::dns: resolving host="apresolve.spotify.com", port=80
    00:05:54 [DEBUG] tokio_core::reactor: consuming notification queue
    00:05:54 [TRACE] mdns::fsm: [/home/user/.cargo/git/checkouts/rust-mdns-881ed19b93df0e9d/733b2b6/src/fsm.rs:275] sending packet to V4(224.0.0.251:5353)
    00:05:54 [TRACE] tokio_reactor: [<unknown>:330] event Readable | Writable Token(2)
    00:05:54 [DEBUG] tokio_reactor: loop process - 1 events, 0.000s
    00:05:54 [TRACE] mdns::fsm: [/home/user/.cargo/git/checkouts/rust-mdns-881ed19b93df0e9d/733b2b6/src/fsm.rs:275] sending packet to V6([ff02::fb]:5353)
    00:05:54 [TRACE] tokio_reactor: [<unknown>:330] event Readable | Writable Token(2)
    00:05:54 [TRACE] tokio_reactor: [<unknown>:330] event Readable | Writable Token(3)
    00:05:54 [DEBUG] tokio_reactor: loop process - 2 events, 0.000s
    00:05:54 [DEBUG] tokio_core::reactor: updating a timeout: 0
    00:05:54 [DEBUG] tokio_core::reactor: loop poll - Duration { secs: 0, nanos: 298198 }
    00:05:54 [DEBUG] tokio_core::reactor: loop time - Instant { tv_sec: 274, tv_nsec: 633948051 }
    00:05:54 [DEBUG] tokio_core::reactor: loop process, Duration { secs: 0, nanos: 7023 }
    00:05:54 [TRACE] mdns::fsm: [/home/user/.cargo/git/checkouts/rust-mdns-881ed19b93df0e9d/733b2b6/src/fsm.rs:76] received packet from V4(192.168.1.100:5353)
    00:05:54 [TRACE] mdns::fsm: [/home/user/.cargo/git/checkouts/rust-mdns-881ed19b93df0e9d/733b2b6/src/fsm.rs:87] received packet from V4(192.168.1.100:5353) with no query
    00:05:54 [TRACE] mdns::fsm: [/home/user/.cargo/git/checkouts/rust-mdns-881ed19b93df0e9d/733b2b6/src/fsm.rs:76] received packet from V6([fe80::59cc:f6e9:af23:975e]:5353)
    00:05:54 [TRACE] mdns::fsm: [/home/user/.cargo/git/checkouts/rust-mdns-881ed19b93df0e9d/733b2b6/src/fsm.rs:87] received packet from V6([fe80::59cc:f6e9:af23:975e]:5353) with no query
    00:05:54 [DEBUG] tokio_core::reactor: loop poll - Duration { secs: 0, nanos: 29906 }
    00:05:54 [DEBUG] tokio_core::reactor: loop time - Instant { tv_sec: 274, tv_nsec: 633988276 }
    00:05:54 [DEBUG] tokio_core::reactor: loop process, Duration { secs: 0, nanos: 5821 }
    00:05:54 [DEBUG] tokio_core::reactor: loop poll - Duration { secs: 0, nanos: 340 }
    00:05:54 [DEBUG] tokio_core::reactor: loop time - Instant { tv_sec: 274, tv_nsec: 633997373 }
    00:05:54 [DEBUG] tokio_core::reactor: loop process, Duration { secs: 0, nanos: 15680 }
    00:05:54 [TRACE] tokio_reactor: [<unknown>:330] event Writable Token(3)
    00:05:54 [DEBUG] tokio_reactor: loop process - 1 events, 0.000s
    00:05:54 [DEBUG] tokio_core::reactor: loop poll - Duration { secs: 0, nanos: 87637707 }
    00:05:54 [DEBUG] tokio_core::reactor: loop time - Instant { tv_sec: 274, tv_nsec: 721655288 }
    00:05:54 [DEBUG] tokio_core::reactor: loop process, Duration { secs: 0, nanos: 42811 }
    00:05:54 [DEBUG] hyper::client::connect: connecting to 104.199.64.136:80
    00:05:54 [TRACE] mio::poll: [<unknown>:785] registering with poller
    00:05:54 [TRACE] tokio_reactor: [<unknown>:330] event Writable Token(5)
    00:05:54 [DEBUG] tokio_reactor: loop process - 1 events, 0.000s
    00:05:54 [DEBUG] tokio_core::reactor: loop poll - Duration { secs: 0, nanos: 40125343 }
    00:05:54 [DEBUG] tokio_core::reactor: loop time - Instant { tv_sec: 274, tv_nsec: 761954086 }
    00:05:54 [DEBUG] tokio_core::reactor: loop process, Duration { secs: 0, nanos: 13345 }
    00:05:54 [TRACE] hyper::proto::h1::dispatch: [<unknown>:274] Dispatcher::poll
    00:05:54 [TRACE] hyper::proto::h1::conn: [<unknown>:284] read_keep_alive; is_mid_message=false
    00:05:54 [TRACE] hyper::proto: [<unknown>:122] should_keep_alive(version=Http11, header=None) = true
    00:05:54 [TRACE] hyper::proto::h1::role: [<unknown>:327] ClientTransaction::encode has_body=false, method=None
    00:05:54 [TRACE] hyper::proto::h1::io: [<unknown>:542] reclaiming write buf Vec
    00:05:54 [DEBUG] hyper::proto::h1::io: flushed 47 bytes
    00:05:54 [TRACE] hyper::proto::h1::conn: [<unknown>:580] flushed State { reading: Init, writing: KeepAlive, keep_alive: Busy, error: None, read_task: None }
    00:05:54 [DEBUG] tokio_core::reactor: loop poll - Duration { secs: 0, nanos: 73367 }
    00:05:54 [DEBUG] tokio_core::reactor: loop time - Instant { tv_sec: 274, tv_nsec: 762090221 }
    00:05:54 [DEBUG] tokio_core::reactor: loop process, Duration { secs: 0, nanos: 7153 }
    00:05:55 [TRACE] tokio_reactor: [<unknown>:330] event Readable | Writable Token(5)
    00:05:55 [DEBUG] tokio_reactor: loop process - 1 events, 0.000s
    00:05:55 [TRACE] hyper::proto::h1::dispatch: [<unknown>:274] Dispatcher::poll
    00:05:55 [TRACE] hyper::proto::h1::conn: [<unknown>:172] Conn::read_head
    00:05:55 [DEBUG] hyper::proto::h1::io: read 686 bytes
    00:05:55 [TRACE] hyper::proto::h1::role: [<unknown>:231] Response.parse([Header; 100], [u8; 686])
    00:05:55 [TRACE] hyper::proto::h1::role: [<unknown>:236] Response.parse Complete(268)
    00:05:55 [TRACE] hyper::header: [<unknown>:355] maybe_literal not found, copying "Keep-Alive"
    00:05:55 [TRACE] hyper::header: [<unknown>:355] maybe_literal not found, copying "Vary"
    00:05:55 [DEBUG] hyper::proto::h1::io: parsed 9 headers (268 bytes)
    00:05:55 [DEBUG] hyper::proto::h1::conn: incoming body is content-length (418 bytes)
    00:05:55 [TRACE] hyper::proto: [<unknown>:133] expecting_continue(version=Http11, header=None) = false
    00:05:55 [TRACE] hyper::proto: [<unknown>:122] should_keep_alive(version=Http11, header=Some(Connection([KeepAlive]))) = true
    00:05:55 [TRACE] hyper::proto::h1::conn: [<unknown>:246] Conn::read_body
    00:05:55 [TRACE] hyper::proto::h1::decode: [<unknown>:88] decode; state=Length(418)
    00:05:55 [TRACE] hyper::proto::h1::conn: [<unknown>:580] flushed State { reading: Body(Length(0)), writing: KeepAlive, keep_alive: Busy, error: None, read_task: None }
    00:05:55 [DEBUG] tokio_core::reactor: loop poll - Duration { secs: 0, nanos: 41689020 }
    00:05:55 [DEBUG] tokio_core::reactor: loop time - Instant { tv_sec: 274, tv_nsec: 803790242 }
    00:05:55 [DEBUG] tokio_core::reactor: loop process, Duration { secs: 0, nanos: 7605 }
    00:05:55 [TRACE] hyper::proto::h1::dispatch: [<unknown>:274] Dispatcher::poll
    00:05:55 [TRACE] hyper::proto::h1::conn: [<unknown>:246] Conn::read_body
    00:05:55 [TRACE] hyper::proto::h1::decode: [<unknown>:88] decode; state=Length(0)
    00:05:55 [DEBUG] hyper::proto::h1::conn: incoming body completed
    00:05:55 [TRACE] hyper::client::pool: [<unknown>:332] pool dropped, dropping pooled ("http://apresolve.spotify.com")
    00:05:55 [TRACE] hyper::proto::h1::conn: [<unknown>:829] State::close()
    00:05:55 [TRACE] hyper::proto::h1::conn: [<unknown>:426] maybe_notify; no task to notify
    00:05:55 [TRACE] hyper::proto::h1::conn: [<unknown>:284] read_keep_alive; is_mid_message=true
    00:05:55 [TRACE] hyper::proto::h1::conn: [<unknown>:311] parking current task
    00:05:55 [TRACE] hyper::proto::h1::conn: [<unknown>:423] maybe_notify; notifying task
    00:05:55 [TRACE] hyper::proto::h1::conn: [<unknown>:580] flushed State { reading: Closed, writing: Closed, keep_alive: Disabled, error: None, read_task: Some(Task) }
    00:05:55 [TRACE] hyper::proto::h1::conn: [<unknown>:588] shut down IO
    00:05:55 [TRACE] hyper::proto::h1::dispatch: [<unknown>:74] Dispatch::poll done
    00:05:55 [TRACE] mio::poll: [<unknown>:905] deregistering handle with poller
    00:05:55 [DEBUG] tokio_reactor: dropping I/O source: 4
    00:05:55 [DEBUG] tokio_core::reactor: loop poll - Duration { secs: 0, nanos: 99727 }
    00:05:55 [DEBUG] tokio_core::reactor: loop time - Instant { tv_sec: 274, tv_nsec: 803922570 }
    00:05:55 [DEBUG] tokio_core::reactor: loop process, Duration { secs: 0, nanos: 7494 }
    00:05:55 [INFO] Connecting to AP "gew1-accesspoint-b-ksm3.ap.spotify.com:4070"
    00:05:55 [TRACE] mio::poll: [<unknown>:785] registering with poller
    00:05:55 [DEBUG] tokio_core::reactor: loop poll - Duration { secs: 0, nanos: 1442 }
    00:05:55 [DEBUG] tokio_core::reactor: loop time - Instant { tv_sec: 274, tv_nsec: 856588695 }
    00:05:55 [DEBUG] tokio_core::reactor: loop process, Duration { secs: 0, nanos: 10310 }
    00:05:55 [DEBUG] tokio_core::reactor: loop poll - Duration { secs: 0, nanos: 451 }
    00:05:55 [DEBUG] tokio_core::reactor: loop time - Instant { tv_sec: 274, tv_nsec: 856603463 }
    00:05:55 [DEBUG] tokio_core::reactor: loop process, Duration { secs: 0, nanos: 6833 }
    00:05:55 [TRACE] tokio_reactor: [<unknown>:330] event Writable Token(5)
    00:05:55 [DEBUG] tokio_reactor: loop process - 1 events, 0.000s
    00:05:55 [DEBUG] tokio_core::reactor: loop poll - Duration { secs: 0, nanos: 40060141 }
    00:05:55 [DEBUG] tokio_core::reactor: loop time - Instant { tv_sec: 274, tv_nsec: 896673953 }
    00:05:55 [DEBUG] tokio_core::reactor: loop process, Duration { secs: 0, nanos: 11552 }
    00:05:55 [TRACE] tokio_reactor: [<unknown>:330] event Readable | Writable Token(5)
    00:05:55 [DEBUG] tokio_reactor: loop process - 1 events, 0.000s
    00:05:55 [DEBUG] tokio_core::reactor: loop poll - Duration { secs: 0, nanos: 38608403 }
    00:05:55 [DEBUG] tokio_core::reactor: loop time - Instant { tv_sec: 274, tv_nsec: 941009139 }
    00:05:55 [DEBUG] tokio_core::reactor: loop process, Duration { secs: 0, nanos: 12343 }
    00:05:55 [TRACE] tokio_io::framed_write: [<unknown>:182] flushing framed transport
    00:05:55 [TRACE] tokio_io::framed_write: [<unknown>:185] writing; remaining=128
    00:05:55 [TRACE] tokio_io::framed_write: [<unknown>:202] framed transport flushed
    00:05:56 [TRACE] tokio_reactor: [<unknown>:330] event Readable | Writable Token(5)
    00:05:56 [DEBUG] tokio_reactor: loop process - 1 events, 0.000s
    00:05:56 [DEBUG] tokio_core::reactor: loop poll - Duration { secs: 0, nanos: 969123604 }
    00:05:56 [DEBUG] tokio_core::reactor: loop time - Instant { tv_sec: 275, tv_nsec: 915854447 }
    00:05:56 [DEBUG] tokio_core::reactor: loop process, Duration { secs: 0, nanos: 23234 }
    00:05:56 [TRACE] tokio_io::framed_read: [<unknown>:189] attempting to decode a frame
    00:05:56 [TRACE] tokio_io::framed_read: [<unknown>:192] frame decoded from buffer
    00:05:56 [TRACE] mio::poll: [<unknown>:905] deregistering handle with poller
    00:05:56 [DEBUG] tokio_reactor: dropping I/O source: 4
    00:05:56 [TRACE] tokio_reactor: [<unknown>:330] event Readable Token(0)
    00:05:56 [DEBUG] tokio_reactor: loop process - 1 events, 0.000s
    00:05:56 [DEBUG] tokio_reactor::background: shutting background reactor down NOW
    00:05:56 [DEBUG] tokio_reactor::background: background reactor has shutdown
    00:05:56 [TRACE] tokio_threadpool: [/home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-threadpool-0.1.0/src/lib.rs:871] shutdown; state=State { lifecycle: 0, num_futures: 0 }
    00:05:56 [TRACE] tokio_threadpool: [/home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-threadpool-0.1.0/src/lib.rs:917]   -> transitioned to shutdown
    00:05:56 [TRACE] tokio_threadpool: [/home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-threadpool-0.1.0/src/lib.rs:929]   -> shutting down workers
    00:05:56 [TRACE] tokio_threadpool: [/home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-threadpool-0.1.0/src/lib.rs:933]   -> shutdown worker; idx=7; state=WorkerState { lifecycle: "WORKER_SHUTDOWN", is_pushed: true }
    00:05:56 [TRACE] tokio_threadpool: [/home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-threadpool-0.1.0/src/lib.rs:948] signal_stop -- WORKER_SHUTDOWN; idx=7
    00:05:56 [TRACE] tokio_threadpool: [/home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-threadpool-0.1.0/src/lib.rs:983] worker_terminated; num_workers=7
    00:05:56 [TRACE] tokio_threadpool: [/home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-threadpool-0.1.0/src/lib.rs:933]   -> shutdown worker; idx=6; state=WorkerState { lifecycle: "WORKER_SHUTDOWN", is_pushed: true }
    00:05:56 [TRACE] tokio_threadpool: [/home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-threadpool-0.1.0/src/lib.rs:948] signal_stop -- WORKER_SHUTDOWN; idx=6
    00:05:56 [TRACE] tokio_threadpool: [/home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-threadpool-0.1.0/src/lib.rs:983] worker_terminated; num_workers=6
    00:05:56 [TRACE] tokio_threadpool: [/home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-threadpool-0.1.0/src/lib.rs:933]   -> shutdown worker; idx=5; state=WorkerState { lifecycle: "WORKER_SHUTDOWN", is_pushed: true }
    00:05:56 [TRACE] tokio_threadpool: [/home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-threadpool-0.1.0/src/lib.rs:948] signal_stop -- WORKER_SHUTDOWN; idx=5
    00:05:56 [TRACE] tokio_threadpool: [/home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-threadpool-0.1.0/src/lib.rs:983] worker_terminated; num_workers=5
    00:05:56 [TRACE] tokio_threadpool: [/home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-threadpool-0.1.0/src/lib.rs:933]   -> shutdown worker; idx=4; state=WorkerState { lifecycle: "WORKER_SHUTDOWN", is_pushed: true }
    00:05:56 [TRACE] tokio_threadpool: [/home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-threadpool-0.1.0/src/lib.rs:948] signal_stop -- WORKER_SHUTDOWN; idx=4
    00:05:56 [TRACE] tokio_threadpool: [/home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-threadpool-0.1.0/src/lib.rs:983] worker_terminated; num_workers=4
    00:05:56 [TRACE] tokio_threadpool: [/home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-threadpool-0.1.0/src/lib.rs:933]   -> shutdown worker; idx=3; state=WorkerState { lifecycle: "WORKER_SHUTDOWN", is_pushed: true }
    00:05:56 [TRACE] tokio_threadpool: [/home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-threadpool-0.1.0/src/lib.rs:948] signal_stop -- WORKER_SHUTDOWN; idx=3
    00:05:56 [TRACE] tokio_threadpool: [/home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-threadpool-0.1.0/src/lib.rs:983] worker_terminated; num_workers=3
    00:05:56 [TRACE] tokio_threadpool: [/home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-threadpool-0.1.0/src/lib.rs:933]   -> shutdown worker; idx=2; state=WorkerState { lifecycle: "WORKER_SHUTDOWN", is_pushed: true }
    00:05:56 [TRACE] tokio_threadpool: [/home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-threadpool-0.1.0/src/lib.rs:948] signal_stop -- WORKER_SHUTDOWN; idx=2
    00:05:56 [TRACE] tokio_threadpool: [/home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-threadpool-0.1.0/src/lib.rs:983] worker_terminated; num_workers=2
    00:05:56 [TRACE] tokio_threadpool: [/home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-threadpool-0.1.0/src/lib.rs:933]   -> shutdown worker; idx=1; state=WorkerState { lifecycle: "WORKER_SHUTDOWN", is_pushed: true }
    00:05:56 [TRACE] tokio_threadpool: [/home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-threadpool-0.1.0/src/lib.rs:948] signal_stop -- WORKER_SHUTDOWN; idx=1
    00:05:56 [TRACE] tokio_threadpool: [/home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-threadpool-0.1.0/src/lib.rs:983] worker_terminated; num_workers=1
    00:05:56 [TRACE] tokio_threadpool: [/home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-threadpool-0.1.0/src/lib.rs:933]   -> shutdown worker; idx=0; state=WorkerState { lifecycle: "WORKER_SHUTDOWN", is_pushed: true }
    00:05:56 [TRACE] tokio_threadpool: [/home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-threadpool-0.1.0/src/lib.rs:948] signal_stop -- WORKER_SHUTDOWN; idx=0
    00:05:56 [TRACE] tokio_threadpool: [/home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-threadpool-0.1.0/src/lib.rs:983] worker_terminated; num_workers=0
    00:05:56 [TRACE] tokio_threadpool: [/home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-threadpool-0.1.0/src/lib.rs:986] notifying shutdown task
    00:05:56 [TRACE] tokio_threadpool: [/home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/tokio-threadpool-0.1.0/src/lib.rs:851] Shutdown::poll
    00:05:56 [DEBUG] tokio_core::reactor::timeout_token: cancel timeout 0
    
    bug wontfix 
    opened by Deluxo 28
  • called `Result::unwrap()` on an `Err` value: WireError(InvalidEnumValue(14))

    called `Result::unwrap()` on an `Err` value: WireError(InvalidEnumValue(14))

    hello

    Spotifyd started crashing. I updated to the latest git commit 2c13ff926931ff9d341b3918d2c244cf4fbf65d5 but it still crashes immediately. I have spotify playing on my tablet when I start Spotifyd. I also have a message on the ap on my tablet saying that my credit card has expired and that I need to update my payment options ASAP.

    May 17 22:28:55 kooka Spotifyd[24049]: event Readable | Writable Token(20971525)
    May 17 22:28:55 kooka Spotifyd[24049]: loop process - 1 events, 0.000s
    May 17 22:28:55 kooka Spotifyd[24049]: new Session[0]
    May 17 22:28:55 kooka Spotifyd[24049]: new Spirc[0]
    May 17 22:28:55 kooka Spotifyd[24049]: new MercuryManager
    May 17 22:28:55 kooka Spotifyd[24049]: new Player[0]
    May 17 22:28:55 kooka Spotifyd[24049]: input volume:65535 to mixer: 65535
    May 17 22:28:55 kooka Spotifyd[24049]: Using alsa sink
    May 17 22:28:55 kooka Spotifyd[24049]: attempting to decode a frame
    May 17 22:28:55 kooka Spotifyd[24049]: frame decoded from buffer
    May 17 22:28:55 kooka Spotifyd[24049]: Session[0] strong=3 weak=2
    May 17 22:28:55 kooka Spotifyd[24049]: attempting to decode a frame
    May 17 22:28:55 kooka Spotifyd[24049]: frame decoded from buffer
    May 17 22:28:55 kooka Spotifyd[24049]: attempting to decode a frame
    May 17 22:28:55 kooka Spotifyd[24049]: frame decoded from buffer
    May 17 22:28:55 kooka Spotifyd[24049]: attempting to decode a frame
    May 17 22:28:55 kooka Spotifyd[24049]: frame decoded from buffer
    May 17 22:28:55 kooka Spotifyd[24049]: Country: "FR"
    May 17 22:28:55 kooka Spotifyd[24049]: attempting to decode a frame
    May 17 22:28:55 kooka Spotifyd[24049]: attempting to decode a frame
    May 17 22:28:55 kooka Spotifyd[24049]: frame decoded from buffer
    May 17 22:28:55 kooka Spotifyd[24049]: attempting to decode a frame
    May 17 22:28:55 kooka Spotifyd[24049]: frame decoded from buffer
    May 17 22:28:55 kooka Spotifyd[24049]: attempting to decode a frame
    May 17 22:28:55 kooka Spotifyd[24049]: flushing framed transport
    May 17 22:28:55 kooka Spotifyd[24049]: writing; remaining=368
    May 17 22:28:55 kooka Spotifyd[24049]: framed transport flushed
    May 17 22:28:55 kooka Spotifyd[24049]: loop poll - Duration { secs: 0, nanos: 198506 }
    May 17 22:28:55 kooka Spotifyd[24049]: loop time - Instant { tv_sec: 255865, tv_nsec: 655725030 }
    May 17 22:28:55 kooka Spotifyd[24049]: loop process, Duration { secs: 0, nanos: 10240 }
    May 17 22:28:55 kooka Spotifyd[24049]: event Readable | Writable Token(20971525)
    May 17 22:28:55 kooka Spotifyd[24049]: loop process - 1 events, 0.000s
    May 17 22:28:55 kooka Spotifyd[24049]: attempting to decode a frame
    May 17 22:28:55 kooka Spotifyd[24049]: frame decoded from buffer
    May 17 22:28:55 kooka Spotifyd[24049]: attempting to decode a frame
    May 17 22:28:55 kooka Spotifyd[24049]: flushing framed transport
    May 17 22:28:55 kooka Spotifyd[24049]: framed transport flushed
    May 17 22:28:55 kooka Spotifyd[24049]: loop poll - Duration { secs: 0, nanos: 5885066 }
    May 17 22:28:55 kooka Spotifyd[24049]: loop time - Instant { tv_sec: 255865, tv_nsec: 661625876 }
    May 17 22:28:55 kooka Spotifyd[24049]: loop process, Duration { secs: 0, nanos: 10093 }
    May 17 22:28:55 kooka Spotifyd[24049]: event Readable | Writable Token(20971525)
    May 17 22:28:55 kooka Spotifyd[24049]: loop process - 1 events, 0.000s
    May 17 22:28:55 kooka Spotifyd[24049]: attempting to decode a frame
    May 17 22:28:55 kooka Spotifyd[24049]: frame decoded from buffer
    May 17 22:28:55 kooka Spotifyd[24049]: attempting to decode a frame
    May 17 22:28:55 kooka Spotifyd[24049]: frame decoded from buffer
    May 17 22:28:55 kooka Spotifyd[24049]: attempting to decode a frame
    May 17 22:28:55 kooka Spotifyd[24049]: frame decoded from buffer
    May 17 22:28:55 kooka Spotifyd[24049]: attempting to decode a frame
    May 17 22:28:55 kooka Spotifyd[24049]: attempting to decode a frame
    May 17 22:28:55 kooka Spotifyd[24049]: flushing framed transport
    May 17 22:28:55 kooka Spotifyd[24049]: event Writable Token(20971525)
    May 17 22:28:55 kooka Spotifyd[24049]: framed transport flushed
    May 17 22:28:55 kooka Spotifyd[24049]: loop process - 1 events, 0.000s
    May 17 22:28:55 kooka Spotifyd[24049]: loop poll - Duration { secs: 0, nanos: 33968326 }
    May 17 22:28:55 kooka Spotifyd[24049]: loop time - Instant { tv_sec: 255865, tv_nsec: 695610976 }
    May 17 22:28:55 kooka Spotifyd[24049]: loop process, Duration { secs: 0, nanos: 11760 }
    May 17 22:28:55 kooka Spotifyd[24049]: subscribed uri=hm://remote/3/user/xxxx/ count=0
    May 17 22:28:55 kooka Spotifyd[24049]: loop poll - Duration { secs: 0, nanos: 2045 }
    May 17 22:28:55 kooka Spotifyd[24049]: loop time - Instant { tv_sec: 255865, tv_nsec: 695655399 }
    May 17 22:28:55 kooka Spotifyd[24049]: loop process, Duration { secs: 0, nanos: 8495 }
    May 17 22:28:55 kooka Spotifyd[24049]: event Readable | Writable Token(20971525)
    May 17 22:28:55 kooka Spotifyd[24049]: loop process - 1 events, 0.000s
    May 17 22:28:55 kooka Spotifyd[24049]: attempting to decode a frame
    May 17 22:28:55 kooka Spotifyd[24049]: frame decoded from buffer
    May 17 22:28:55 kooka Spotifyd[24049]: attempting to decode a frame
    May 17 22:28:55 kooka Spotifyd[24049]: flushing framed transport
    May 17 22:28:55 kooka Spotifyd[24049]: framed transport flushed
    May 17 22:28:55 kooka Spotifyd[24049]: loop poll - Duration { secs: 0, nanos: 5974544 }
    May 17 22:28:55 kooka Spotifyd[24049]: loop time - Instant { tv_sec: 255865, tv_nsec: 701642640 }
    May 17 22:28:55 kooka Spotifyd[24049]: loop process, Duration { secs: 0, nanos: 17056 }
    May 17 22:28:55 kooka Spotifyd[24049]: Caught panic with message: called `Result::unwrap()` on an `Err` value: WireError(InvalidEnumValue(14))
    May 17 22:28:55 kooka Spotifyd[24049]: drop Spirc[0]
    May 17 22:28:55 kooka Spotifyd[24049]: Shutting down player thread ...
    May 17 22:28:55 kooka Spotifyd[24049]: drop Player[0]
    May 17 22:28:55 kooka Spotifyd[24049]: drop Session[0]
    May 17 22:28:55 kooka Spotifyd[24049]: drop MercuryManager
    May 17 22:28:55 kooka Spotifyd[24049]: shutdown; state=State { lifecycle: 0, num_futures: 0 }
    May 17 22:28:55 kooka Spotifyd[24049]:   -> transitioned to shutdown
    May 17 22:28:55 kooka Spotifyd[24049]:   -> shutting down workers
    May 17 22:28:55 kooka Spotifyd[24049]:   -> shutdown worker; idx=7; state=WorkerState { lifecycle: "WORKER_SHUTDOWN", is_pushed: true }
    May 17 22:28:55 kooka Spotifyd[24049]: signal_stop -- WORKER_SHUTDOWN; idx=7
    May 17 22:28:55 kooka Spotifyd[24049]: worker_terminated; num_workers=7
    May 17 22:28:55 kooka Spotifyd[24049]:   -> shutdown worker; idx=6; state=WorkerState { lifecycle: "WORKER_SHUTDOWN", is_pushed: true }
    May 17 22:28:55 kooka systemd[1]: [email protected]: Main process exited, code=exited, status=101/n/a
    May 17 22:28:55 kooka Spotifyd[24049]: signal_stop -- WORKER_SHUTDOWN; idx=6
    May 17 22:28:55 kooka systemd[1]: [email protected]: Failed with result 'exit-code'.
    May 17 22:28:55 kooka Spotifyd[24049]: worker_terminated; num_workers=6
    May 17 22:28:55 kooka Spotifyd[24049]:   -> shutdown worker; idx=5; state=WorkerState { lifecycle: "WORKER_SHUTDOWN", is_pushed: true }
    May 17 22:28:55 kooka Spotifyd[24049]: signal_stop -- WORKER_SHUTDOWN; idx=5
    May 17 22:28:55 kooka Spotifyd[24049]: worker_terminated; num_workers=5
    May 17 22:28:55 kooka Spotifyd[24049]:   -> shutdown worker; idx=4; state=WorkerState { lifecycle: "WORKER_SHUTDOWN", is_pushed: true }
    May 17 22:28:55 kooka Spotifyd[24049]: signal_stop -- WORKER_SHUTDOWN; idx=4
    May 17 22:28:55 kooka Spotifyd[24049]: worker_terminated; num_workers=4
    May 17 22:28:55 kooka Spotifyd[24049]:   -> shutdown worker; idx=3; state=WorkerState { lifecycle: "WORKER_SHUTDOWN", is_pushed: true }
    May 17 22:28:55 kooka Spotifyd[24049]: signal_stop -- WORKER_SHUTDOWN; idx=3
    May 17 22:28:55 kooka Spotifyd[24049]: worker_terminated; num_workers=3
    May 17 22:28:55 kooka Spotifyd[24049]:   -> shutdown worker; idx=2; state=WorkerState { lifecycle: "WORKER_SHUTDOWN", is_pushed: true }
    May 17 22:28:55 kooka Spotifyd[24049]: signal_stop -- WORKER_SHUTDOWN; idx=2
    May 17 22:28:55 kooka Spotifyd[24049]: worker_terminated; num_workers=2
    May 17 22:28:55 kooka Spotifyd[24049]:   -> shutdown worker; idx=1; state=WorkerState { lifecycle: "WORKER_SHUTDOWN", is_pushed: true }
    May 17 22:28:55 kooka Spotifyd[24049]: signal_stop -- WORKER_SHUTDOWN; idx=1
    May 17 22:28:55 kooka Spotifyd[24049]: worker_terminated; num_workers=1
    May 17 22:28:55 kooka Spotifyd[24049]:   -> shutdown worker; idx=0; state=WorkerState { lifecycle: "WORKER_SHUTDOWN", is_pushed: true }
    May 17 22:28:55 kooka Spotifyd[24049]: signal_stop -- WORKER_SHUTDOWN; idx=0
    May 17 22:28:55 kooka Spotifyd[24049]: worker_terminated; num_workers=0
    May 17 22:28:55 kooka Spotifyd[24049]: notifying shutdown task
    May 17 22:28:55 kooka Spotifyd[24049]: Shutdown::poll
    May 17 22:28:55 kooka Spotifyd[24049]: event Readable Token(4194303)
    May 17 22:28:55 kooka Spotifyd[24049]: loop process - 1 events, 0.000s
    May 17 22:28:55 kooka Spotifyd[24049]: shutting background reactor down NOW
    May 17 22:28:55 kooka Spotifyd[24049]: background reactor has shutdown
    May 17 22:28:55 kooka Spotifyd[24049]: drop Dispatch
    
    opened by stuart12 27
  • Fetching metadata through mpris sometimes returns an empty array.

    Fetching metadata through mpris sometimes returns an empty array.


    EDIT: If you encounter rate limit errors, please use your own Spotify client ID by setting an environment variable named SPOTIFYD_CLIENT_ID. You can create a client ID here.

    ~ Sven (SirWindfield)


    Hi, first of all thanks for the great work.

    My status bar refreshes every 5 seconds and I'm showing the currently playing music on it. So that means in every 5 seconds I'm fetching metadata data from spotifyd with this command:

    dbus-send --print-reply --type=method_call
    --dest=org.mpris.MediaPlayer2.spotifyd
    /org/mpris/MediaPlayer2
    org.freedesktop.DBus.Properties.GetAll
    string:org.mpris.MediaPlayer2.Player

    But sometimes that returns either an empty array or partial data like just the title or just the artist. Example return value: . . dict entry( string "Metadata" variant array [ ] ) . .

    When I run spotifyd with --no-daemon option, it prints this for every failed fetching attempt:

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

    And seems like the number inside Some() decreases every second and when it is 0, I can fetch the data. As I'm guessing from its name it is some kind of a limitation. Why is this happening? Is this something that set intentionally? I don't get this kind of error with the official spotify client. If is there a way to set this limitation to 5 seconds so that it can sync to my bar, I would really appreciate it.

    I'm on kernel version 5.5.2 and using the lastest pre-compiled binary.

    bug advice 
    opened by TriaSirax 26
  • Spotifyd.service not launching

    Spotifyd.service not launching

    Hi,

    I´m having troubles to get the spotifyd.service to work, to be able to launch the application on boot.

    systemctl --user start spotifyd.service <- Nothing happens systemctl --user enable spotifyd.service <- same story

    spotifyd.service file copied as instructed here: .config/systemd/user$ ls default.target.wants spotifyd.service

    sudo nano spotifyd.service

    [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

    [Install] WantedBy=default.target

    I have MOST LIKELY done something wrong when i built it from source with this guide, i didn´t find a deb package :( https://github.com/Spotifyd/spotifyd/wiki/Installing-on-Ubuntu-%28from-source%29 I need to manually launch it from here ./spotifyd/target/release/spotifyd

    waiting for feedback 
    opened by Ru1ah 26
  • dbus mpris PlayPause command does not work

    dbus mpris PlayPause command does not work

    Description When trying to play-pause via dbus mpris, spotifyd resumes, but seems unavailable to pause.

    To Reproduce

    1. Compile with the features pulseaudio_backend,dbus_mpris
    2. Use dbus to send a mpris command (e.g. playerctl play-pause)
    3. Music starts, but does not stop.

    Expected behavior

    Should pause and resume.

    Logs First one, when using the PlayPause command

    Click to show logs
    <!-- PLEASE PASTE YOUR LOGS BELOW THIS LINE WHEN REPORTING BUGS. Make sure to run spotifyd using the `--verbose` flag -->
    handle_msgs: (MethodCall, Some("/org/mpris/MediaPlayer2"), Some("org.mpris.MediaPlayer2.Player"), Some("PlayPause"))
    loop poll - 3.209350078s
    loop time - Instant { tv_sec: 1665, tv_nsec: 985905862 }
    loop process, 7.944µs
    Polling message stream
    msgstream found Ok(Ready(Some((MethodCall, Some("/org/mpris/MediaPlayer2"), Some("org.mpris.MediaPlayer2.Player"), Some("PlayPause")))))
    Polling message stream
    msgstream found Ok(NotReady)
    D-Bus i/o poll ready: 47 is Ready(Readable)
    D-Bus i/o unix ready: 47 is Readable | Aio
    scheduling Read for: 4
    scheduling Read for: 5
    flushing framed transport
    writing; remaining=342
    framed transport flushed
    loop poll - 49.473µs
    loop time - Instant { tv_sec: 1665, tv_nsec: 986038801 }
    loop process, 4.428µ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 - 54.747185ms
    loop time - Instant { tv_sec: 1666, tv_nsec: 40800483 }
    loop process, 5.33µs
    Polling message stream
    msgstream found Ok(NotReady)
    loop poll - 1.252µs
    loop time - Instant { tv_sec: 1666, tv_nsec: 40822233 }
    loop process, 4.769µs
    <!-- They have to be betwenn the `/summary` and the `/details` HTML tags, and inside the backticks '`' -->  
    

    Second one, when using the Pause command

    Click to show logs
    <!-- PLEASE PASTE YOUR LOGS BELOW THIS LINE WHEN REPORTING BUGS. Make sure to run spotifyd using the `--verbose` flag -->
    handle_msgs: (MethodCall, Some("/org/mpris/MediaPlayer2"), Some("org.mpris.MediaPlayer2.Player"), Some("Pause"))
    loop poll - 11.221291429s
    loop time - Instant { tv_sec: 1786, tv_nsec: 380255459 }
    loop process, 4.609µs
    Polling message stream
    msgstream found Ok(Ready(Some((MethodCall, Some("/org/mpris/MediaPlayer2"), Some("org.mpris.MediaPlayer2.Player"), Some("Pause")))))
    Polling message stream
    msgstream found Ok(NotReady)
    Sending status to server: [kPlayStatusPause]
    D-Bus i/o poll ready: 47 is Ready(Readable)
    D-Bus i/o unix ready: 47 is Readable | Aio
    scheduling Read for: 4
    scheduling Read for: 5
    flushing framed transport
    writing; remaining=2114
    framed transport flushed
    loop poll - 55.935µs
    loop time - Instant { tv_sec: 1786, tv_nsec: 380387346 }
    loop process, 5.791µs
    Polling message stream
    msgstream found Ok(NotReady)
    command=Pause
    == Stopping sink ==
    loop poll - 5.149706ms
    loop time - Instant { tv_sec: 1786, tv_nsec: 385554375 }
    loop process, 9.938µs
    Polling message stream
    msgstream found Ok(NotReady)
    Sending status to server: [kPlayStatusPause]
    ==> kPlayStatusPause
    scheduling Read for: 5
    flushing framed transport
    writing; remaining=2114
    framed transport flushed
    loop poll - 48.411µs
    loop time - Instant { tv_sec: 1786, tv_nsec: 385672105 }
    loop process, 4.699µs
    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 - 46.990391ms
    loop time - Instant { tv_sec: 1786, tv_nsec: 432669760 }
    loop process, 7.935µs
    Polling message stream
    msgstream found Ok(NotReady)
    loop poll - 1.032µs
    loop time - Instant { tv_sec: 1786, tv_nsec: 432697492 }
    loop process, 4.548µs
    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 - 57.11597ms
    loop time - Instant { tv_sec: 1786, tv_nsec: 489819743 }
    loop process, 6.492µs
    Polling message stream
    msgstream found Ok(NotReady)
    loop poll - 902ns
    loop time - Instant { tv_sec: 1786, tv_nsec: 489841083 }
    loop process, 3.035µs
    <!-- They have to be betwenn the `/summary` and the `/details` HTML tags, and inside the backticks '`' -->  
    

    Compilation flags

    • [ ] dbus_keyring
    • [x] dbus_mpris
    • [x] alsa_backend
    • [ ] portaudio_backend
    • [x] pulseaudio_backend
    • [ ] rodio_backend

    Versions (please complete the following information):

    • OS: Arch Linux, kernel 5.10.12-arch1-1
    • Spotifyd: 001fcbdc0fe8ba607f10ca7fa119a85a68f6af45
    • cargo: 1.47.0
    bug wontfix 
    opened by Icelk 25
  • Spotifyd prints error, disconnects, but does not exit

    Spotifyd prints error, disconnects, but does not exit

    My spotifyd repeatedly prints an error message after a few minutes: "[ERROR] Os { code: 104, kind: ConnectionReset, message: "Connection reset by peer" }"

    After this message, either (a) spotifyd exists, or (b) playing stops, and the daemon becomes invisible to Spotify apps. Also, spotifyd cannot be killed with Ctrl+C any more. So it does not even react to signals any more. #127 could be related.

    Could it help to just handle this connection reset error more gracefully?

    wontfix blocked by: librespot pinned 
    opened by nalt 25
  • WIP: support PropertiesChanged event

    WIP: support PropertiesChanged event

    Here's maybe a way #457 could be done.

    The code is pretty ugly right now but maybe the devs can help improve it or base the real work on this.

    I think I shouldn't use continue since the commented code wouldn't run otherwise.

    Right now I only tested getting the metadata when I skip to the next track.

    And right now I'm more interested to know if it's the right way or not before trying to make it better.

    wontfix 
    opened by bbigras 23
  • Auto pause when ALSA device disappears?

    Auto pause when ALSA device disappears?

    Description Using spotifyd on RPi4 with ALSA as backend and USB DAC as output. No sound servers used. Everything works fine, except that when the USB DAC is switched off, spotifyd crashes, with logs like this:

    The application panicked (crashed).
    Message:  called `Result::unwrap()` on an `Err` value: Error("snd_pcm_recover", Sys(ENODEV))
    Location: /build/.cargo/registry/src/github.com-1ecc6299db9ec823/librespot-playback-0.2.0/src/audio_backend/alsa.rs:164
    
    Backtrace omitted.
    Run with RUST_BACKTRACE=1 environment variable to display it.
    Run with RUST_BACKTRACE=full to include source snippets.
    The application panicked (crashed).
    Message:  called `Option::unwrap()` on a `None` value
    Location: src/main_loop.rs:194
    
    Backtrace omitted.
    Run with RUST_BACKTRACE=1 environment variable to display it.
    Run with RUST_BACKTRACE=full to include source snippets.
    Player thread panicked!
    

    Is it possible to make a configuration such that when ALSA device disappears, spotifyd makes a pause instead of crash? E.g., this is the standard behaviour of the mpd player. As far as I can tell, both mpd and spotifyd use libasound, so probably it is possible to implement something like catching the event/exception from libasound when ALSA device disappears.

    NB: If ALSA device is switched off when spotifyd is paused, it does not crash, until I ask it to play.

    To Reproduce

    1. Start spotifyd with ALSA backend and a single ALSA device
    2. Start playing
    3. Switch off ALSA device
    4. spotifdy crashes

    Expected behavior Pause instead of crash

    Compilation flags Installed from Arch Linux community repo (Arch Linux ARM port)

    Versions (please complete the following information):

    • OS: Arch Linux ARM
    • Spotifyd: 0.3.4
    • cargo: have no idea (not a rustacean)
    bug 
    opened by Galicarnax 0
  • random <spotify:meta:page:21> parse URI crash

    random parse URI crash

    Description Spotifyd or Librespot crashes on a (presumably) unhandled or outdated spotify uri/api request <spotify:meta:page:21>, which causes spotifyd to crash

    To Reproduce

    1. play music
    2. it happens, completely randomly

    Expected behavior music keeps playing

    Logs

    Click to show logs
    Malformed or no gid, attempting to parse URI <spotify:meta:page:21>
    PANIC: Shutting down spotifyd. Error message: index out of bounds: the len is 20 but the index is 18446744073709551613
    drop Spirc[0]
    Shutting down player thread ...
    
    • [ ] dbus_mpris
    • [ ] dbus_keyring
    • [x] alsa_backend
    • [ ] portaudio_backend
    • [ ] pulseaudio_backend
    • [ ] rodio_backend

    Versions (please complete the following information):

    • OS: KISS Linux
    • Spotifyd: 0.3.3
    • cargo: cargo 1.65.0
    bug 
    opened by wael444 1
  • Device specification in spotifyd.conf not working

    Device specification in spotifyd.conf not working

    Description

    I'm having issues with spotifyd playing when I specify devices in the config. Setting devices to any output found in aplay -L, including "default", gives the following log from systemctl --user status spotifyd:

    Dec 27 08:19:05 arcus systemd[797]: Started A spotify playing daemon.
    Dec 27 08:19:05 arcus spotifyd[545245]: Loading config from "/home/$USER/.config/spotifyd/spotifyd.conf"
    Dec 27 08:19:05 arcus spotifyd[545245]: No proxy specified
    Dec 27 08:19:05 arcus spotifyd[545245]: Using alsa volume controller.
    Dec 27 08:19:05 arcus spotifyd[545245]: Connecting to AP "ap.spotify.com:443"
    Dec 27 08:19:06 arcus spotifyd[545245]: Authenticated as "<username>" !
    Dec 27 08:19:06 arcus spotifyd[545245]: Country: "US"
    Dec 27 08:19:06 arcus spotifyd[545245]: Using PulseAudio sink with format: S16
    Dec 27 08:19:52 arcus spotifyd[545245]: Could not start audio: No such entity
    Dec 27 08:19:52 arcus spotifyd[545245]: Could not write audio: Not connected to PulseAudio
    Dec 27 08:19:52 arcus spotifyd[545245]: Could not start audio: No such entity
    Dec 27 08:19:52 arcus spotifyd[545245]: Could not write audio: Not connected to PulseAudio
    Dec 27 08:19:52 arcus spotifyd[545245]: Could not start audio: No such entity
    Dec 27 08:19:52 arcus spotifyd[545245]: Could not write audio: Not connected to PulseAudio
    Dec 27 08:19:52 arcus spotifyd[545245]: Could not start audio: No such entity
    Dec 27 08:19:52 arcus spotifyd[545245]: Could not write audio: Not connected to PulseAudio
    Dec 27 08:19:52 arcus spotifyd[545245]: Could not start audio: No such entity
    Dec 27 08:19:52 arcus spotifyd[545245]: Could not write audio: Not connected to PulseAudio
    

    The player will successfully detect spotifyd and show as if it is playing, but no sound is produced. When devices is not set it works. Some relevant config is shown below:

    backend = "pulseaudio"
    volume_controller = "alsa"
    device_name = "arcus"
    bitrate = "320"
    zeroconf_port = 4444
    device_type = "computer"
    

    To reproduce

    Set value for devices in spotifyd.conf. Value I've tested include default, hw:2,1, and iec958:CARD=S7,DEV=1.

    Version

    spotifyd 0.3.4

    Additional Context

    I'm running arch linux and use wayland. I'm not super familiar with pulseaudio and configuring output devices as everything has just worked in the past, so it's possible the issue could lie with a misconfiguration there.

    I'm not sure if this is a bug with spotifyd, a misconfiguration with pulseaudio, or if I'm configuring spotifyd incorrectly, and I haven't found anything online about it. Let me know if there's any other logs I can provide.

    Edit: After looking into pulseaudio, it seems the device output can be specified by setting the PULSE_SINK environment variable, which works for my purposes. However, I'm still curious on how to properly set it within spotifyd.

    opened by ethanalker 0
  • Track is not available

    Track is not available

    Description Spotifyd seems to be unable to play some songs

    To Reproduce

    1. Try to play https://open.spotify.com/track/1S0lvPbrlaHD53wTOxotKX
    2. Nothing happens/Song is skipped, see log

    Expected behavior Song plays

    Logs

    Loading <Merry X (Santa der Boss)> with Spotify URI <spotify:track:1S0lvPbrlaHD53wTOxotKX>
    <spotify:track:1S0lvPbrlaHD53wTOxotKX> is not available
    

    Compilation flags

    • [ ] dbus_mpris
    • [ ] dbus_keyring
    • [ ] alsa_backend
    • [ ] portaudio_backend
    • [x] pulseaudio_backend
    • [ ] rodio_backend

    Versions (please complete the following information):

    • OS: Raspbian GNU/Linux 11 (bullseye)
    • Spotifyd: spotifyd 0.3.4
    • cargo: cargo 1.66.0 (d65d197ad 2022-11-15)

    Additional context I've only noticed the problem with German rap/hip-hop artists, other genres seem to be fine

    bug 
    opened by fallingcats 4
  • Local file from other device sync and play

    Local file from other device sync and play

    If local files are enabled on any of desktop or mobile official client, they appear in local files section, but the clients have a feature to add those local files in your playlists, as soon as you add a local file to a playlist, and download that playlist on other device, if both are on same network, the file gets saved to to other device, and if we play that playlist on other device, the local files are playable.

    While I understand that downloading all playlist if out of scope, would there be some feature regarding pulling local files from same network (that would require some reverse engineering probably) devices' clients so that those files in playlist are also playable.

    enhancement 
    opened by heymisphere 1
  • remove workaround for rspotify id types

    remove workaround for rspotify id types

    This upgrades rspotify to 0.11.6 and removes the workaround that was introduced in #1079, for which there is now much better library support.

    related: #1144

    opened by eladyn 0
Releases(v0.3.4)
Owner
null
Gtk/Rust native Spotify client for the GNOME desktop.

Gtk/Rust native Spotify client for the GNOME desktop.

Alexandre Trendel 1.7k Jan 1, 2023
🎧 a self-hosted Spotify → Discord music bot

Aoede is a Discord music bot that directly streams from Spotify to Discord. The only interface is Spotify itself. Note: a Spotify Premium account is c

Max Isom 159 Dec 29, 2022
A Spotify downloader written in rust, which does not require a premium account

DownOnSpot A Spotify downloader written in Rust Disclaimer DownOnSpot was not developed for piracy. It is meant to be used in compliance with DMCA, Se

oSumAtrIX 273 Jan 7, 2023
Psst - Fast and multi-platform Spotify client with native GUI

Psst Fast Spotify client with native GUI, without Electron, built in Rust. Very early in development, lacking in features, stability, and general user

Jan Pochyla 7.2k Jan 2, 2023
ncspot is a ncurses Spotify client written in Rust using librespot.

ncspot is a ncurses Spotify client written in Rust using librespot. It is heavily inspired by ncurses MPD clients, such as ncmpc. My motivation was to provide a simple and resource friendly alternative to the official client as well as to support platforms that currently don't have a Spotify client, such as the *BSDs.

Henrik Friedrichsen 3.4k Jan 8, 2023
code to connect + communicate with a Spotify Car Thing

spotify_carthing_bt A grab-bag of spotify car thing related hacks I'm working on. deskthing-rs A Rust port of https://github.com/relative/deskthing, w

Daniel Prilik 6 Dec 19, 2022
Effortlessly beautify your Spotify playlists with just a single, enchanting script 💫 🎵

harmonia harmonia, effortlessly beautify your Spotify playlists with just a single, enchanting script. ?? ?? HANDLE WITH LOVE: Since harmonia is bloss

Gülce 4 Jun 23, 2023
Rust Audio Player Daemon

Rust Audio Player Daemon Cause mpd was annoying What rapd trys to do Rapd is not a spotify client, or an advanced music player. Its an audio/music dae

ash 3 Nov 1, 2022
Spotify for the terminal written in Rust 🚀

Spotify TUI A Spotify client for the terminal written in Rust. The terminal in the demo above is using the Rigel theme. Spotify TUI Installation Homeb

Alexander Keliris 14.1k Jan 1, 2023
Adblocker for Spotify

spotify-adblock Spotify adblocker for Linux (macOS untested) that works by wrapping getaddrinfo and cef_urlrequest_create. It blocks requests to domai

null 1.2k Jan 3, 2023
Gtk/Rust native Spotify client for the GNOME desktop.

Gtk/Rust native Spotify client for the GNOME desktop.

Alexandre Trendel 1.7k Jan 1, 2023
🎧 a self-hosted Spotify → Discord music bot

Aoede is a Discord music bot that directly streams from Spotify to Discord. The only interface is Spotify itself. Note: a Spotify Premium account is c

Max Isom 159 Dec 29, 2022
A Spotify downloader written in rust, which does not require a premium account

DownOnSpot A Spotify downloader written in Rust Disclaimer DownOnSpot was not developed for piracy. It is meant to be used in compliance with DMCA, Se

oSumAtrIX 273 Jan 7, 2023
A command driven spotify player

spotify-player Table of Contents Introduction Examples Demo Installation Requirements Spotify Connect Streaming Commands Actions Search Page Mouse sup

Thang Pham 185 Dec 28, 2022
Psst - Fast and multi-platform Spotify client with native GUI

Psst Fast Spotify client with native GUI, without Electron, built in Rust. Very early in development, lacking in features, stability, and general user

Jan Pochyla 7.2k Jan 2, 2023
Rust-port of spotify/annoy as a wrapper for Approximate Nearest Neighbors in C++/Python optimized for memory usage.

Rust-port of spotify/annoy as a wrapper for Approximate Nearest Neighbors in C++/Python optimized for memory usage.

Arthur·Thomas 13 Mar 10, 2022
Rust-port of spotify/annoy as a wrapper for Approximate Nearest Neighbors in C++/Python optimized for memory usage.

Fareast This library is a rust port of spotify/annoy , currently only index serving is supported. It also provides FFI bindings for jvm, dotnet and da

Arthur·Thomas 13 Mar 10, 2022
ncspot is a ncurses Spotify client written in Rust using librespot.

ncspot is a ncurses Spotify client written in Rust using librespot. It is heavily inspired by ncurses MPD clients, such as ncmpc. My motivation was to provide a simple and resource friendly alternative to the official client as well as to support platforms that currently don't have a Spotify client, such as the *BSDs.

Henrik Friedrichsen 3.4k Jan 8, 2023
code to connect + communicate with a Spotify Car Thing

spotify_carthing_bt A grab-bag of spotify car thing related hacks I'm working on. deskthing-rs A Rust port of https://github.com/relative/deskthing, w

Daniel Prilik 6 Dec 19, 2022
An API to track various stats written in Rust. Tracking Github, Wakatime, Spotify, and Duolingo

Null API API For collecting data Explore the docs » View Demo · Report Bug · Request Feature Table of Contents About The Project Built With Getting St

The Null Dev 2 Dec 15, 2022