Commit graph

101 commits

Author SHA1 Message Date
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
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
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
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
041f084d7f Fix warnings 2021-05-13 22:42:55 +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
e688e7e886 Almost eliminate util module 2021-04-10 12:50:30 +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
Ash
56f1fb6dae
Merge pull request #595 from Johannesd3/const_versions
Replace version functions by constants
2021-02-26 10:47:44 +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
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
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
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
09e506ed66 Replace version functions by constants 2021-02-09 19:42:56 +01:00
johannesd3
fd1f049572 Removed volume struct 2021-01-25 10:52:06 +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
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
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
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
ashthespy
902440925d Handle unplayable tracks during prefetch 2020-05-10 14:31:43 +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