[GH-ISSUE #876] spotify-player remains idle after connecting to "spotify-player" device #523

Closed
opened 2026-03-02 23:48:20 +03:00 by kerem · 3 comments
Owner

Originally created by @Pommersche92 on GitHub (Nov 16, 2025).
Original GitHub issue: https://github.com/aome510/spotify-player/issues/876

Describe the bug
After setting everything up according to the readme, I can connect to a device called "spotify-player" in my spotify app when i have the spotify_player application running (where it shows an error message in the region "Playback" (see screenshot).

To Reproduce
set everything up according to readme. can connect to speaker. according to spotify the music is being played through the "spotify-player" speaker, but the terminal app is still saying "no playback found". D (to show devices in spotify-player toggles an empty devices list)

Expected behaviour
terminal app spotify-player starts playing the song and showing the info about playback, playlists,. albums, artists and everything else as the screenshots of this program suggest.

Log and backtrace
Log:

2025-11-16T18:36:17.152598Z  INFO spotify_player: Configurations: Configs { app_config: AppConfig { theme: "dracula", client_id: "96c6241e011743109d0443c733efb12e", client_id_command: None, client_port: 8080, login_redirect_uri: "http://127.0.0.1:8989/login", player_event_hook_command: None, playback_format: "{status} {track} • {artists} {liked}\n{album}\n{metadata}", playback_metadata_fields: ["repeat", "shuffle", "volume", "device"], notify_format: NotifyFormat { summary: "{track} • {artists}", body: "{album}" }, notify_timeout_in_secs: 0, tracks_playback_limit: 50, proxy: None, ap_port: None, app_refresh_duration_in_ms: 32, playback_refresh_duration_in_ms: 0, page_size_in_rows: 20, play_icon: "▶", pause_icon: "▌▌", liked_icon: "♥", border_type: Plain, progress_bar_type: Rectangle, layout: LayoutConfig { library: LibraryLayoutConfig { playlist_percent: 40, album_percent: 40 }, playback_window_position: Top, playback_window_height: 6 }, cover_img_length: 9, cover_img_width: 5, cover_img_scale: 1.0, enable_media_control: true, enable_streaming: Always, enable_notify: true, enable_cover_image_cache: true, default_device: "spotify-player", device: DeviceConfig { name: "spotify-player", device_type: "speaker", volume: 70, bitrate: 320, audio_cache: false, normalization: false, autoplay: false }, notify_streaming_only: false, seek_duration_secs: 5, sort_artist_albums_by_type: false }, keymap_config: KeymapConfig { keymaps: [Keymap { key_sequence: KeySequence { keys: [None(Char('n'))] }, command: NextTrack }, Keymap { key_sequence: KeySequence { keys: [None(Char('p'))] }, command: PreviousTrack }, Keymap { key_sequence: KeySequence { keys: [None(Char('.'))] }, command: PlayRandom }, Keymap { key_sequence: KeySequence { keys: [None(Char(' '))] }, command: ResumePause }, Keymap { key_sequence: KeySequence { keys: [Ctrl(Char('r'))] }, command: Repeat }, Keymap { key_sequence: KeySequence { keys: [Alt(Char('r'))] }, command: ToggleFakeTrackRepeatMode }, Keymap { key_sequence: KeySequence { keys: [Ctrl(Char('s'))] }, command: Shuffle }, Keymap { key_sequence: KeySequence { keys: [None(Char('+'))] }, command: VolumeChange { offset: 5 } }, Keymap { key_sequence: KeySequence { keys: [None(Char('-'))] }, command: VolumeChange { offset: -5 } }, Keymap { key_sequence: KeySequence { keys: [None(Char('_'))] }, command: Mute }, Keymap { key_sequence: KeySequence { keys: [None(Char('>'))] }, command: SeekForward }, Keymap { key_sequence: KeySequence { keys: [None(Char('<'))] }, command: SeekBackward }, Keymap { key_sequence: KeySequence { keys: [None(Enter)] }, command: ChooseSelected }, Keymap { key_sequence: KeySequence { keys: [None(Char('r'))] }, command: RefreshPlayback }, Keymap { key_sequence: KeySequence { keys: [None(Char('/'))] }, command: Search }, Keymap { key_sequence: KeySequence { keys: [None(Char('z'))] }, command: Queue }, Keymap { key_sequence: KeySequence { keys: [Ctrl(Char('z'))] }, command: AddSelectedItemToQueue }, Keymap { key_sequence: KeySequence { keys: [None(Char('Z'))] }, command: AddSelectedItemToQueue }, Keymap { key_sequence: KeySequence { keys: [Ctrl(Char('g'))] }, command: JumpToHighlightTrackInContext }, Keymap { key_sequence: KeySequence { keys: [Ctrl(Char(' '))] }, command: ShowActionsOnSelectedItem }, Keymap { key_sequence: KeySequence { keys: [None(Char('g')), None(Char('a'))] }, command: ShowActionsOnSelectedItem }, Keymap { key_sequence: KeySequence { keys: [None(Char('a'))] }, command: ShowActionsOnCurrentTrack }, Keymap { key_sequence: KeySequence { keys: [None(Char('R'))] }, command: RestartIntegratedClient }, Keymap { key_sequence: KeySequence { keys: [None(Tab)] }, command: FocusNextWindow }, Keymap { key_sequence: KeySequence { keys: [None(BackTab)] }, command: FocusPreviousWindow }, Keymap { key_sequence: KeySequence { keys: [None(Char('T'))] }, command: SwitchTheme }, Keymap { key_sequence: KeySequence { keys: [None(Char('D'))] }, command: SwitchDevice }, Keymap { key_sequence: KeySequence { keys: [None(Char('u')), None(Char('p'))] }, command: BrowseUserPlaylists }, Keymap { key_sequence: KeySequence { keys: [None(Char('u')), None(Char('a'))] }, command: BrowseUserFollowedArtists }, Keymap { key_sequence: KeySequence { keys: [None(Char('u')), None(Char('A'))] }, command: BrowseUserSavedAlbums }, Keymap { key_sequence: KeySequence { keys: [None(Char('g')), None(Char(' '))] }, command: CurrentlyPlayingContextPage }, Keymap { key_sequence: KeySequence { keys: [None(Char('g')), None(Char('t'))] }, command: TopTrackPage }, Keymap { key_sequence: KeySequence { keys: [None(Char('g')), None(Char('r'))] }, command: RecentlyPlayedTrackPage }, Keymap { key_sequence: KeySequence { keys: [None(Char('g')), None(Char('y'))] }, command: LikedTrackPage }, Keymap { key_sequence: KeySequence { keys: [None(Char('g')), None(Char('L'))] }, command: LyricsPage }, Keymap { key_sequence: KeySequence { keys: [None(Char('l'))] }, command: LyricsPage }, Keymap { key_sequence: KeySequence { keys: [None(Char('g')), None(Char('l'))] }, command: LibraryPage }, Keymap { key_sequence: KeySequence { keys: [None(Char('g')), None(Char('s'))] }, command: SearchPage }, Keymap { key_sequence: KeySequence { keys: [None(Char('g')), None(Char('b'))] }, command: BrowsePage }, Keymap { key_sequence: KeySequence { keys: [None(Backspace)] }, command: PreviousPage }, Keymap { key_sequence: KeySequence { keys: [Ctrl(Char('q'))] }, command: PreviousPage }, Keymap { key_sequence: KeySequence { keys: [None(Char('O'))] }, command: OpenSpotifyLinkFromClipboard }, Keymap { key_sequence: KeySequence { keys: [None(Char('?'))] }, command: OpenCommandHelp }, Keymap { key_sequence: KeySequence { keys: [Ctrl(Char('h'))] }, command: OpenCommandHelp }, Keymap { key_sequence: KeySequence { keys: [None(Char('q'))] }, command: Quit }, Keymap { key_sequence: KeySequence { keys: [Ctrl(Char('c'))] }, command: Quit }, Keymap { key_sequence: KeySequence { keys: [None(Esc)] }, command: ClosePopup }, Keymap { key_sequence: KeySequence { keys: [None(Char('j'))] }, command: SelectNextOrScrollDown }, Keymap { key_sequence: KeySequence { keys: [Ctrl(Char('n'))] }, command: SelectNextOrScrollDown }, Keymap { key_sequence: KeySequence { keys: [None(Down)] }, command: SelectNextOrScrollDown }, Keymap { key_sequence: KeySequence { keys: [None(Char('k'))] }, command: SelectPreviousOrScrollUp }, Keymap { key_sequence: KeySequence { keys: [Ctrl(Char('p'))] }, command: SelectPreviousOrScrollUp }, Keymap { key_sequence: KeySequence { keys: [None(Up)] }, command: SelectPreviousOrScrollUp }, Keymap { key_sequence: KeySequence { keys: [None(PageUp)] }, command: PageSelectPreviousOrScrollUp }, Keymap { key_sequence: KeySequence { keys: [Ctrl(Char('b'))] }, command: PageSelectPreviousOrScrollUp }, Keymap { key_sequence: KeySequence { keys: [None(PageDown)] }, command: PageSelectNextOrScrollDown }, Keymap { key_sequence: KeySequence { keys: [Ctrl(Char('f'))] }, command: PageSelectNextOrScrollDown }, Keymap { key_sequence: KeySequence { keys: [None(Char('g')), None(Char('g'))] }, command: SelectFirstOrScrollToTop }, Keymap { key_sequence: KeySequence { keys: [None(Home)] }, command: SelectFirstOrScrollToTop }, Keymap { key_sequence: KeySequence { keys: [None(Char('G'))] }, command: SelectLastOrScrollToBottom }, Keymap { key_sequence: KeySequence { keys: [None(End)] }, command: SelectLastOrScrollToBottom }, Keymap { key_sequence: KeySequence { keys: [None(Char('s')), None(Char('t'))] }, command: SortTrackByTitle }, Keymap { key_sequence: KeySequence { keys: [None(Char('s')), None(Char('a'))] }, command: SortTrackByArtists }, Keymap { key_sequence: KeySequence { keys: [None(Char('s')), None(Char('A'))] }, command: SortTrackByAlbum }, Keymap { key_sequence: KeySequence { keys: [None(Char('s')), None(Char('d'))] }, command: SortTrackByDuration }, Keymap { key_sequence: KeySequence { keys: [None(Char('s')), None(Char('D'))] }, command: SortTrackByAddedDate }, Keymap { key_sequence: KeySequence { keys: [None(Char('s')), None(Char('r'))] }, command: ReverseTrackOrder }, Keymap { key_sequence: KeySequence { keys: [None(Char('s')), None(Char('l')), None(Char('a'))] }, command: SortLibraryAlphabetically }, Keymap { key_sequence: KeySequence { keys: [None(Char('s')), None(Char('l')), None(Char('r'))] }, command: SortLibraryByRecent }, Keymap { key_sequence: KeySequence { keys: [Ctrl(Char('k'))] }, command: MovePlaylistItemUp }, Keymap { key_sequence: KeySequence { keys: [Ctrl(Char('j'))] }, command: MovePlaylistItemDown }, Keymap { key_sequence: KeySequence { keys: [None(Char('N'))] }, command: CreatePlaylist }, Keymap { key_sequence: KeySequence { keys: [None(Char('g')), None(Char('c'))] }, command: JumpToCurrentTrackInContext }], actions: [] }, theme_config: ThemeConfig { themes: [Theme { name: "default", palette: Palette { background: None, foreground: None, black: Color { color: Black }, blue: Color { color: Blue }, cyan: Color { color: Cyan }, green: Color { color: Green }, magenta: Color { color: Magenta }, red: Color { color: Red }, white: Color { color: Gray }, yellow: Color { color: Yellow }, bright_black: Color { color: DarkGray }, bright_white: Color { color: White }, bright_red: Color { color: LightRed }, bright_magenta: Color { color: LightMagenta }, bright_green: Color { color: LightGreen }, bright_cyan: Color { color: LightCyan }, bright_blue: Color { color: LightBlue }, bright_yellow: Color { color: LightYellow } }, component_style: ComponentStyle { block_title: None, border: None, playback_status: None, playback_track: None, playback_artists: None, playback_album: None, playback_metadata: None, playback_progress_bar: None, playback_progress_bar_unfilled: None, current_playing: None, page_desc: None, playlist_desc: None, table_header: None, selection: None, secondary_row: None, like: None, lyrics_played: None, lyrics_playing: None } }] }, cache_folder: "/home/raimo/.cache/spotify-player" }
2025-11-16T18:36:17.184237Z  INFO spotify_player::auth: Using cached credentials
2025-11-16T18:36:17.184262Z  INFO spotify_player::streaming: Application's connect configurations: ConnectConfig { name: "spotify-player", device_type: Speaker, is_group: false, initial_volume: Some(45875), has_volume_ctrl: true }
2025-11-16T18:36:17.184273Z  INFO librespot_playback::mixer::softmixer: Mixing with softvol and volume control: Log(60.0)    
2025-11-16T18:36:17.184288Z  INFO spotify_player::streaming: Initializing a new integrated player with device_id=d1b312cc-75d0-4b19-a7d5-70da72e368f0
2025-11-16T18:36:17.184345Z  INFO spotify_player::streaming: Starting an integrated Spotify player using librespot's spirc protocol
2025-11-16T18:36:17.184404Z  INFO librespot_playback::convert: Converting with ditherer: tpdf    
2025-11-16T18:36:17.184417Z  INFO librespot_playback::audio_backend::pulseaudio: Using PulseAudioSink with format: S16    
2025-11-16T18:36:18.755659Z  INFO librespot_core::session: Connecting to AP "ap-gew4.spotify.com:4070"    
2025-11-16T18:36:19.352116Z  INFO librespot_core::session: Authenticated as 'pommersche92' !    
2025-11-16T18:36:19.352219Z  INFO librespot_core::session: Country: "DE"    
2025-11-16T18:36:19.352268Z  INFO spotify_player::streaming: New streaming connection has been established!
2025-11-16T18:36:19.352274Z  INFO spotify_player::client: Used a new session for Spotify client.
2025-11-16T18:36:19.352279Z  INFO spotify_player::token: Getting a new authentication token...
2025-11-16T18:36:19.773277Z ERROR librespot_core::mercury: error 403 for uri hm://keymaster/token/authenticated?scope=user-read-recently-played,user-top-read,user-read-playback-position,user-read-playback-state,user-modify-playback-state,user-read-currently-playing,streaming,playlist-read-private,playlist-modify-private,playlist-modify-public,playlist-read-collaborative,user-follow-read,user-follow-modify,user-library-read,user-library-modify&client_id=65b708073fc0480ea92a077233ca87bd&device_id=d1b312cc-75d0-4b19-a7d5-70da72e368f0    
2025-11-16T18:36:19.773348Z ERROR spotify_player::client::spotify: Failed to get a new token: failed to get the token: Service unavailable { error handling Mercury response: MercuryResponse { uri: "hm://keymaster/token/authenticated?scope=user-read-recently-played,user-top-read,user-read-playback-position,user-read-playback-state,user-modify-playback-state,user-read-currently-playing,streaming,playlist-read-private,playlist-modify-private,playlist-modify-public,playlist-read-collaborative,user-follow-read,user-follow-modify,user-library-read,user-library-modify&client_id=65b708073fc0480ea92a077233ca87bd&device_id=d1b312cc-75d0-4b19-a7d5-70da72e368f0", status_code: 403, payload: [[123, 34, 99, 111, 100, 101, 34, 58, 52, 44, 34, 101, 114, 114, 111, 114, 68, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 34, 58, 34, 73, 110, 118, 97, 108, 105, 100, 32, 114, 101, 113, 117, 101, 115, 116, 34, 125]] } }
2025-11-16T18:36:19.773424Z  INFO spotify_player: Starting a client socket at 127.0.0.1:8080
2025-11-16T18:36:19.773634Z ERROR client_request{request=GetUserFollowedArtists}: spotify_player::client::handlers: Failed to handle client request: Token is not valid
2025-11-16T18:36:19.773635Z ERROR client_request{request=GetUserSavedShows}: spotify_player::client::handlers: Failed to handle client request: Token is not valid
2025-11-16T18:36:19.773657Z  INFO client_request{request=GetUserPlaylists}: spotify_player::token: Getting a new authentication token...
2025-11-16T18:36:19.773660Z ERROR client_request{request=GetUserSavedAlbums}: spotify_player::client::handlers: Failed to handle client request: Token is not valid
2025-11-16T18:36:19.773667Z ERROR client_request{request=GetUserSavedTracks}: spotify_player::client::handlers: Failed to handle client request: Token is not valid
2025-11-16T18:36:19.773648Z  INFO spotify_player::media_control: Initializing application's media control event watcher...
2025-11-16T18:36:19.773649Z ERROR client_request{request=GetCurrentUser}: spotify_player::client::handlers: Failed to handle client request: Token is not valid
2025-11-16T18:36:19.822839Z ERROR librespot_core::mercury: error 403 for uri hm://keymaster/token/authenticated?scope=user-read-recently-played,user-top-read,user-read-playback-position,user-read-playback-state,user-modify-playback-state,user-read-currently-playing,streaming,playlist-read-private,playlist-modify-private,playlist-modify-public,playlist-read-collaborative,user-follow-read,user-follow-modify,user-library-read,user-library-modify&client_id=65b708073fc0480ea92a077233ca87bd&device_id=d1b312cc-75d0-4b19-a7d5-70da72e368f0    
2025-11-16T18:36:19.822874Z ERROR client_request{request=GetUserPlaylists}: spotify_player::client::spotify: Failed to get a new token: failed to get the token: Service unavailable { error handling Mercury response: MercuryResponse { uri: "hm://keymaster/token/authenticated?scope=user-read-recently-played,user-top-read,user-read-playback-position,user-read-playback-state,user-modify-playback-state,user-read-currently-playing,streaming,playlist-read-private,playlist-modify-private,playlist-modify-public,playlist-read-collaborative,user-follow-read,user-follow-modify,user-library-read,user-library-modify&client_id=65b708073fc0480ea92a077233ca87bd&device_id=d1b312cc-75d0-4b19-a7d5-70da72e368f0", status_code: 403, payload: [[123, 34, 99, 111, 100, 101, 34, 58, 52, 44, 34, 101, 114, 114, 111, 114, 68, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 34, 58, 34, 73, 110, 118, 97, 108, 105, 100, 32, 114, 101, 113, 117, 101, 115, 116, 34, 125]] } }
2025-11-16T18:36:19.822884Z ERROR client_request{request=GetUserPlaylists}: spotify_player::client::handlers: Failed to handle client request: get access token: failed to get the authentication token stored inside the client.
2025-11-16T18:36:20.774044Z ERROR spotify_player::client: Failed to retrieve current playback: Token is not valid
2025-11-16T18:36:20.774073Z ERROR spotify_player::client: Failed to retrieve current playback: Token is not valid
2025-11-16T18:36:33.262040Z  INFO librespot_core::spclient: Resolved "gew4-spclient.spotify.com:443" as spclient access point    
2025-11-16T18:36:33.379851Z ERROR librespot_playback::player: Track should be available, but no alternatives found.    
2025-11-16T18:36:33.379868Z  WARN librespot_playback::player: <spotify:track:67fvkvKes8ZoI1lW7OyoOk> is not available    
2025-11-16T18:36:33.379937Z ERROR librespot_playback::player: Skipping to next track, unable to load track <SpotifyId("spotify:track:67fvkvKes8ZoI1lW7OyoOk")>: ()    
2025-11-16T18:36:33.497486Z  INFO librespot_connect::spirc: Resolved 50 tracks from <"spotify:playlist:69GMd5d5UsHInkRir863Tn">    
2025-11-16T18:36:33.537358Z ERROR librespot_playback::player: Track should be available, but no alternatives found.    
2025-11-16T18:36:33.537393Z  WARN librespot_playback::player: <spotify:track:76I220mjG31dRv8FfpYUzH> is not available    

Backtrace is completely empty

Screenshots

Image

Environment

  • OS: Linux (6.12.48-1) Manjaro
  • Terminal emulator: kitty
  • Application version: 0.20.7 (currently available release in Arch Linux "extra" pkg db)
  • Application features: ---

Additional context

  • did oAuth a couple of times, because i saw the token invalid, but didnt change anything
  • ofc also added the connection app in spotify and the generated id to the app.toml.
Originally created by @Pommersche92 on GitHub (Nov 16, 2025). Original GitHub issue: https://github.com/aome510/spotify-player/issues/876 **Describe the bug** After setting everything up according to the readme, I can connect to a device called "spotify-player" in my spotify app when i have the spotify_player application running (where it shows an error message in the region "Playback" (see screenshot). **To Reproduce** set everything up according to readme. can connect to speaker. according to spotify the music is being played through the "spotify-player" speaker, but the terminal app is still saying "no playback found". D (to show devices in spotify-player toggles an empty devices list) **Expected behaviour** terminal app spotify-player starts playing the song and showing the info about playback, playlists,. albums, artists and everything else as the screenshots of this program suggest. **Log and backtrace** Log: ``` 2025-11-16T18:36:17.152598Z INFO spotify_player: Configurations: Configs { app_config: AppConfig { theme: "dracula", client_id: "96c6241e011743109d0443c733efb12e", client_id_command: None, client_port: 8080, login_redirect_uri: "http://127.0.0.1:8989/login", player_event_hook_command: None, playback_format: "{status} {track} • {artists} {liked}\n{album}\n{metadata}", playback_metadata_fields: ["repeat", "shuffle", "volume", "device"], notify_format: NotifyFormat { summary: "{track} • {artists}", body: "{album}" }, notify_timeout_in_secs: 0, tracks_playback_limit: 50, proxy: None, ap_port: None, app_refresh_duration_in_ms: 32, playback_refresh_duration_in_ms: 0, page_size_in_rows: 20, play_icon: "▶", pause_icon: "▌▌", liked_icon: "♥", border_type: Plain, progress_bar_type: Rectangle, layout: LayoutConfig { library: LibraryLayoutConfig { playlist_percent: 40, album_percent: 40 }, playback_window_position: Top, playback_window_height: 6 }, cover_img_length: 9, cover_img_width: 5, cover_img_scale: 1.0, enable_media_control: true, enable_streaming: Always, enable_notify: true, enable_cover_image_cache: true, default_device: "spotify-player", device: DeviceConfig { name: "spotify-player", device_type: "speaker", volume: 70, bitrate: 320, audio_cache: false, normalization: false, autoplay: false }, notify_streaming_only: false, seek_duration_secs: 5, sort_artist_albums_by_type: false }, keymap_config: KeymapConfig { keymaps: [Keymap { key_sequence: KeySequence { keys: [None(Char('n'))] }, command: NextTrack }, Keymap { key_sequence: KeySequence { keys: [None(Char('p'))] }, command: PreviousTrack }, Keymap { key_sequence: KeySequence { keys: [None(Char('.'))] }, command: PlayRandom }, Keymap { key_sequence: KeySequence { keys: [None(Char(' '))] }, command: ResumePause }, Keymap { key_sequence: KeySequence { keys: [Ctrl(Char('r'))] }, command: Repeat }, Keymap { key_sequence: KeySequence { keys: [Alt(Char('r'))] }, command: ToggleFakeTrackRepeatMode }, Keymap { key_sequence: KeySequence { keys: [Ctrl(Char('s'))] }, command: Shuffle }, Keymap { key_sequence: KeySequence { keys: [None(Char('+'))] }, command: VolumeChange { offset: 5 } }, Keymap { key_sequence: KeySequence { keys: [None(Char('-'))] }, command: VolumeChange { offset: -5 } }, Keymap { key_sequence: KeySequence { keys: [None(Char('_'))] }, command: Mute }, Keymap { key_sequence: KeySequence { keys: [None(Char('>'))] }, command: SeekForward }, Keymap { key_sequence: KeySequence { keys: [None(Char('<'))] }, command: SeekBackward }, Keymap { key_sequence: KeySequence { keys: [None(Enter)] }, command: ChooseSelected }, Keymap { key_sequence: KeySequence { keys: [None(Char('r'))] }, command: RefreshPlayback }, Keymap { key_sequence: KeySequence { keys: [None(Char('/'))] }, command: Search }, Keymap { key_sequence: KeySequence { keys: [None(Char('z'))] }, command: Queue }, Keymap { key_sequence: KeySequence { keys: [Ctrl(Char('z'))] }, command: AddSelectedItemToQueue }, Keymap { key_sequence: KeySequence { keys: [None(Char('Z'))] }, command: AddSelectedItemToQueue }, Keymap { key_sequence: KeySequence { keys: [Ctrl(Char('g'))] }, command: JumpToHighlightTrackInContext }, Keymap { key_sequence: KeySequence { keys: [Ctrl(Char(' '))] }, command: ShowActionsOnSelectedItem }, Keymap { key_sequence: KeySequence { keys: [None(Char('g')), None(Char('a'))] }, command: ShowActionsOnSelectedItem }, Keymap { key_sequence: KeySequence { keys: [None(Char('a'))] }, command: ShowActionsOnCurrentTrack }, Keymap { key_sequence: KeySequence { keys: [None(Char('R'))] }, command: RestartIntegratedClient }, Keymap { key_sequence: KeySequence { keys: [None(Tab)] }, command: FocusNextWindow }, Keymap { key_sequence: KeySequence { keys: [None(BackTab)] }, command: FocusPreviousWindow }, Keymap { key_sequence: KeySequence { keys: [None(Char('T'))] }, command: SwitchTheme }, Keymap { key_sequence: KeySequence { keys: [None(Char('D'))] }, command: SwitchDevice }, Keymap { key_sequence: KeySequence { keys: [None(Char('u')), None(Char('p'))] }, command: BrowseUserPlaylists }, Keymap { key_sequence: KeySequence { keys: [None(Char('u')), None(Char('a'))] }, command: BrowseUserFollowedArtists }, Keymap { key_sequence: KeySequence { keys: [None(Char('u')), None(Char('A'))] }, command: BrowseUserSavedAlbums }, Keymap { key_sequence: KeySequence { keys: [None(Char('g')), None(Char(' '))] }, command: CurrentlyPlayingContextPage }, Keymap { key_sequence: KeySequence { keys: [None(Char('g')), None(Char('t'))] }, command: TopTrackPage }, Keymap { key_sequence: KeySequence { keys: [None(Char('g')), None(Char('r'))] }, command: RecentlyPlayedTrackPage }, Keymap { key_sequence: KeySequence { keys: [None(Char('g')), None(Char('y'))] }, command: LikedTrackPage }, Keymap { key_sequence: KeySequence { keys: [None(Char('g')), None(Char('L'))] }, command: LyricsPage }, Keymap { key_sequence: KeySequence { keys: [None(Char('l'))] }, command: LyricsPage }, Keymap { key_sequence: KeySequence { keys: [None(Char('g')), None(Char('l'))] }, command: LibraryPage }, Keymap { key_sequence: KeySequence { keys: [None(Char('g')), None(Char('s'))] }, command: SearchPage }, Keymap { key_sequence: KeySequence { keys: [None(Char('g')), None(Char('b'))] }, command: BrowsePage }, Keymap { key_sequence: KeySequence { keys: [None(Backspace)] }, command: PreviousPage }, Keymap { key_sequence: KeySequence { keys: [Ctrl(Char('q'))] }, command: PreviousPage }, Keymap { key_sequence: KeySequence { keys: [None(Char('O'))] }, command: OpenSpotifyLinkFromClipboard }, Keymap { key_sequence: KeySequence { keys: [None(Char('?'))] }, command: OpenCommandHelp }, Keymap { key_sequence: KeySequence { keys: [Ctrl(Char('h'))] }, command: OpenCommandHelp }, Keymap { key_sequence: KeySequence { keys: [None(Char('q'))] }, command: Quit }, Keymap { key_sequence: KeySequence { keys: [Ctrl(Char('c'))] }, command: Quit }, Keymap { key_sequence: KeySequence { keys: [None(Esc)] }, command: ClosePopup }, Keymap { key_sequence: KeySequence { keys: [None(Char('j'))] }, command: SelectNextOrScrollDown }, Keymap { key_sequence: KeySequence { keys: [Ctrl(Char('n'))] }, command: SelectNextOrScrollDown }, Keymap { key_sequence: KeySequence { keys: [None(Down)] }, command: SelectNextOrScrollDown }, Keymap { key_sequence: KeySequence { keys: [None(Char('k'))] }, command: SelectPreviousOrScrollUp }, Keymap { key_sequence: KeySequence { keys: [Ctrl(Char('p'))] }, command: SelectPreviousOrScrollUp }, Keymap { key_sequence: KeySequence { keys: [None(Up)] }, command: SelectPreviousOrScrollUp }, Keymap { key_sequence: KeySequence { keys: [None(PageUp)] }, command: PageSelectPreviousOrScrollUp }, Keymap { key_sequence: KeySequence { keys: [Ctrl(Char('b'))] }, command: PageSelectPreviousOrScrollUp }, Keymap { key_sequence: KeySequence { keys: [None(PageDown)] }, command: PageSelectNextOrScrollDown }, Keymap { key_sequence: KeySequence { keys: [Ctrl(Char('f'))] }, command: PageSelectNextOrScrollDown }, Keymap { key_sequence: KeySequence { keys: [None(Char('g')), None(Char('g'))] }, command: SelectFirstOrScrollToTop }, Keymap { key_sequence: KeySequence { keys: [None(Home)] }, command: SelectFirstOrScrollToTop }, Keymap { key_sequence: KeySequence { keys: [None(Char('G'))] }, command: SelectLastOrScrollToBottom }, Keymap { key_sequence: KeySequence { keys: [None(End)] }, command: SelectLastOrScrollToBottom }, Keymap { key_sequence: KeySequence { keys: [None(Char('s')), None(Char('t'))] }, command: SortTrackByTitle }, Keymap { key_sequence: KeySequence { keys: [None(Char('s')), None(Char('a'))] }, command: SortTrackByArtists }, Keymap { key_sequence: KeySequence { keys: [None(Char('s')), None(Char('A'))] }, command: SortTrackByAlbum }, Keymap { key_sequence: KeySequence { keys: [None(Char('s')), None(Char('d'))] }, command: SortTrackByDuration }, Keymap { key_sequence: KeySequence { keys: [None(Char('s')), None(Char('D'))] }, command: SortTrackByAddedDate }, Keymap { key_sequence: KeySequence { keys: [None(Char('s')), None(Char('r'))] }, command: ReverseTrackOrder }, Keymap { key_sequence: KeySequence { keys: [None(Char('s')), None(Char('l')), None(Char('a'))] }, command: SortLibraryAlphabetically }, Keymap { key_sequence: KeySequence { keys: [None(Char('s')), None(Char('l')), None(Char('r'))] }, command: SortLibraryByRecent }, Keymap { key_sequence: KeySequence { keys: [Ctrl(Char('k'))] }, command: MovePlaylistItemUp }, Keymap { key_sequence: KeySequence { keys: [Ctrl(Char('j'))] }, command: MovePlaylistItemDown }, Keymap { key_sequence: KeySequence { keys: [None(Char('N'))] }, command: CreatePlaylist }, Keymap { key_sequence: KeySequence { keys: [None(Char('g')), None(Char('c'))] }, command: JumpToCurrentTrackInContext }], actions: [] }, theme_config: ThemeConfig { themes: [Theme { name: "default", palette: Palette { background: None, foreground: None, black: Color { color: Black }, blue: Color { color: Blue }, cyan: Color { color: Cyan }, green: Color { color: Green }, magenta: Color { color: Magenta }, red: Color { color: Red }, white: Color { color: Gray }, yellow: Color { color: Yellow }, bright_black: Color { color: DarkGray }, bright_white: Color { color: White }, bright_red: Color { color: LightRed }, bright_magenta: Color { color: LightMagenta }, bright_green: Color { color: LightGreen }, bright_cyan: Color { color: LightCyan }, bright_blue: Color { color: LightBlue }, bright_yellow: Color { color: LightYellow } }, component_style: ComponentStyle { block_title: None, border: None, playback_status: None, playback_track: None, playback_artists: None, playback_album: None, playback_metadata: None, playback_progress_bar: None, playback_progress_bar_unfilled: None, current_playing: None, page_desc: None, playlist_desc: None, table_header: None, selection: None, secondary_row: None, like: None, lyrics_played: None, lyrics_playing: None } }] }, cache_folder: "/home/raimo/.cache/spotify-player" } 2025-11-16T18:36:17.184237Z INFO spotify_player::auth: Using cached credentials 2025-11-16T18:36:17.184262Z INFO spotify_player::streaming: Application's connect configurations: ConnectConfig { name: "spotify-player", device_type: Speaker, is_group: false, initial_volume: Some(45875), has_volume_ctrl: true } 2025-11-16T18:36:17.184273Z INFO librespot_playback::mixer::softmixer: Mixing with softvol and volume control: Log(60.0) 2025-11-16T18:36:17.184288Z INFO spotify_player::streaming: Initializing a new integrated player with device_id=d1b312cc-75d0-4b19-a7d5-70da72e368f0 2025-11-16T18:36:17.184345Z INFO spotify_player::streaming: Starting an integrated Spotify player using librespot's spirc protocol 2025-11-16T18:36:17.184404Z INFO librespot_playback::convert: Converting with ditherer: tpdf 2025-11-16T18:36:17.184417Z INFO librespot_playback::audio_backend::pulseaudio: Using PulseAudioSink with format: S16 2025-11-16T18:36:18.755659Z INFO librespot_core::session: Connecting to AP "ap-gew4.spotify.com:4070" 2025-11-16T18:36:19.352116Z INFO librespot_core::session: Authenticated as 'pommersche92' ! 2025-11-16T18:36:19.352219Z INFO librespot_core::session: Country: "DE" 2025-11-16T18:36:19.352268Z INFO spotify_player::streaming: New streaming connection has been established! 2025-11-16T18:36:19.352274Z INFO spotify_player::client: Used a new session for Spotify client. 2025-11-16T18:36:19.352279Z INFO spotify_player::token: Getting a new authentication token... 2025-11-16T18:36:19.773277Z ERROR librespot_core::mercury: error 403 for uri hm://keymaster/token/authenticated?scope=user-read-recently-played,user-top-read,user-read-playback-position,user-read-playback-state,user-modify-playback-state,user-read-currently-playing,streaming,playlist-read-private,playlist-modify-private,playlist-modify-public,playlist-read-collaborative,user-follow-read,user-follow-modify,user-library-read,user-library-modify&client_id=65b708073fc0480ea92a077233ca87bd&device_id=d1b312cc-75d0-4b19-a7d5-70da72e368f0 2025-11-16T18:36:19.773348Z ERROR spotify_player::client::spotify: Failed to get a new token: failed to get the token: Service unavailable { error handling Mercury response: MercuryResponse { uri: "hm://keymaster/token/authenticated?scope=user-read-recently-played,user-top-read,user-read-playback-position,user-read-playback-state,user-modify-playback-state,user-read-currently-playing,streaming,playlist-read-private,playlist-modify-private,playlist-modify-public,playlist-read-collaborative,user-follow-read,user-follow-modify,user-library-read,user-library-modify&client_id=65b708073fc0480ea92a077233ca87bd&device_id=d1b312cc-75d0-4b19-a7d5-70da72e368f0", status_code: 403, payload: [[123, 34, 99, 111, 100, 101, 34, 58, 52, 44, 34, 101, 114, 114, 111, 114, 68, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 34, 58, 34, 73, 110, 118, 97, 108, 105, 100, 32, 114, 101, 113, 117, 101, 115, 116, 34, 125]] } } 2025-11-16T18:36:19.773424Z INFO spotify_player: Starting a client socket at 127.0.0.1:8080 2025-11-16T18:36:19.773634Z ERROR client_request{request=GetUserFollowedArtists}: spotify_player::client::handlers: Failed to handle client request: Token is not valid 2025-11-16T18:36:19.773635Z ERROR client_request{request=GetUserSavedShows}: spotify_player::client::handlers: Failed to handle client request: Token is not valid 2025-11-16T18:36:19.773657Z INFO client_request{request=GetUserPlaylists}: spotify_player::token: Getting a new authentication token... 2025-11-16T18:36:19.773660Z ERROR client_request{request=GetUserSavedAlbums}: spotify_player::client::handlers: Failed to handle client request: Token is not valid 2025-11-16T18:36:19.773667Z ERROR client_request{request=GetUserSavedTracks}: spotify_player::client::handlers: Failed to handle client request: Token is not valid 2025-11-16T18:36:19.773648Z INFO spotify_player::media_control: Initializing application's media control event watcher... 2025-11-16T18:36:19.773649Z ERROR client_request{request=GetCurrentUser}: spotify_player::client::handlers: Failed to handle client request: Token is not valid 2025-11-16T18:36:19.822839Z ERROR librespot_core::mercury: error 403 for uri hm://keymaster/token/authenticated?scope=user-read-recently-played,user-top-read,user-read-playback-position,user-read-playback-state,user-modify-playback-state,user-read-currently-playing,streaming,playlist-read-private,playlist-modify-private,playlist-modify-public,playlist-read-collaborative,user-follow-read,user-follow-modify,user-library-read,user-library-modify&client_id=65b708073fc0480ea92a077233ca87bd&device_id=d1b312cc-75d0-4b19-a7d5-70da72e368f0 2025-11-16T18:36:19.822874Z ERROR client_request{request=GetUserPlaylists}: spotify_player::client::spotify: Failed to get a new token: failed to get the token: Service unavailable { error handling Mercury response: MercuryResponse { uri: "hm://keymaster/token/authenticated?scope=user-read-recently-played,user-top-read,user-read-playback-position,user-read-playback-state,user-modify-playback-state,user-read-currently-playing,streaming,playlist-read-private,playlist-modify-private,playlist-modify-public,playlist-read-collaborative,user-follow-read,user-follow-modify,user-library-read,user-library-modify&client_id=65b708073fc0480ea92a077233ca87bd&device_id=d1b312cc-75d0-4b19-a7d5-70da72e368f0", status_code: 403, payload: [[123, 34, 99, 111, 100, 101, 34, 58, 52, 44, 34, 101, 114, 114, 111, 114, 68, 101, 115, 99, 114, 105, 112, 116, 105, 111, 110, 34, 58, 34, 73, 110, 118, 97, 108, 105, 100, 32, 114, 101, 113, 117, 101, 115, 116, 34, 125]] } } 2025-11-16T18:36:19.822884Z ERROR client_request{request=GetUserPlaylists}: spotify_player::client::handlers: Failed to handle client request: get access token: failed to get the authentication token stored inside the client. 2025-11-16T18:36:20.774044Z ERROR spotify_player::client: Failed to retrieve current playback: Token is not valid 2025-11-16T18:36:20.774073Z ERROR spotify_player::client: Failed to retrieve current playback: Token is not valid 2025-11-16T18:36:33.262040Z INFO librespot_core::spclient: Resolved "gew4-spclient.spotify.com:443" as spclient access point 2025-11-16T18:36:33.379851Z ERROR librespot_playback::player: Track should be available, but no alternatives found. 2025-11-16T18:36:33.379868Z WARN librespot_playback::player: <spotify:track:67fvkvKes8ZoI1lW7OyoOk> is not available 2025-11-16T18:36:33.379937Z ERROR librespot_playback::player: Skipping to next track, unable to load track <SpotifyId("spotify:track:67fvkvKes8ZoI1lW7OyoOk")>: () 2025-11-16T18:36:33.497486Z INFO librespot_connect::spirc: Resolved 50 tracks from <"spotify:playlist:69GMd5d5UsHInkRir863Tn"> 2025-11-16T18:36:33.537358Z ERROR librespot_playback::player: Track should be available, but no alternatives found. 2025-11-16T18:36:33.537393Z WARN librespot_playback::player: <spotify:track:76I220mjG31dRv8FfpYUzH> is not available ``` Backtrace is completely empty **Screenshots** <img width="1720" height="698" alt="Image" src="https://github.com/user-attachments/assets/2a4c817d-95c9-48d0-a567-018995addee3" /> **Environment** - OS: Linux (6.12.48-1) Manjaro - Terminal emulator: kitty - Application version: 0.20.7 (currently available release in Arch Linux "extra" pkg db) - Application features: --- **Additional context** - did oAuth a couple of times, because i saw the token invalid, but didnt change anything - ofc also added the connection app in spotify and the generated id to the app.toml.
kerem 2026-03-02 23:48:20 +03:00
  • closed this issue
  • added the
    bug
    label
Author
Owner

@NelDav commented on GitHub (Nov 17, 2025):

Since November 27, Spotify API does no longer accept localhost and http redirects. I think that is the problem: https://developer.spotify.com/blog/2025-10-14-reminder-oauth-migration-27-nov-2025

Edit: I think I was wrong. It looks like spotify_player already uses PCKE code: github.com/aome510/spotify-player@6faa7803b1/spotify_player/src/client/mod.rs (L86)

What I noticed is that the client_id of the Mercury request is 65b708073fc0480ea92a077233ca87bd in my log as well and that is not the one I entered in my config file. I am not sure if that is intended, but it seems a little bit odd.

<!-- gh-comment-id:3543655040 --> @NelDav commented on GitHub (Nov 17, 2025): Since November 27, Spotify API does no longer accept localhost and http redirects. I think that is the problem: https://developer.spotify.com/blog/2025-10-14-reminder-oauth-migration-27-nov-2025 Edit: I think I was wrong. It looks like spotify_player already uses PCKE code: https://github.com/aome510/spotify-player/blob/6faa7803b1c5501096615a658291c08345b939b5/spotify_player/src/client/mod.rs#L86 What I noticed is that the `client_id` of the Mercury request is `65b708073fc0480ea92a077233ca87bd` in my log as well and that is not the one I entered in my config file. I am not sure if that is intended, but it seems a little bit odd.
Author
Owner

@NelDav commented on GitHub (Nov 17, 2025):

Ok, I found out. Version 0.20.7 is to old. This issues was already reported (https://github.com/aome510/spotify-player/issues/802) and fixed in version 0.21.0
There is a newer version on the Arch repository: https://archlinux.org/packages/extra/x86_64/spotify-player/
The problem is that even though the Arch repository offers the newest version, Manajaro repository (the stable branch) does not: https://manjaristas.org/branch_compare?q=spotify-player

I am not sure how often manjaro repository updates. However, I suggest installing spotify-player via cargo while Manjaro repository does contain the old spotify-player version.

<!-- gh-comment-id:3544111550 --> @NelDav commented on GitHub (Nov 17, 2025): Ok, I found out. Version 0.20.7 is to old. This issues was already reported (https://github.com/aome510/spotify-player/issues/802) and fixed in version [0.21.0](https://github.com/aome510/spotify-player/releases/tag/v0.21.0) There is a newer version on the Arch repository: https://archlinux.org/packages/extra/x86_64/spotify-player/ The problem is that even though the Arch repository offers the newest version, Manajaro repository (the stable branch) does not: https://manjaristas.org/branch_compare?q=spotify-player I am not sure how often manjaro repository updates. However, I suggest installing spotify-player via cargo while Manjaro repository does contain the old spotify-player version.
Author
Owner

@Pommersche92 commented on GitHub (Nov 18, 2025):

Ah, thank you for the info! Yeah, thats actually the reason i prefer manjaro to arch, not bleeding bleeding edge but reasonable bleeding edge... nnow that bit me in the ass... 😆

<!-- gh-comment-id:3546185341 --> @Pommersche92 commented on GitHub (Nov 18, 2025): Ah, thank you for the info! Yeah, thats actually the reason i prefer manjaro to arch, not bleeding bleeding edge but reasonable bleeding edge... nnow that bit me in the ass... 😆
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/spotify-player#523
No description provided.