diff options
| author | salmonik <raisersoft@proton.me> | 2026-05-18 21:46:26 +0200 |
|---|---|---|
| committer | salmonik <raisersoft@proton.me> | 2026-05-18 21:46:26 +0200 |
| commit | 6cceb3cbfacb6f4416e49321a9b63b4ce7a9f036 (patch) | |
| tree | 9d883ada0e6cfb4fd533635885dfb4459f200128 /src/daemon.rs | |
| parent | first public release. (diff) | |
| download | rsplayer-6cceb3cbfacb6f4416e49321a9b63b4ce7a9f036.tar.gz rsplayer-6cceb3cbfacb6f4416e49321a9b63b4ce7a9f036.zip | |
fix for new symphony API and less debug info in release
Diffstat (limited to '')
| -rw-r--r-- | src/daemon.rs | 39 |
1 files changed, 26 insertions, 13 deletions
diff --git a/src/daemon.rs b/src/daemon.rs index 59fc3d8..8b74357 100644 --- a/src/daemon.rs +++ b/src/daemon.rs | |||
| @@ -33,10 +33,10 @@ impl ScrobbleState { | |||
| 33 | .as_secs(); | 33 | .as_secs(); |
| 34 | let title = track.title.clone().unwrap_or_default(); | 34 | let title = track.title.clone().unwrap_or_default(); |
| 35 | let artist = track.artist.clone().unwrap_or_default(); | 35 | let artist = track.artist.clone().unwrap_or_default(); |
| 36 | eprintln!( | 36 | crate::debug_eprintln(format_args!( |
| 37 | "scrobble: tracking start for '{} - {}' (ts={})", | 37 | "scrobble: tracking start for '{} - {}' (ts={})", |
| 38 | artist, title, ts | 38 | artist, title, ts |
| 39 | ); | 39 | )); |
| 40 | self.track = Some(track); | 40 | self.track = Some(track); |
| 41 | self.start_time = Some(Instant::now()); | 41 | self.start_time = Some(Instant::now()); |
| 42 | self.timestamp = Some(ts); | 42 | self.timestamp = Some(ts); |
| @@ -44,7 +44,9 @@ impl ScrobbleState { | |||
| 44 | 44 | ||
| 45 | fn should_scrobble(&self) -> bool { | 45 | fn should_scrobble(&self) -> bool { |
| 46 | let (Some(track), Some(start)) = (&self.track, self.start_time) else { | 46 | let (Some(track), Some(start)) = (&self.track, self.start_time) else { |
| 47 | eprintln!("scrobble: should_scrobble false — no track or start_time"); | 47 | crate::debug_eprintln(format_args!( |
| 48 | "scrobble: should_scrobble false — no track or start_time" | ||
| 49 | )); | ||
| 48 | return false; | 50 | return false; |
| 49 | }; | 51 | }; |
| 50 | let elapsed = start.elapsed().as_secs(); | 52 | let elapsed = start.elapsed().as_secs(); |
| @@ -54,10 +56,10 @@ impl ScrobbleState { | |||
| 54 | .map(|d| (d / 2.0) as u64) | 56 | .map(|d| (d / 2.0) as u64) |
| 55 | .unwrap_or(u64::MAX) | 57 | .unwrap_or(u64::MAX) |
| 56 | .min(240); | 58 | .min(240); |
| 57 | eprintln!( | 59 | crate::debug_eprintln(format_args!( |
| 58 | "scrobble: should_scrobble {} (elapsed={}s threshold={}s duration={:?})", | 60 | "scrobble: should_scrobble {} (elapsed={}s threshold={}s duration={:?})", |
| 59 | result, elapsed, threshold, track.duration_secs | 61 | result, elapsed, threshold, track.duration_secs |
| 60 | ); | 62 | )); |
| 61 | result | 63 | result |
| 62 | } | 64 | } |
| 63 | 65 | ||
| @@ -158,10 +160,10 @@ fn try_scrobble_current(scrobbler: &RwLock<Scrobbler>, state: &mut ScrobbleState | |||
| 158 | let artist = track.artist.as_deref().unwrap_or("(unknown artist)"); | 160 | let artist = track.artist.as_deref().unwrap_or("(unknown artist)"); |
| 159 | let title = track.title.as_deref().unwrap_or("(unknown title)"); | 161 | let title = track.title.as_deref().unwrap_or("(unknown title)"); |
| 160 | let album = track.album.as_deref(); | 162 | let album = track.album.as_deref(); |
| 161 | eprintln!( | 163 | crate::debug_eprintln(format_args!( |
| 162 | "scrobble: sending scrobble for '{} - {}' at ts={}", | 164 | "scrobble: sending scrobble for '{} - {}' at ts={}", |
| 163 | artist, title, ts | 165 | artist, title, ts |
| 164 | ); | 166 | )); |
| 165 | if let Ok(s) = scrobbler.read() { | 167 | if let Ok(s) = scrobbler.read() { |
| 166 | s.scrobble(artist, title, album, ts); | 168 | s.scrobble(artist, title, album, ts); |
| 167 | } | 169 | } |
| @@ -171,10 +173,10 @@ fn try_scrobble_current(scrobbler: &RwLock<Scrobbler>, state: &mut ScrobbleState | |||
| 171 | .as_ref() | 173 | .as_ref() |
| 172 | .and_then(|t| t.title.as_deref()) | 174 | .and_then(|t| t.title.as_deref()) |
| 173 | .unwrap_or("(no track)"); | 175 | .unwrap_or("(no track)"); |
| 174 | eprintln!( | 176 | crate::debug_eprintln(format_args!( |
| 175 | "scrobble: skipping scrobble for '{}' — not enough play time", | 177 | "scrobble: skipping scrobble for '{}' — not enough play time", |
| 176 | title | 178 | title |
| 177 | ); | 179 | )); |
| 178 | } | 180 | } |
| 179 | state.clear(); | 181 | state.clear(); |
| 180 | } | 182 | } |
| @@ -183,7 +185,10 @@ fn send_now_playing(scrobbler: &RwLock<Scrobbler>, track: &Track) { | |||
| 183 | let artist = track.artist.as_deref().unwrap_or("(unknown artist)"); | 185 | let artist = track.artist.as_deref().unwrap_or("(unknown artist)"); |
| 184 | let title = track.title.as_deref().unwrap_or("(unknown title)"); | 186 | let title = track.title.as_deref().unwrap_or("(unknown title)"); |
| 185 | let album = track.album.as_deref(); | 187 | let album = track.album.as_deref(); |
| 186 | eprintln!("scrobble: sending now_playing for '{} - {}'", artist, title); | 188 | crate::debug_eprintln(format_args!( |
| 189 | "scrobble: sending now_playing for '{} - {}'", | ||
| 190 | artist, title | ||
| 191 | )); | ||
| 187 | if let Ok(s) = scrobbler.read() { | 192 | if let Ok(s) = scrobbler.read() { |
| 188 | s.now_playing(artist, title, album); | 193 | s.now_playing(artist, title, album); |
| 189 | } | 194 | } |
| @@ -260,9 +265,17 @@ pub fn start_daemon() -> Result<(), Box<dyn std::error::Error>> { | |||
| 260 | && let Ok(s) = scrobbler.read() | 265 | && let Ok(s) = scrobbler.read() |
| 261 | { | 266 | { |
| 262 | match s.validate_listenbrainz_token() { | 267 | match s.validate_listenbrainz_token() { |
| 263 | Ok(Some(user)) => eprintln!("scrobble: listenbrainz token valid (user: {})", user), | 268 | Ok(Some(user)) => crate::debug_eprintln(format_args!( |
| 264 | Ok(None) => eprintln!("scrobble: listenbrainz token invalid, scrobbling disabled"), | 269 | "scrobble: listenbrainz token valid (user: {})", |
| 265 | Err(e) => eprintln!("scrobble: listenbrainz validation error: {}", e), | 270 | user |
| 271 | )), | ||
| 272 | Ok(None) => crate::debug_eprintln(format_args!( | ||
| 273 | "scrobble: listenbrainz token invalid, scrobbling disabled" | ||
| 274 | )), | ||
| 275 | Err(e) => crate::debug_eprintln(format_args!( | ||
| 276 | "scrobble: listenbrainz validation error: {}", | ||
| 277 | e | ||
| 278 | )), | ||
| 266 | } | 279 | } |
| 267 | } | 280 | } |
| 268 | let scrobble_state = Arc::new(Mutex::new(ScrobbleState::new())); | 281 | let scrobble_state = Arc::new(Mutex::new(ScrobbleState::new())); |
