Commit graph

1458 commits

Author SHA1 Message Date
Roderick van Domburg 9b2ca1442e
Move FileId out of SpotifyId 2021-12-08 19:53:45 +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 87f6a78d3e
Fix examples 2021-12-07 23:52:34 +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
Roderick van Domburg 7160dc1017
Merge pull request #897 from JasonLG1979/clippy-lints
Address clippy lint warnings from Rust 1.57
2021-12-03 20:07:56 +01:00
JasonLG1979 4370258716 Address clippy lint warnings for rust 1.57 2021-12-03 12:51:41 -06:00
Jason Gray e66cc5508c
parse environment variables (#886)
Make librespot able to parse environment variables for options and flags.

To avoid name collisions environment variables must be prepended with `LIBRESPOT_` so option/flag `foo-bar` becomes `LIBRESPOT_FOO_BAR`.

Verbose logging mode (`-v`, `--verbose`) logs all parsed environment variables and command line arguments (credentials are redacted).
2021-12-01 21:29:58 +01:00
Roderick van Domburg 47badd61e0
Update tokio and fix build 2021-11-27 14:26:13 +01:00
Roderick van Domburg f037a42908
Migrate and expand playlist protos 2021-11-27 11:59:22 +01:00
Roderick van Domburg a73e05837e
Return HttpClientError for status code <> 200 2021-11-27 10:41:54 +01:00
Roderick van Domburg e1b273b8a1
Fix lyrics retrieval 2021-11-27 08:30:51 +01:00
Roderick van Domburg d19fd24074
Add spclient and HTTPS support
* Change metadata to use spclient
 * Add support for HTTPS proxies
 * Start purging unwraps and using Result instead
2021-11-26 23:28:37 +01:00
Nick Botticelli 56585cabb6
Add Google sign in credential to protobufs 2021-11-26 23:28:37 +01:00
Tom Vincent bbd575ed23
Harden systemd service, update restart policy (#888) 2021-11-26 19:49:50 +01:00
Roderick van Domburg 97399e2c0a
Merge pull request #883 from JasonLG1979/improve_device_list_outputs
Improve `--device ?` functionality for the alsa backend
2021-11-25 09:45:36 +01:00
JasonLG1979 c006a23644 Improve --device ? functionality for the alsa backend
This makes `--device ?` only show compatible devices (ones that support 2 ch 44.1 Interleaved) and it shows what `librespot` format(s) they support.

This should be more useful to users as the info maps directly to `librespot`'s `--device` and `--format` options.
2021-11-20 13:51:24 -06:00
Roderick van Domburg e064f27c13
Merge pull request #880 from JasonLG1979/fix_index_out_bounds_spirc
Guard against tracks_len being zero
2021-11-19 21:52:39 +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 85d6049ee7
Merge pull request #875 from JasonLG1979/refactor-main
Refactor main.rs
2021-11-17 22:44:22 +01:00
JasonLG1979 0e9fdbe6b4 Refactor main.rs
* Don't panic when parsing options. Instead list valid values and exit.
* Get rid of needless .expect in playback/src/audio_backend/mod.rs.
* Enforce reasonable ranges for option values (breaking).
* Don't evaluate options that would otherwise have no effect.
* Add pub const MIXERS to mixer/mod.rs very similar to the audio_backend's implementation. (non-breaking though)
* Use different option descriptions and error messages based on what backends are enabled at build time.
* Add a -q, --quiet option that changed the logging level to warn.
* Add a short name for every flag and option.
* Note removed options.
* Other misc cleanups.
2021-11-17 15:31:16 -06:00
Roderick van Domburg 45b19efd03
Merge pull request #874 from JasonLG1979/kill-the-undead
Prevent librespot from becoming a zombie
2021-10-30 20:27:42 +02:00
JasonLG1979 24e4d2b636 Prevent librespot from becoming a zombie
Prevent hang when discovery is disabled and there are no credentials or when bad credentials are given.
2021-10-28 09:13:46 -05:00
Roderick van Domburg 5049cd76e0
Merge pull request #872 from JasonLG1979/add-disable-credential-cache-flag
Add disable credential cache flag
2021-10-28 15:18:34 +02:00
JasonLG1979 9e017119bb Address review change request 2021-10-27 14:47:33 -05:00
Jason Gray fefd432773
Merge branch 'librespot-org:dev' into add-disable-credential-cache-flag 2021-10-27 14:42:24 -05:00
Roderick van Domburg bd39a362f7
Merge pull request #873 from jannuary/patch-1
README: Mention Spot
2021-10-27 20:50:46 +02:00
JasonLG1979 e543ef72ed Clean up cache logic in main 2021-10-27 10:14:40 -05:00
Noëlle 81e7c61c17
README: Mention Spot 2021-10-27 20:03:14 +07:00
JasonLG1979 9152ca8159 Update changelog 2021-10-26 22:20:24 -05:00
JasonLG1979 52bd212e43 Add disable credential cache flag
As mentioned in https://github.com/librespot-org/librespot/discussions/870, this allows someone who would otherwise like to take advantage of audio file and volume caching to disable credential caching.
2021-10-26 22:06:52 -05:00
Roderick van Domburg b4784ebf9c
Merge pull request #871 from roderickvd/update-crates
Update crates
2021-10-26 21:40:58 +02:00
Roderick van Domburg 72b2c01b3a
Update crates 2021-10-26 20:10:39 +02:00
Roderick van Domburg c1ac4cbb3a
Update Cargo.lock for 0.3.1 2021-10-24 20:24:28 +02:00
Roderick van Domburg 0e6b1ba9dc
Update version numbers to 0.3.1 2021-10-24 20:12:33 +02:00
Roderick van Domburg 9d19841c0f
Prepare for 0.3.1 release 2021-10-24 20:07:11 +02:00
Roderick van Domburg f21c25a257
Merge pull request #869 from JasonLG1979/clarify-arg-descriptions
Improve command line option description grammar
2021-10-24 19:28:08 +02:00
JasonLG1979 a5c7580d4f Grammar Police the arg descriptions 2021-10-22 17:41:59 -05:00
Roderick van Domburg 6d127b46c6
Merge pull request #868 from roderickvd/smallrng-dither
Change hand-picked RNGs back to `SmallRng`
2021-10-21 21:45:13 +02:00
Roderick van Domburg ff3648434b
Change hand-picked RNGs back to SmallRng
While `Xoshiro256+` is faster on 64-bit, it has low linear complexity in the
lower three bits, which *are* used when generating dither.

Also, while `Xoshiro128StarStar` access one less variable from the heap,
multiplication is generally slower than addition in hardware.
2021-10-21 19:31:58 +02:00
Roderick van Domburg 4c89a721ee
Improve dithering CPU usage (#866) 2021-10-19 22:33:04 +02:00
Roderick van Domburg b125659e12
Merge pull request #865 from kingosticks/feature/log-build-profile
Add build profile to displayed version info
2021-10-14 20:53:04 +02:00
Nick Steel 3b51a5dc23 Include build profile in the displayed version information
Example output from -V for a debug build is:
librespot 0.3.0 832889b (Built on 2021-10-14, Build ID: ANJrycbG, Profile: debug)
2021-10-14 14:38:09 +01:00
Roderick van Domburg d99581aeb7
Tag 0.3.0 and document #859 2021-10-13 20:37:46 +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 afbdd11f45 Update Cargo.lock for 0.3.0 2021-10-13 15:30:13 +01:00
Sasha Hilton 6a3377402a Update version numbers to 0.3.0 2021-10-13 15:10:18 +01:00
Roderick van Domburg 2c9564570c
Merge pull request #860 from JasonLG1979/simplify-buffer-resizing
Simplify Alsa buffer resizing
2021-10-08 15:49:05 +02:00
JasonLG1979 9ef53f5ffb simplify buffer resizing
This way is less verbose, much more simple and less brittle.
2021-10-07 08:44:29 -05: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