* fix: adapt to librespot SpotifyUri API changes
Fixes compatibility with librespot PR #1622 which changed the API
from SpotifyId::from_uri() to SpotifyUri::from_uri().
Changes:
- Updated src/spotify_worker.rs to use SpotifyUri instead of SpotifyId
- Updated Cargo.toml to use librespot from official repository
(merge commit a9122dcb from PR #1622)
- Regenerated Cargo.lock with updated dependencies
Fixes#1732
Depends on librespot-org/librespot#1622 (merged)
* Switch to 0.8.0 release
* Update CHANGELOG
* `cargo fmt`
---------
Co-authored-by: Guilherme Fontes <48162143+gui-baeta@users.noreply.github.com>
Co-authored-by: Henrik Friedrichsen <henrik@affekt.org>
When loading this playlist
(https://open.spotify.com/playlist/2onE4ObADgp1NuBzciYF0Q), ncspot would
crash. The exact cause is not clear, but it seems to be caused by the
songs not being available and therefore not having a valid artist.
Therefore ensure we have a default value for artists in case one isn't
available.
* fix(deps): bump librespot to 0.7.0
* Bumps librespot to 0.7.0
* Changes worker authentication to use login5
* Solves minor API changes
* Adds alsa-lib to nix shell
* fix(ci): add libasound2 build dependency
* docs: updates changelog
* fix: Don't build with Rodio backend by default
Allow users to explicitly specify Librespot audio backend. This way we can also
drop the ALSA dependencies again.
---------
Co-authored-by: Henrik Friedrichsen <henrik@affekt.org>
I think this worked before but must have regressed. The value `is_playable` was
not taken into account and instead overshadowed by a dummy method.
Fixes#1552
As this is a breaking change, it should definitely be represented in the
changelog, which is the primary source of information about any
user-facing changes.
* Add Seeked signal to Mpris interface
The Mpris2 spec includes a `Seeked` signal which should be fired when
the track position changes in an unexpected way i.e. when the user
seeks to a different part of the track.
This PR implements this signal on seek events and also when a new track
begins. The latter is not strictly required but has been observed in
other players (e.g. VLC).
Closes#1492
* chore: Use `send_mpris()` and `Duration` for conversion
* doc: Update CHANGELOG
---------
Co-authored-by: Henrik Friedrichsen <henrik@affekt.org>
* docs: Rename `ap-port` option as `ap_port`
The option is named `ap-port` in librespot.
The option is named [`ap_port` in ConfigValues](9624c03264/src/config.rs (L105)).
In ncspot/config.toml
`ap-port = 443` does nothing, librespot uses port 4070
`ap_port = 443` librespot uses HTTPS
* chore(docs): Rename `ap_port` option in CHANGELOG
Remove implementation details from the changelog as they are provided by
the link in the version title for each release. Also rephrase some
changes to make them more clear.
Co-authored-by: Henrik Friedrichsen <henrik@affekt.org>
The Snapcraft installation method was removed in the past as the package
disappeared from Snapcraft. It seems to be back and maintained, so it
should be back in the documentation.
* chore(deps): bump rspotify to 0.13.1
* Use native TLS only, don't mix it with rustls
reqwest uses native TLS, but rspotify with ureq currently uses rustls,
i.e. ncspot bundles rustls and is linked with system TLS library at the
same time.
This has already been fixed in 80da5a877a,
but this commit has been reverted in
aeff120e67 due to a bug in rspotify that
was fixed in 0.13.1 (https://github.com/ramsayleung/rspotify/pull/471).
* added support for ap-port conf
* chore: Reindent table
* feat: Only set `ap_port` in session config if supplied by user
* docs: Update CHANGELOG
---------
Co-authored-by: Henrik Friedrichsen <henrik@affekt.org>
* ci: Run tests in CI
Thanks to contributors test coverage is becoming a thing, thus it makes sense to
run tests in CI workflows.
Additionally, switch back to `cargo build` instead of `cargo check`, as the
tests need compilation anyway.
* ci: Enable build for `macos-aarch64`
* fix: Streamline build target names
* fix: Set toolchain target correctly
* ci: Switch to `rustup` over 3rd party action
* fix a panic when token update fails
sometimes we get an `Err` from `token_rx.recv()`, shouldn't panic in such cases
* chore(docs): Update Changelog
---------
Co-authored-by: Henrik Friedrichsen <henrik@affekt.org>
Instead of crashing on Termux, no IPC socket is created. This is a
temporary solution until a suitable runtime directory for the Termux
platform can be found.
Cleans up the error messages generated when errors are encountered in
the configuration file. Instead of showing the raw error message, give
clear information about the problem.