aome510 / spotify-player

A Spotify player in the terminal with full feature parity
MIT License
2.95k stars 131 forks source link

Image aspect ratio kinda off #483

Closed Kurenai-Misuzu closed 3 days ago

Kurenai-Misuzu commented 5 days ago

Describe the bug When I play a song the album image is not perfectly square

To Reproduce Play a song with the image feature enabled

Expected behaviour Expected album image to be square

Log and backtrace

2024-07-04T06:34:27.085733Z  INFO spotify_player: Configurations: Configs { app_config: AppConfig { theme: "dracula", client_id: "65b708073fc0480ea92a077233ca87bd", client_port: 8080, player_event_hook_command: None, playback_format: "{track} • {artists}\n{album}\n{metadata}", 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, playback_window_position: Top, cover_img_length: 9, cover_img_width: 5, cover_img_scale: 1.0, playback_window_width: 6, enable_media_control: true, enable_streaming: Always, enable_cover_image_cache: false, default_device: "spotify-player", device: DeviceConfig { name: "spotify-player", device_type: "speaker", volume: 70, bitrate: 320, audio_cache: false, normalization: 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: VolumeUp }, Keymap { key_sequence: KeySequence { keys: [None(Char('-'))] }, command: VolumeDown }, 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(' '))] }, 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: 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: [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 }] }, 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_track: None, playback_artists: None, playback_album: None, playback_metadata: None, playback_progress_bar: None, current_playing: None, page_desc: None, playlist_desc: None, table_header: None, selection: None } }] }, cache_folder: "/home/dylanvee/.cache/spotify-player" }
2024-07-04T06:34:27.085826Z  INFO spotify_player::state::data: Loading Playlists data from /home/dylanvee/.cache/spotify-player/Playlists_cache.json...
2024-07-04T06:34:27.086344Z  INFO spotify_player::state::data: Successfully loaded Playlists data!
2024-07-04T06:34:27.086356Z  INFO spotify_player::state::data: Loading FollowedArtists data from /home/dylanvee/.cache/spotify-player/FollowedArtists_cache.json...
2024-07-04T06:34:27.086795Z  INFO spotify_player::state::data: Successfully loaded FollowedArtists data!
2024-07-04T06:34:27.086807Z  INFO spotify_player::state::data: Loading SavedAlbums data from /home/dylanvee/.cache/spotify-player/SavedAlbums_cache.json...
2024-07-04T06:34:27.087469Z  INFO spotify_player::state::data: Successfully loaded SavedAlbums data!
2024-07-04T06:34:27.087478Z  INFO spotify_player::state::data: Loading SavedTracks data from /home/dylanvee/.cache/spotify-player/SavedTracks_cache.json...
2024-07-04T06:34:27.207890Z  INFO spotify_player::state::data: Successfully loaded SavedTracks data!
2024-07-04T06:34:27.626448Z  INFO spotify_player::auth: Successfully used the cached credentials to create a new session!
2024-07-04T06:34:27.642536Z  INFO spotify_player::token: Getting new authentication token...
2024-07-04T06:34:27.749262Z  INFO spotify_player::token: Got new token: Token { access_token: "BQC9sB4p6laKAmmoZHXDIuum-kTUu0y1y08oJaGVhbbTw2e5geu9GgQMKtvRkWqVRbRUBAsTIFSYXpIfXhdj455YMur8sBdVTeVx2TMV4T_HqdvFjRYB15P8exOQi2R42txnd66T0Y3Tdyi2uOpNLtLRO2XJ5w6ZmXk6EcnT1ql1VA_XwCBgZNnfvHTdqZ3-U0Cq-FjR6orFpmtn11ybIBbnRflRaoGkfDdtnA7CmUMp7PDhRXKo-AMugIatQtuxZhACmEUYKtVAteKFsSLHhcFo6a_WdLs4jNo6WgNOeBwY", expires_in: TimeDelta { secs: 3600, nanos: 0 }, expires_at: Some(2024-07-04T07:34:27.749259871Z), refresh_token: None, scopes: {} }
2024-07-04T06:34:27.749293Z  INFO spotify_player::streaming: Application's connect configurations: ConnectConfig { name: "spotify-player", device_type: Speaker, initial_volume: Some(45875), has_volume_ctrl: true, autoplay: false }
2024-07-04T06:34:27.749319Z  INFO spotify_player::streaming: Initializing a new integrated player with device_id=0c33455a-43f1-4e7a-b2fb-b909902b63eb
2024-07-04T06:34:27.749402Z  INFO spotify_player::streaming: Starting an integrated Spotify player using librespot's spirc protocol
2024-07-04T06:34:27.866750Z  INFO spotify_player: No playback found on startup, trying to connect to an available device...
2024-07-04T06:34:27.866826Z  INFO spotify_player: Starting a client socket at 127.0.0.1:8080
2024-07-04T06:34:27.867159Z  INFO spotify_player::media_control: Initializing application's media control event watcher...
2024-07-04T06:34:27.947575Z  INFO client_request{request=GetCurrentUser}: spotify_player::client: Successfully handled the client request, took: 80ms
2024-07-04T06:34:28.007477Z  INFO client_request{request=GetUserFollowedArtists}: spotify_player::client: Successfully handled the client request, took: 140ms
2024-07-04T06:34:28.143843Z  INFO client_request{request=GetUserPlaylists}: spotify_player::client: Successfully handled the client request, took: 276ms
2024-07-04T06:34:28.204860Z  INFO client_request{request=GetUserSavedAlbums}: spotify_player::client: Successfully handled the client request, took: 337ms
2024-07-04T06:34:28.928087Z  WARN client_request{request=ConnectDevice}: spotify_player::client: No device found. Please make sure you already setup Spotify Connect support as described in https://github.com/aome510/spotify-player#spotify-connect.
2024-07-04T06:34:28.928122Z  INFO client_request{request=ConnectDevice}: spotify_player::client: Trying to connect to device (id=0c33455a-43f1-4e7a-b2fb-b909902b63eb)
2024-07-04T06:34:29.071286Z  INFO client_request{request=ConnectDevice}: spotify_player::client: Connection succeeded (device_id=0c33455a-43f1-4e7a-b2fb-b909902b63eb)!
2024-07-04T06:34:29.071322Z  INFO client_request{request=ConnectDevice}: spotify_player::client: Successfully handled the client request, took: 1204ms
2024-07-04T06:34:30.090785Z  INFO spotify_player::streaming: Got a new player event: Paused { track_id: TrackId("2EiwUAcLK4llWK43CfxCfp"), position_ms: 81, duration_ms: 93893 }
2024-07-04T06:34:30.189986Z  INFO spotify_player::client: Retrieving image from url: https://i.scdn.co/image/ab67616d0000b2731ca16b3698f327af3091a30a
2024-07-04T06:34:31.043078Z  INFO client_request{request=GetCurrentUserQueue}: spotify_player::client: Successfully handled the client request, took: 173ms
2024-07-04T06:34:33.733836Z  INFO client_request{request=GetUserSavedTracks}: spotify_player::client: Successfully handled the client request, took: 5866ms
2024-07-04T06:34:34.873392Z  INFO spotify_player::client::handlers: Current context ID (None) is different from the expected ID (Some(Tracks(TracksId { uri: "tracks:user-liked-tracks", kind: "Liked Tracks" }))), update the context state
2024-07-04T06:34:36.715514Z  INFO spotify_player::streaming: Got a new player event: Changed { old_track_id: TrackId("2EiwUAcLK4llWK43CfxCfp"), new_track_id: TrackId("0OWtcuqA9LbpiLmJA1dhRS") }
2024-07-04T06:34:36.800743Z  INFO client_request{request=Player(StartPlayback(URIs([TrackId("0fvUvEHqBeYXXGMoDyyn9v"), TrackId("4jgxQqykuLScJAmqUvpfaZ"), TrackId("3oydLYmU23bex9OQDwjxCz"), TrackId("2mDNci8EmCus4yVygfRXZJ"), TrackId("3w4swp6a2bs6oFT2jBvgIG"), TrackId("7EIAw2TDdQM7WkhzFuozzU"), TrackId("7lcXrOj9HdsHFQfNNBR4XS"), TrackId("6BEnpVB7g2j8mzWs3MC2kh"), TrackId("2gCyvKHmI0oSP4dKboqaTd"), TrackId("4f2tZCZkbpbZeYlujhUT3R"), TrackId("5ZlQeEehpluO7LsJFlTGku"), TrackId("0OWtcuqA9LbpiLmJA1dhRS"), TrackId("6X8Tc3B90bhkAgV6W34Sa7"), TrackId("25vvfOwx0tw2N44SMk1cMC"), TrackId("0Gy97OAO4rbr2vJNcJfVNn"), TrackId("3yK6TQgWUvWpzZACUtmhuu"), TrackId("1uKqI8Bm5VGAlQ0bVhXnyC"), TrackId("07D6Za2GjFugWs8Vul1npr"), TrackId("6NdlYHdSAavwmzGoMoT3r0"), TrackId("2lBvjiFjAulQrV149Fs4yl"), TrackId("5ZylrkBAyf1p3OCgJRvHP5"), TrackId("4bBn7HCdg8psZmGomE5jap"), TrackId("3P4umaCkyQfrDsgS8GzJ1r"), TrackId("1xDnb3WuMqTBIsxf00Fbyn"), TrackId("31rg1LIyufAmN5aw9YNz9S"), TrackId("3yJnzrDjVS4sf1EnCY2UjO"), TrackId("3RiYi67LMqBpopK1b1D0fb"), TrackId("32ugfCwnBikQYOvKh9P0zK"), TrackId("0kF4HyUT7VvFTUgdT87OtH"), TrackId("2N76IteNq2CHWtWAW80afE"), TrackId("5rxbkKhHOLYTRe066svNMI"), TrackId("2J3Ysm4IPXulMfvwP7em3s"), TrackId("2Hvak6OlUkOgk9UR6Om3Lt"), TrackId("2Ojl5YN2ARgZnSdY2wRl7Q"), TrackId("2MdKm0P7WVSW4sOy7C7gvG"), TrackId("7p9Oua59fBF8L7jaD144LA"), TrackId("39u2IRpp8uuWxd8TfnEftr"), TrackId("3VUtCH8OrOjSy9InzRYjUS"), TrackId("0LsT2gBjRzFc8BSPBfVATh"), TrackId("3bb8SsTSK7YuIUYkG20OSK"), TrackId("0LsKplOVgboKBm5MpJsX0H"), TrackId("12shJ1oIZnCG5ZZD8HjQVi"), TrackId("3mjqoMavGRKBfLiiKuV267"), TrackId("6BJHsLiE47Sk0wQkuppqhr"), TrackId("1ekYU4FNovHT1Nz0bpTo7l"), TrackId("3qYSxY5R8fmxgqSidGNEoC"), TrackId("2md1qClKRTTwxGYmIC3hTy"), TrackId("1hLWGQJDCPMmEMJ3cPxMqE"), TrackId("7KMz8y0dgLLPQqgbp1WzJS"), TrackId("6TSYiBj8wF7d022odHkAgV")], Some(Uri("spotify:track:0OWtcuqA9LbpiLmJA1dhRS"))), None))}: spotify_player::client: Successfully handled the client request, took: 241ms
2024-07-04T06:34:37.093571Z  INFO spotify_player::streaming: Got a new player event: Playing { track_id: TrackId("0OWtcuqA9LbpiLmJA1dhRS"), position_ms: 0, duration_ms: 245333 }
2024-07-04T06:34:37.855842Z  INFO spotify_player::client: Retrieving image from file: /home/dylanvee/.cache/spotify-player/image/THE IDOLM@STER 765PRO ALLSTARS+ GRE@TEST BEST! -THE IDOLM@STER HISTORY--Various Artists-cover.jpg
2024-07-04T06:34:38.037556Z  INFO client_request{request=GetCurrentUserQueue}: spotify_player::client: Successfully handled the client request, took: 160ms
2024-07-04T06:34:40.548072Z  INFO client_request{request=GetUserSavedTracks}: spotify_player::client: Successfully handled the client request, took: 5821ms
2024-07-04T06:35:37.824283Z  INFO spotify_player::streaming: Got a new player event: Playing { track_id: TrackId("0OWtcuqA9LbpiLmJA1dhRS"), position_ms: 219777, duration_ms: 245333 }
2024-07-04T06:35:37.826527Z  INFO client_request{request=Player(SeekTrack(TimeDelta { secs: 219, nanos: 777000000 }))}: spotify_player::client: Successfully handled the client request, took: 88ms
2024-07-04T06:35:39.754556Z  INFO client_request{request=Player(SeekTrack(TimeDelta { secs: 53, nanos: 666000000 }))}: spotify_player::client: Successfully handled the client request, took: 94ms
2024-07-04T06:35:39.808126Z  INFO spotify_player::streaming: Got a new player event: Playing { track_id: TrackId("0OWtcuqA9LbpiLmJA1dhRS"), position_ms: 53666, duration_ms: 245333 }
2024-07-04T06:38:51.139310Z  INFO spotify_player::streaming: Got a new player event: EndOfTrack { track_id: TrackId("0OWtcuqA9LbpiLmJA1dhRS") }
2024-07-04T06:38:51.139362Z  INFO spotify_player::streaming: Got a new player event: Changed { old_track_id: TrackId("0OWtcuqA9LbpiLmJA1dhRS"), new_track_id: TrackId("6X8Tc3B90bhkAgV6W34Sa7") }
2024-07-04T06:38:51.139385Z  INFO spotify_player::streaming: Got a new player event: Playing { track_id: TrackId("6X8Tc3B90bhkAgV6W34Sa7"), position_ms: 0, duration_ms: 290920 }
2024-07-04T06:38:52.310170Z  INFO client_request{request=GetCurrentPlayback}: spotify_player::client: Successfully handled the client request, took: 154ms
2024-07-04T06:38:53.361416Z  INFO client_request{request=GetCurrentUserQueue}: spotify_player::client: Successfully handled the client request, took: 204ms

Screenshots image

Environment

Additional context Add any other context about the problem here.

aome510 commented 4 days ago

Thanks for reporting. The default settings might not work well for everyone. Can you try to tweak cover_img_width and cover_img_length to find the best settings for you?

More details: https://github.com/aome510/spotify-player/blob/master/docs/config.md#general

Kurenai-Misuzu commented 4 days ago

Oh yes thank you.

a cover image width / length ratio of 6:13 seems perfect for me

thank you once again!