aboutsummaryrefslogtreecommitdiffstats
path: root/src/daemon.rs
diff options
context:
space:
mode:
authorsalmonik <raisersoft@proton.me>2026-05-18 21:46:26 +0200
committersalmonik <raisersoft@proton.me>2026-05-18 21:46:26 +0200
commit6cceb3cbfacb6f4416e49321a9b63b4ce7a9f036 (patch)
tree9d883ada0e6cfb4fd533635885dfb4459f200128 /src/daemon.rs
parentfirst public release. (diff)
downloadrsplayer-6cceb3cbfacb6f4416e49321a9b63b4ce7a9f036.tar.gz
rsplayer-6cceb3cbfacb6f4416e49321a9b63b4ce7a9f036.zip
fix for new symphony API and less debug info in release
Diffstat (limited to 'src/daemon.rs')
-rw-r--r--src/daemon.rs39
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()));