Compare commits
10 Commits
79d45b96f3
...
c492094f42
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c492094f42 | ||
|
|
1b8e377e60 | ||
|
|
e70a934c1a | ||
|
|
b786f5a6bc | ||
|
|
f95201d5aa | ||
|
|
46ac2ab561 | ||
|
|
2c3e9c0eed | ||
|
|
6d703deac3 | ||
|
|
56520c2d8d | ||
|
|
f7c8262a3c |
2
.github/workflows/cd.yml
vendored
2
.github/workflows/cd.yml
vendored
@@ -40,7 +40,7 @@ jobs:
|
||||
target: x86_64-pc-windows-msvc
|
||||
features: '--no-default-features --features rodio_backend,pancurses_backend,share_clipboard,notify'
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@v6
|
||||
name: Checkout src
|
||||
- name: Install rustup
|
||||
if: runner.os != 'Windows'
|
||||
|
||||
6
.github/workflows/ci.yml
vendored
6
.github/workflows/ci.yml
vendored
@@ -34,7 +34,7 @@ jobs:
|
||||
target: x86_64-pc-windows-msvc
|
||||
features: '--no-default-features --features rodio_backend,pancurses_backend,share_clipboard,notify'
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@v6
|
||||
- uses: actions/cache@v4
|
||||
name: Cache build data
|
||||
with:
|
||||
@@ -73,7 +73,7 @@ jobs:
|
||||
name: Running `cargo fmt`
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@v6
|
||||
- name: Install rustup
|
||||
run: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
||||
- name: Install clippy + rustfmt
|
||||
@@ -87,7 +87,7 @@ jobs:
|
||||
name: Running `cargo clippy`
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/checkout@v6
|
||||
- uses: actions/cache@v4
|
||||
name: Cache build data
|
||||
with:
|
||||
|
||||
2
.github/workflows/update-rust-toolchain.yml
vendored
2
.github/workflows/update-rust-toolchain.yml
vendored
@@ -10,7 +10,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v5
|
||||
uses: actions/checkout@v6
|
||||
- name: update rust toolchain
|
||||
uses: a-kenji/update-rust-toolchain@v1.1
|
||||
with:
|
||||
|
||||
@@ -5,13 +5,14 @@ All notable changes to this project will be documented in this file.
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## Unreleased
|
||||
## [1.3.2]
|
||||
|
||||
### Fixed
|
||||
|
||||
- Playlist retrieval crashing when list contains podcast episodes
|
||||
- Crash when shifting a song by an amount greater than the queue's length
|
||||
- Crash when displaying songs that do not have an (available) artist
|
||||
- Playback broken due to Spotify API change
|
||||
|
||||
## [1.3.1]
|
||||
|
||||
@@ -260,6 +261,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
- Albums with more than 50 songs not showing all the songs when viewed in the library
|
||||
- Bug that could cause items to not load until the screen is filled on bigger screens
|
||||
|
||||
[1.3.2]: https://github.com/hrkfdn/ncspot/compare/v1.3.1...v1.3.2
|
||||
[1.3.1]: https://github.com/hrkfdn/ncspot/compare/v1.3.0...v1.3.1
|
||||
[1.3.0]: https://github.com/hrkfdn/ncspot/compare/v1.2.2...v1.3.0
|
||||
[1.2.2]: https://github.com/hrkfdn/ncspot/compare/v1.2.1...v1.2.2
|
||||
|
||||
1217
Cargo.lock
generated
1217
Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
18
Cargo.toml
18
Cargo.toml
@@ -1,7 +1,7 @@
|
||||
[package]
|
||||
name = "ncspot"
|
||||
readme = "README.md"
|
||||
version = "1.3.1"
|
||||
version = "1.3.2"
|
||||
description = "ncurses Spotify client written in Rust using librespot, inspired by ncmpc and the likes."
|
||||
exclude = ["images/**"]
|
||||
keywords = ["spotify", "ncurses", "librespot", "terminal"]
|
||||
@@ -44,19 +44,19 @@ codegen-units = 16
|
||||
|
||||
[dependencies]
|
||||
chrono = "0.4"
|
||||
clap = "4.5.48"
|
||||
clap = "4.5.53"
|
||||
arboard = {version = "3.6", optional = true}
|
||||
crossbeam-channel = "0.5"
|
||||
zbus = {version = "5.11.0", default-features = false, features = ["tokio"], optional = true}
|
||||
fern = "0.7"
|
||||
futures = "0.3"
|
||||
ioctl-rs = {version = "0.2", optional = true}
|
||||
libc = "0.2.176"
|
||||
librespot-core = "0.7.1"
|
||||
librespot-oauth = "0.7.1"
|
||||
librespot-playback = {version = "0.7.1", default-features = false, features = ["native-tls"]}
|
||||
librespot-protocol = "0.7.1"
|
||||
log = "0.4.28"
|
||||
libc = "0.2.178"
|
||||
librespot-core = "0.8.0"
|
||||
librespot-oauth = "0.8.0"
|
||||
librespot-playback = {version = "0.8.0", default-features = false, features = ["native-tls"]}
|
||||
librespot-protocol = "0.8.0"
|
||||
log = "0.4.29"
|
||||
pancurses = {version = "0.17.0", optional = true}
|
||||
parse_duration = "2.1.1"
|
||||
platform-dirs = "0.3.0"
|
||||
@@ -72,7 +72,7 @@ tokio = {version = "1", features = ["rt-multi-thread", "sync", "time", "net"]}
|
||||
tokio-util = {version = "0.7.16", features = ["codec"]}
|
||||
tokio-stream = {version = "0.1.17", features = ["sync"]}
|
||||
toml = "0.9"
|
||||
unicode-width = "0.2.1"
|
||||
unicode-width = "0.2.2"
|
||||
url = "2.5"
|
||||
|
||||
[target.'cfg(unix)'.dependencies]
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 82 KiB After Width: | Height: | Size: 70 KiB |
@@ -1,3 +1,3 @@
|
||||
[toolchain]
|
||||
channel = "1.90.0"
|
||||
channel = "1.91.1"
|
||||
components = ["rustfmt", "clippy", "rust-analyzer"]
|
||||
|
||||
@@ -3,8 +3,8 @@ use crate::model::playable::Playable;
|
||||
use crate::queue::QueueEvent;
|
||||
use crate::spotify::PlayerEvent;
|
||||
use futures::Future;
|
||||
use librespot_core::SpotifyUri;
|
||||
use librespot_core::session::Session;
|
||||
use librespot_core::spotify_id::SpotifyId;
|
||||
use librespot_core::token::Token;
|
||||
use librespot_playback::mixer::Mixer;
|
||||
use librespot_playback::player::{Player, PlayerEvent as LibrespotPlayerEvent};
|
||||
@@ -98,14 +98,14 @@ impl Worker {
|
||||
tokio::select! {
|
||||
cmd = self.commands.next() => match cmd {
|
||||
Some(WorkerCommand::Load(playable, start_playing, position_ms)) => {
|
||||
match SpotifyId::from_uri(&playable.uri()) {
|
||||
Ok(id) => {
|
||||
info!("player loading track: {id:?}");
|
||||
if !id.is_playable() {
|
||||
match SpotifyUri::from_uri(&playable.uri()) {
|
||||
Ok(uri) => {
|
||||
info!("player loading track: {uri:?}");
|
||||
if !uri.is_playable() {
|
||||
warn!("track is not playable");
|
||||
self.events.send(Event::Player(PlayerEvent::FinishedTrack));
|
||||
} else {
|
||||
self.player.load(id, start_playing, position_ms);
|
||||
self.player.load(uri, start_playing, position_ms);
|
||||
}
|
||||
}
|
||||
Err(e) => {
|
||||
@@ -133,9 +133,9 @@ impl Worker {
|
||||
self.token_task = Box::pin(Self::get_token(self.session.clone(), sender));
|
||||
}
|
||||
Some(WorkerCommand::Preload(playable)) => {
|
||||
if let Ok(id) = SpotifyId::from_uri(&playable.uri()) {
|
||||
debug!("Preloading {id:?}");
|
||||
self.player.preload(id);
|
||||
if let Ok(uri) = SpotifyUri::from_uri(&playable.uri()) {
|
||||
debug!("Preloading {uri:?}");
|
||||
self.player.preload(uri);
|
||||
}
|
||||
}
|
||||
Some(WorkerCommand::Shutdown) => {
|
||||
|
||||
@@ -10,8 +10,8 @@ repository.workspace = true
|
||||
|
||||
[dependencies]
|
||||
clap_mangen = "0.2.29"
|
||||
clap_complete = "4.5.58"
|
||||
clap = "4.5.48"
|
||||
clap_complete = "4.5.61"
|
||||
clap = "4.5.53"
|
||||
|
||||
[dependencies.ncspot]
|
||||
default-features = false
|
||||
|
||||
Reference in New Issue
Block a user