From 04add15691578316ff3da5b5a07d05b314488370 Mon Sep 17 00:00:00 2001 From: salmonik Date: Sat, 16 May 2026 11:43:32 +0200 Subject: Add scrobbling support (Last.fm + ListenBrainz) and rsp settings reload MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Full Last.fm API implementation with MD5 signing (track.updateNowPlaying, track.scrobble) - Full ListenBrainz API implementation (/1/submit-listens for playing_now and single) - ScrobbleState in daemon tracking track, start time, and unix timestamp per play - Scrobble threshold: ≥30s play AND (≥half duration OR ≥4 min) - Duration extraction from symphonia codec params into AudioMetadata and Track - Token validation at daemon startup and on config change - ListenBrainz token valid (user: Salmonium) command to re-read config from disk (avoids token in shell history) - Desktop notifications for token validation results - Empty-credential filtering (empty string = no-op) --- Cargo.toml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'Cargo.toml') diff --git a/Cargo.toml b/Cargo.toml index afcc9cf..270ea7d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "rsp" -version = "0.5.0" +version = "0.8.0" edition = "2024" description = "Rust music player daemon with Unix socket IPC" license = "GPL-3.0 or later" @@ -23,7 +23,7 @@ directories = "6.0" serde = { version = "1.0.228", features = ["derive"] } toml = "1.1.2" tokio = { version = "1.52.2", features = ["full"] } -reqwest = { version = "0.13.3", features = ["json"] } +reqwest = { version = "0.13.3", features = ["json", "form", "blocking"] } symphonia = { version = "0.5.5", features = ["all"] } cpal = "0.17.3" chrono = "0.4.44" @@ -34,6 +34,8 @@ ctrlc = "3.5.2" rand = "0.10.1" notify-rust = "4.17.0" terminal_size = "0.4.4" +md-5 = "0.11.0" +hex = "0.4.3" [dev-dependencies] tempfile = "3.17" -- cgit v1.2.3