diff options
| author | salmonik <raisersoft@proton.me> | 2026-05-16 11:43:32 +0200 |
|---|---|---|
| committer | salmonik <raisersoft@proton.me> | 2026-05-16 11:43:32 +0200 |
| commit | 04add15691578316ff3da5b5a07d05b314488370 (patch) | |
| tree | 458b1066001697faa75466d51c7dfd9008ccac16 /Cargo.toml | |
| parent | aesthetic changes (diff) | |
| download | rsplayer-04add15691578316ff3da5b5a07d05b314488370.tar.gz rsplayer-04add15691578316ff3da5b5a07d05b314488370.zip | |
Add scrobbling support (Last.fm + ListenBrainz) and rsp settings reload
- 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)
Diffstat (limited to '')
| -rw-r--r-- | Cargo.toml | 6 |
1 files changed, 4 insertions, 2 deletions
| @@ -1,6 +1,6 @@ | |||
| 1 | [package] | 1 | [package] |
| 2 | name = "rsp" | 2 | name = "rsp" |
| 3 | version = "0.5.0" | 3 | version = "0.8.0" |
| 4 | edition = "2024" | 4 | edition = "2024" |
| 5 | description = "Rust music player daemon with Unix socket IPC" | 5 | description = "Rust music player daemon with Unix socket IPC" |
| 6 | license = "GPL-3.0 or later" | 6 | license = "GPL-3.0 or later" |
| @@ -23,7 +23,7 @@ directories = "6.0" | |||
| 23 | serde = { version = "1.0.228", features = ["derive"] } | 23 | serde = { version = "1.0.228", features = ["derive"] } |
| 24 | toml = "1.1.2" | 24 | toml = "1.1.2" |
| 25 | tokio = { version = "1.52.2", features = ["full"] } | 25 | tokio = { version = "1.52.2", features = ["full"] } |
| 26 | reqwest = { version = "0.13.3", features = ["json"] } | 26 | reqwest = { version = "0.13.3", features = ["json", "form", "blocking"] } |
| 27 | symphonia = { version = "0.5.5", features = ["all"] } | 27 | symphonia = { version = "0.5.5", features = ["all"] } |
| 28 | cpal = "0.17.3" | 28 | cpal = "0.17.3" |
| 29 | chrono = "0.4.44" | 29 | chrono = "0.4.44" |
| @@ -34,6 +34,8 @@ ctrlc = "3.5.2" | |||
| 34 | rand = "0.10.1" | 34 | rand = "0.10.1" |
| 35 | notify-rust = "4.17.0" | 35 | notify-rust = "4.17.0" |
| 36 | terminal_size = "0.4.4" | 36 | terminal_size = "0.4.4" |
| 37 | md-5 = "0.11.0" | ||
| 38 | hex = "0.4.3" | ||
| 37 | 39 | ||
| 38 | [dev-dependencies] | 40 | [dev-dependencies] |
| 39 | tempfile = "3.17" | 41 | tempfile = "3.17" |
