Commit graph

337 commits

Author SHA1 Message Date
DaXcess ba8ec55345
Fix spotify version in client token request 2024-07-01 15:38:50 +02:00
Roderick van Domburg 2288759309
Merge pull request #1295 from thedtvn/fix-tokio-tungstenite-with-ver-0.23.0
Update core/src/dealer/mod.rs fix tokio-tungstenite with ver 0.23
2024-06-09 10:07:41 +02:00
The DT b0d7fa62cf
Update mod.rs fix tokio-tungstenite with ver 0.23 2024-06-09 14:20:37 +07:00
George Hahn bd5c284790 Fix build error when hyper's server feature isn't enabled
hyper's `server` feature is not always enabled. The `hyper::Error::is_parse_too_large` function isn't included when `server` isn't enabled.

Fortunately, it doesn't matter to us: `Error:is_parse` matches `parse_too_large` errors, so removing this check does not change behavior whatsoever.
2024-06-07 02:08:54 -06:00
George Hahn e1113dd5e2 cargo fmt 2024-06-06 21:37:26 -06:00
George Hahn 0a7a874ca0 Update core to hyper 1.x 2024-06-06 03:06:44 -06:00
George Hahn 98a97588d3 Enable deprecation warnings and address 2024-06-06 03:06:44 -06:00
Roderick van Domburg 8f9bec21d7
Merge pull request #1284 from yubiuser/fix/clippy
Fix/clippy
2024-05-27 22:33:10 +02:00
Christian König 2a8c4bdc01
Apply reviewer's suggestion
Signed-off-by: Christian König <ckoenig@posteo.de>
2024-05-27 20:11:14 +00:00
Domenico Cerasuolo ce5e2f2392 Fix SpotifyId base 62 and 16 str decoding
A SpotifyId is expected to be a 128 bits integer and can be parsed from a
base 62 or 16 string. However the parsing functions only checked the validity of
the characters of the string, but not its length. This could result in integer
overflows or the parsing of incorrect strings as Spotify ids.

