Roderick van Domburg
e51f475a00
Further initial loading improvements
...
This should fix remaining cases of a client connecting, and failing
to start playback from *beyond* the beginning when `librespot` is
still loading that track.
This undoes the `suppress_loading_status` workaround from #430 ,
under the assumption that the race condition reported there has
since been fixed on Spotify's end.
2021-12-29 22:27:31 +01:00
Roderick van Domburg
332f9f04b1
Fix error hitting play when loading
...
Further changes:
- Improve some debug and trace messages
- Default to streaming download strategy
- Synchronize mixer volume on loading play
- Use default normalisation values when the file position isn't
exactly what we need it to be
- Update track position only when the decoder reports a
successful seek
2021-12-28 23:46:37 +01:00
Roderick van Domburg
b4f7a9e35e
Change to parking_lot
and remove remaining panics
2021-12-26 23:02:02 +01:00
Roderick van Domburg
62461be1fc
Change panics into Result<_, librespot_core::Error>
2021-12-26 21:18:42 +01:00
Roderick van Domburg
9a93cca562
Get connection ID
2021-12-11 23:06:58 +01:00
Roderick van Domburg
9a31aa0362
Pretty-print trace messages
2021-12-11 20:45:08 +01:00
Roderick van Domburg
e748d543e9
Check availability from the catalogue attribute
2021-12-11 20:22:44 +01:00
Roderick van Domburg
9a0d2390b7
Get user attributes and updates
2021-12-11 00:03:35 +01:00
Roderick van Domburg
4f51c1e810
Report actual CPU, OS, platform and librespot version
2021-12-09 19:01:54 +01:00
Roderick van Domburg
f03a7e95c1
Merge remote-tracking branch 'librespot-org/dev' into new-api-wip
2021-12-08 19:11:53 +01:00
Roderick van Domburg
0e2686863a
Major metadata refactoring and enhancement
...
* Expose all fields of recent protobufs
* Add support for user-scoped playlists, user root playlists and
playlist annotations
* Convert messages with the Rust type system
* Attempt to adhere to embargos (tracks and episodes scheduled for
future release)
* Return `Result`s with meaningful errors instead of panicking on
`unwrap`s
* Add foundation for future playlist editing
* Up version in connection handshake to get all version-gated features
2021-12-07 23:22:24 +01:00
JasonLG1979
4370258716
Address clippy lint warnings for rust 1.57
2021-12-03 12:51:41 -06:00
JasonLG1979
3016d6fbdb
Guard against tracks_len being zero
...
to prevent 'index out of bounds: the len is 0 but the index is 0'
https://github.com/librespot-org/librespot/issues/226#issuecomment-971642037
2021-11-17 21:15:35 -06:00
Roderick van Domburg
0e6b1ba9dc
Update version numbers to 0.3.1
2021-10-24 20:12:33 +02:00
Roderick van Domburg
8ab5a94451
Merge pull request #859 from roderickvd/fix-album-play
...
Fix behavior after last track of an album/playlist
Partly fixes : #434
2021-10-13 20:33:57 +02:00
Sasha Hilton
6a3377402a
Update version numbers to 0.3.0
2021-10-13 15:10:18 +01:00
Roderick van Domburg
0f5d610b4b
Revert 10 track history window
2021-10-06 21:21:03 +02:00
Roderick van Domburg
289b4f9bcc
Fix behavior after last track of an album/playlist
...
* When autoplay is disabled, then loop back to the first track
instead of 10 tracks back. Continue or stop playing depending
on the state of the repeat button.
* When autoplay is enabled, then extend the playlist *after* the
last track. #844 broke this such that the last track of an album
or playlist was never played.
Fixes : #434
2021-10-05 22:08:26 +02:00
Roderick van Domburg
949ca4fded
Add and default to "auto" normalisation type ( #844 )
2021-09-20 19:22:02 +02:00
Roderick van Domburg
b016b69772
Fix clippy warnings
2021-09-01 21:25:32 +02:00
Roderick van Domburg
ad19b69bfb
Various code improvements ( #777 )
...
* Remove deprecated use of std::u16::MAX
* Use `FromStr` for fallible `&str` conversions
* DRY up strings into constants
* Change `as_ref().map()` into `as_deref()`
* Use `Duration` for time constants and functions
* Optimize `Vec` with response times
* Move comments for `rustdoc` to parse
2021-05-31 22:32:39 +02:00
Roderick van Domburg
3a2455d686
Merge branch 'dev' into log-volume-ctrl-optimisations
2021-05-26 20:50:42 +02:00
Roderick van Domburg
eca505c387
Improve volume controls
...
This is a squashed commit featuring the following:
Connect:
- Synchronize player volume with mixer volume on playback
- Fix step size on volume up/down events
- Remove no-op mixer started/stopped logic
Playback:
- Move from `connect` to `playback` crate
- Make cubic volume control available to all mixers with `--volume-ctrl cubic`
- Normalize volumes to `[0.0..1.0]` instead of `[0..65535]` for greater precision and performance (breaking)
- Add `--volume-range` option to set dB range and control `log` and `cubic` volume control curves
- Fix `log` and `cubic` volume controls to be mute at zero volume
Alsa mixer:
- Complete rewrite (breaking)
- Query card dB range for the `log` volume control unless specified otherwise
- Query dB range from Alsa softvol (previously only from hardware)
- Use `--device` name for `--mixer-card` unless specified otherwise
- Fix consistency for `cubic` between cards that report minimum volume as mute, and cards that report some dB value
- Fix `--volume-ctrl {linear|log}` to work as expected
- Removed `--mixer-linear-volume` option; use `--volume-ctrl linear` instead
2021-05-24 15:53:32 +02:00
johannesd3
9b6ba49026
Add "discovery" compat layer to "connect"
2021-05-19 21:09:38 +02:00
Johannesd3
ebea5397b9
Add librespot-discovery crate
2021-05-19 21:05:19 +02:00
johannesd3
041f084d7f
Fix warnings
2021-05-13 22:42:55 +02:00
johannesd3
1c62af9160
Unpin protobuf version
2021-05-08 22:09:37 +02:00
Sasha Hilton
2ef3928691
Update version numbers to 0.2.0
2021-05-04 13:05:13 +01:00
johannesd3
1681574846
Bump hmac and pbkdf2
2021-05-01 10:53:14 +02:00
johannesd3
6077a1ef4e
Remove unused block-modes dep
2021-05-01 10:41:39 +02:00
johannesd3
ddf41a49f2
Update lower version bound for some deps
2021-05-01 10:40:52 +02:00
Sasha Hilton
9a75ca195e
Update spirc shuffle command for tokio migration
2021-05-01 01:48:42 +01:00
Sasha Hilton
617b3b72b7
Merge pull request #666 from jackvstrickland/dev
...
Add shuffle command and command handling
2021-05-01 01:20:03 +01:00
johannesd3
b7350b71da
Restore previous feature flags
...
Some of the feature flags librespot uses are not really additive but
rather mutual exclusive. A previous attempt to improve the situation
had other drawbacks, so it's better to postpone a decision and restore
the old behaviour.
2021-04-10 12:50:30 +02:00
johannesd3
e688e7e886
Almost eliminate util module
2021-04-10 12:50:30 +02:00
johannesd3
7ddb1a20bb
Reuse librespot-core's Diffie Hellman in discovery
2021-04-09 22:39:47 +02:00
johannesd3
f5274f5ada
Merge branch 'dev' into tokio_migration
2021-04-09 10:39:06 +02:00
johannesd3
059b9029de
Remove redundant field names
2021-03-10 22:41:46 +01:00
johannesd3
5616004dbe
Fix many clippy lints
...
...and other small improvements
2021-03-10 22:41:44 +01:00
Jack Strickland
eb4dacbc59
Add shuffle command and command handling
2021-03-09 15:37:11 -06:00
Evan Cameron
6a33eb4efa
minor cleanup
2021-02-28 21:54:19 -05:00
Ash
56f1fb6dae
Merge pull request #595 from Johannesd3/const_versions
...
Replace version functions by constants
2021-02-26 10:47:44 +01:00
johannesd3
f22b41956f
Update url crate to 2.1
2021-02-23 22:22:53 +01:00
johannesd3
18179e73ec
Remove unused dependencies and fix feature flags
2021-02-23 22:22:53 +01:00
johannesd3
59c556635e
Clean up librespot-connect dependencies
2021-02-23 22:22:53 +01:00
johannesd3
d064ffc670
Use tokio channels and fix compilation errors
2021-02-23 22:22:53 +01:00
johannesd3
678d1777fd
Merge branch 'dev' into tokio_migration
2021-02-23 22:22:49 +01:00
Sasha Hilton
d8c1b491c4
Merge branch 'master' into dev
2021-02-22 00:57:45 +00:00
Sasha Hilton
b7c3609c7b
Update version numbers to 0.1.6
2021-02-22 00:37:28 +00:00
Sasha Hilton
2060901c1e
Merge pull request #605 from flaktack/spirc-command-play-pause
...
Fix state toggling in SpircCommand::PlayPause
2021-02-21 23:30:48 +00:00
Sasha Hilton
4e1c24d98d
Merge pull request #602 from Johannesd3/bumb_crypto_crates
...
Bump crypto crates
2021-02-21 23:29:00 +00:00
Will Stott
0b211f923f
Stabilization of libmdns at 0.2.7 (includes fix for NetBSD)
2021-02-21 18:54:16 +00:00
johannesd3
1c4d57c6da
Add shutdown to discovery server
2021-02-21 14:10:00 +01:00
johannesd3
2c81aaaf4e
Implement MercurySender not as sink
2021-02-21 14:10:00 +01:00
johannesd3
daf7ecd23a
Migrate librespot-connect to tokio 1.0
2021-02-21 14:09:31 +01:00
Sasha Hilton
7f705ed148
Merge branch 'master' into dev
2021-02-20 23:31:04 +00:00
Sasha Hilton
2c110ca256
Update version numbers to 0.1.5
2021-02-20 23:05:56 +00:00
Zsombor Welker
392a12af92
Fix toggling in SpircCommand::PlayPause
...
Fix play/pause toggling in handle_play_pause() to correctly call handled_play()/handle_pause() based on the state.
2021-02-20 15:05:53 +01:00
johannesd3
34733baa75
Bump crypto crates
2021-02-13 19:10:57 +01:00
johannesd3
872fab62d8
Merge branch 'dev' into tokio_migration
2021-02-10 21:51:33 +01:00
johannesd3
09e506ed66
Replace version functions by constants
2021-02-09 19:42:56 +01:00
Sasha Hilton
deabf1f915
Minor updates to discovery and device types
2021-02-09 03:16:40 +00:00
johannesd3
fd1f049572
Removed volume struct
2021-01-25 10:52:06 +01:00
ashthespy
c69ccf77e9
[Connect] Migrate to tokio
0.1
2021-01-23 22:21:42 +00:00
ashthespy
931c8207fc
[Connect] Migrate to hyper ~v12
2021-01-23 22:21:42 +00:00
Lyndon Brown
4fbbe44ab8
bump base64
dependency (v0.10 to v0.13)
...
very little changed, compiles fine after.
2020-12-14 11:53:54 +00:00
Lyndon Brown
0460429380
bump num-bigint
dependency (v0.2 to v0.3)
...
compiles fine after version change; version changes seem to be very minimal.
2020-12-14 11:53:54 +00:00
Lyndon Brown
4708e0a2bf
cargo toml formatting fix
...
for consistency
2020-11-26 19:31:51 +00:00
Lyndon Brown
f87cbd6fde
add missing repo links to sub-crate cargo toml files
...
such that links are available from their crates.io pages to the project repo.
2020-11-26 19:30:37 +00:00
Will Stott
dfef2cb433
Bump libmdns to 0.2.7 hopefully fixes : #520
2020-10-05 18:32:25 +01:00
Sasha Hilton
45f4276d68
Update version numbers to 0.1.3
2020-07-29 16:23:41 +01:00
ashthespy
99be49acd2
Set volume control default to log, clean up stray debugs
2020-07-25 09:52:21 +02:00
Ash
f0b3b2c7e8
Refactor Volume control, allow for a fixed volume option ( #447 )
...
Refactored the old `--linear-volume` flag to a more generic `--volume-ctrl` flag that takes the options of `[linear, log, fixed]`. It defaults as previously to log.
2020-07-25 09:38:08 +02:00
Sasha Hilton
43ab7fcedb
Merge pull request #474 from ashthespy/skip_unplayable
...
Skip unplayable tracks instead of stopping
2020-07-24 03:05:57 +01:00
Sasha Hilton
cd944035de
Merge pull request #476 from PlusMinus0/fix-utf-username
...
Fix utf username
2020-07-22 17:22:33 +01:00
Sasha Hilton
68949da7c2
Update version numbers to 0.1.2
2020-07-22 16:53:52 +01:00
engineergreen
f83915e212
Issue #497 - Playing songs from android app ( #501 )
...
* Issue #497 - Playing songs from android app
Implement the fix suggested by @Johannesd3
* Fix formatting
2020-07-22 16:28:39 +02:00
Ash
72437bff66
Bump protobuf v2.8.1 -> v~2.14.0 and fix build issues ( #485 )
2020-07-22 12:47:25 +02:00
ashthespy
16112d71b9
Search through full playlist for unplayable tracks
2020-05-28 16:18:41 +02:00
kaymes
e8ec5feb22
Don't send kPlayStatusLoading. ( #483 )
...
fixes #461
2020-05-27 19:51:56 +02:00
ashthespy
a28199f073
Tweak handling unavailables at start of playlists
2020-05-27 18:14:31 +02:00
ashthespy
1da80ce480
Handle unplayable track at start of playlist
2020-05-27 16:24:21 +02:00
Will Stott
e275f0a80d
Bump libmdns to 0.2.6 ( fixes #478 ) ( #479 )
...
* Bump libmdns to 0.2.6 (fixes #478 )
* Update Cargo.lock
2020-05-13 23:04:42 +02:00
ashthespy
01813cf7c9
Tweak unavailable track handling
...
Flag them as `NonPlayable` instead of removing them from the queue
2020-05-13 13:30:30 +02:00
ashthespy
9cacc2d09f
Fix regression in track cycling
2020-05-13 13:24:30 +02:00
ashthespy
172cb945c4
Merge branch 'dev' of https://github.com/librespot-org/librespot into skip_unplayable
2020-05-13 12:19:33 +02:00
ashthespy
14709b9f8d
Let spirc handle unavailable tracks
2020-05-13 11:49:26 +02:00
PlusMinus0
6f084d7ea5
Fix utf username.
2020-05-12 08:55:08 +02:00
Anton Voyl
0056400ca1
Merge pull request #475 from ashthespy/collections
...
Fetch context for Spotify Collection types as well
2020-05-11 09:03:28 +02:00
ashthespy
902440925d
Handle unplayable tracks during prefetch
2020-05-10 14:31:43 +02:00
Ash
e47ae83f33
libmdns housekeeping ( #467 )
...
* Rename log hooks (mdns-> libmdns)
* Bump libmdns
2020-05-10 13:22:19 +02:00
ashthespy
98e69ab0c4
Fetch context for Spotify Collection types as well
...
Liked songs for example
2020-05-09 16:40:57 +02:00
Sasha Hilton
670170bd23
Merge pull request #430 from kaymes/gapless_play
...
Gapless play and improved notifications
2020-02-27 02:14:13 +00:00
Konstantin Seiler
f3b13beb17
Fix typo.
2020-02-27 12:25:25 +11:00
Sasha Hilton
08c239319c
Merge pull request #386 from willstott101/cha_cha_shuffle
...
Ignore false shuffle/repeat when changing contexts to match Android behaviour (fixes : #266 )
2020-02-13 21:43:43 +01:00
Konstantin Seiler
3f111a9778
Suppress sending loading state to Spotify unless we actually need to load a track.
2020-02-07 21:21:11 +11:00
Konstantin Seiler
18d1181bf5
Clean up some code
...
Ensure the player events are emitted correctly.
Only call the external script on events we want to notify about.
Stop sink when loading to pause.
cargo fmt
2020-02-03 18:58:44 +11:00
Konstantin Seiler
981b76bace
Keep the sink open
...
Fix typo
2020-02-03 10:11:27 +11:00
Konstantin Seiler
6fed8d0413
Make preloading work.
2020-02-03 09:15:56 +11:00
Konstantin Seiler
9eef690a22
Some clean up
2020-02-02 11:08:46 +11:00