This commit add some checks to the length of the input string passed to the
parse functions, and also checks for integer overflows in case of base62
encoded strings.
2024-05-23 16:21:51 +02:00
Christian König 27d3c9e92f
Fix clippy::to_string_trait_impl
Signed-off-by: Christian König <ckoenig@posteo.de>
2024-05-11 19:53:55 +00:00
Christian König 99878e0f72
Fix derivable_impls
Signed-off-by: Christian König <ckoenig@posteo.de>
2024-05-11 19:13:08 +00:00
Christian König 0884a0d76a
Fix assigning_clones
Signed-off-by: Christian König <ckoenig@posteo.de>
2024-05-11 18:53:46 +00:00
Christian König 63e2490821
Fix redundant import checking on beta toolchain
Signed-off-by: Christian König <ckoenig@posteo.de>
2024-03-31 17:37:07 +00:00
Christian König 2cd2346edb
Fix map_clone and explicit truncate when file is create
Signed-off-by: Christian König <ckoenig@posteo.de>
2024-03-31 14:32:00 +00:00
Roderick van Domburg 9929635b5b
Merge pull request #1267 from acolombier/fix/update-spotify-version
fix: change spotify version needed in clientoken to use semantic format
2024-03-31 11:40:02 +02:00
Antoine C d881f46ce7 fix: change spotify version needed in clientoken to use semantic format 2024-03-19 22:05:29 +00:00
Christian König 979d9d0aa0
Update sysinfo to 0.30.5
Signed-off-by: Christian König <ckoenig@posteo.de>
2024-02-23 23:24:18 +01:00
David Sheets 0fbd19b521 core: make it easier to change declared OS 2023-12-06 20:42:24 +00:00
David Sheets 29f3345030 spclient: improve token request logging 2023-12-06 20:42:24 +00:00
David Sheets ba314b63e4 Replace the apparently unmaintained hex crate with data-encoding
data-encoding was already a transitive dependency via tungstenite
2023-12-06 20:42:24 +00:00
Domenico Cerasuolo ef1f35ba9d Fix official uris-ids docs outdated links 2023-12-03 11:56:25 +01:00
eladyn 60f6451c2e
fix clippy errors 2023-11-15 08:10:10 +01:00
Wang Guan ebf600d96e do not overwrite unchanged cached Credentials (#1168) 2023-07-14 00:02:57 +09:00
Nick Steel c491f90e09
Parse expiry timestamp from spotifycdn.com CDN URLs (Fixes #1182) (#1183)
The CDN URLs list now includes spotifycdn.com which has a different
format. It was being erroneously interpreted using the scdn.co format
and trying to parse non-digit characters as a timestamp.

Also ignore expiry timestamps we can't parse for future new URLs.
2023-07-04 10:37:22 +02:00
eladyn 4d402e690c
add session timeout handling (#1129) 2023-06-01 21:39:35 +02:00
yubiuser c964102a34
Update dependencies sysinfo and RSA (#1164) 2023-05-14 21:27:17 +02:00
Roderick van Domburg e4d4765332
Merge pull request #1156 from yubiuser/update/quick_xml
Update quick-xml
2023-04-14 22:21:22 +02:00
Christian König d8547f176c
Update quick-xml
Signed-off-by: Christian König <ckoenig@posteo.de>
2023-04-14 09:41:58 +02:00
Christian König ae8387af1d
Update vergen
Signed-off-by: Christian König <ckoenig@posteo.de>
2023-04-13 21:17:47 +02:00
Roderick van Domburg 2718d22c31
Merge pull request #1152 from yubiuser/update/rsa
Update rsa
2023-04-13 20:07:47 +02:00
yubiuser e8c3ee07ef
Update base64 (#1148) 2023-04-13 20:02:33 +02:00
Christian König 453ef48385
Update rsa
Signed-off-by: Christian König <ckoenig@posteo.de>
2023-04-12 23:38:05 +02:00
yubiuser e14dac3ff3
Remove and update dependencies (#1140) 2023-04-11 20:33:45 +02:00
George Hahn e8f93c44fd Fix NamedSpotifyId::to_uri 2023-01-28 02:56:09 -07:00
Petr Tesarik c600297f52 Fix newly reported clippy errors
- Use variables directly in format strings.
  As reported by clippy, variables can be used directly in the
  `format!` string.
- Use rewind() instead of seeking to 0.
- Remove superfluous & and ref.

Signed-off-by: Petr Tesarik <petr@tesarici.cz>
2023-01-27 23:15:51 +01:00
Ovenoboyo 7a4807eb8a
Add back pow_response and crypto_response
Probably was accidentally removed in
3662302196

Signed-off-by: Ovenoboyo <ovenoboyo@gmail.com>
2023-01-21 21:56:50 +05:30
Lukáš Tyrychtr 3662302196
Update protobuf and related crates to 3.x (#1092) 2023-01-17 21:46:14 +01:00
Roderick van Domburg 61ae66b998
Merge pull request #1088 from GeorgeHahn/support-named-playlist-ids
Parse playlist URIs with named IDs
2023-01-04 20:36:16 +01:00
Guillaume Desmottes 7f2cb684c9 fix clippy warnings 2023-01-03 00:36:35 +01:00
George Hahn 7a259ccc4b Parse named ID URIs 2023-01-02 16:27:40 -07:00
ealasu 5cfdb8c9dd Parse local file IDs 2022-12-02 17:24:02 -07:00
Guillaume Desmottes 1a48bc87c8 core: workaround for Session::connect() future being !Send
rsa::padding::PaddingScheme is !Send, making it impossible to call
Session::connect() with an executor requiring Send futures, such as
Rocket.

Fix #1065
2022-10-20 17:22:00 +02:00
Roderick van Domburg f10b8f69f8
Improvements towards supporting pagination
Not there yet, as Apollo stations always return autoplay
recommendations even if you set autoplay to false. Along the way
as an effort to bring the protocol up to spec:

- And support for and use different Apollo station scopes depending
  on whether we are using autoplay or not. For autoplay, get a
  "stations" scope and follow the "tracks" pages from there. Otherwise
  use "tracks" immediately for the active scope (playlist, album).

- For the above point we only need the fields from `PageContext`
  so use that instead of a `StationContext`.

- Add some documentation from API reverse engineering: things seen
  in the wild, some of them to do, others documented for posterity's
  sake.

- Update the Spirc device state based on what the latest desktop
  client puts out. Unfortunately none of it seems to change the
  behavior necessary to support external episodes, shows, but
  at least we're doing the right thing.

- Add a salt to HTTPS queries to defeat any caching.

- Add country metrics to HTTPS queries.

- Fix `get_radio_for_track` to use the right Spotify ID format.

- Fix a bug from the previous commit, where the playback position
  might not advance when hitting next and the autoplay context
  is loaded initially.
2022-10-01 23:01:17 +02:00
Roderick van Domburg bfb7d5689c
Retrieve autoplay contexts over HTTPS and fix repeat/prev/next
Repeat, previous and next used to start playback regardless of
the actual playback state. They now start playback only if we
were already playing.
2022-09-30 21:36:20 +02:00
Roderick van Domburg 6dc7a11b09
Re-introduce autoplay command-line option as an override 2022-09-28 22:59:03 +02:00
Roderick van Domburg eb1472c713
Various loading improvements
- Improve responsiveness by downloading the smallest possible chunk
  size when seeking or first loading.

- Improve download time and decrease CPU usage by downloading the
  largest possible chunk size as throughput allows, still allowing
  for reasonable seek responsiveness (~1 second).

- As a result, take refactoring opportunities: simplify prefetching
  logic, download threading, command sending, and some ergonomics.

- Fix disappearing controls in the Spotify mobile UI while loading.

- Fix handling of seek, pause, and play commands while loading.

- Fix download rate calculation (don't use the Mercury rate).

- Fix ping time calculation under lock contention.
2022-09-28 21:25:56 +02:00
JasonLG1979 d446258be5 Fix clippy lint 2022-09-22 16:41:03 -05:00
JasonLG1979 8545f361c4 Major Events Overhaul
Special thanks to @eladyn for all of their help and suggestions.

* Add all player events to `player_event_handler.rs`

* Move event handler code to `player_event_handler.rs`

* Add session events

* Clean up and de-noise events and event firing

* Added metadata support via a TrackChanged event

* Add `event_handler_example.py`

* Handle invalid track start positions by just starting the track from the beginning

* Add repeat support to `spirc.rs`

* Add `disconnect`, `set_position_ms` and `set_volume` to `spirc.rs`

* Set `PlayStatus` to the correct value when Player is loading to avoid blanking out the controls when `self.play_status` is `LoadingPlay` or `LoadingPause` in `spirc.rs`

* Handle attempts to play local files better by basically ignoring attempts to load them in `handle_remote_update` in `spirc.rs`

* Add an event worker thread that runs async to the main thread(s) but sync to itself to prevent potential data races for event consumers.

* Get rid of (probably harmless) `.unwrap()` in `main.rs`

* Ensure that events are emited in a logical order and at logical times

* Handle invalid and disappearing devices better

* Ignore SpircCommands unless we're active with the exception of ShutDown
2022-09-17 16:21:10 -05:00
eladyn 762f6d1a6f
strongly type ActivityPeriod (#1055)
switch fallibly to unsigned integers
2022-09-03 09:59:53 +02:00