+2
crates/scrobbler/src/musicbrainz/mod.rs
+2
crates/scrobbler/src/musicbrainz/mod.rs
+2
-1
crates/scrobbler/src/scrobbler.rs
+2
-1
crates/scrobbler/src/scrobbler.rs
···
695
695
return Ok(None);
696
696
}
697
697
let recording = recording.unwrap();
698
-
let result = mb_client.get_recording(&recording.id).await?;
698
+
let mut result = mb_client.get_recording(&recording.id).await?;
699
699
tracing::info!("Musicbrainz (recording)");
700
+
result.releases = Some(vec![release]);
700
701
return Ok(Some(result));
701
702
}
702
703
+3
-3
crates/scrobbler/src/types.rs
+3
-3
crates/scrobbler/src/types.rs
···
77
77
.first()
78
78
.map(|release| release.title.clone())
79
79
.unwrap_or_default();
80
+
let release_date = releases.first().and_then(|release| release.date.clone());
80
81
Track {
81
82
title: recording.title.clone(),
82
83
album,
83
84
artist: artist_credit,
84
85
album_artist,
85
86
duration: recording.length.unwrap_or_default(),
86
-
year: recording
87
-
.first_release_date
87
+
year: release_date
88
88
.as_ref()
89
89
.and_then(|date| date.split('-').next())
90
90
.and_then(|year| year.parse::<u32>().ok()),
91
-
release_date: recording.first_release_date.clone(),
91
+
release_date: release_date.clone(),
92
92
track_number: releases
93
93
.first()
94
94
.and_then(|release| {
+3
crates/webscrobbler/src/musicbrainz/mod.rs
+3
crates/webscrobbler/src/musicbrainz/mod.rs
···
1
+
use anyhow::Error;
2
+
1
3
use crate::musicbrainz::{recording::Recordings, release::Release};
2
4
use std::cmp::Ordering;
3
5
···
12
14
return None;
13
15
}
14
16
17
+
// Remove the single filtering - this was causing the issue
15
18
let mut candidates: Vec<&Release> = releases.iter().collect();
16
19
17
20
if candidates.is_empty() {
+2
-1
crates/webscrobbler/src/scrobbler.rs
+2
-1
crates/webscrobbler/src/scrobbler.rs
···
210
210
return Ok(None);
211
211
}
212
212
let recording = recording.unwrap();
213
-
let result = mb_client.get_recording(&recording.id).await?;
213
+
let mut result = mb_client.get_recording(&recording.id).await?;
214
214
tracing::info!("Musicbrainz (recording)");
215
+
result.releases = Some(vec![release]);
215
216
return Ok(Some(result));
216
217
}
217
218
+3
-3
crates/webscrobbler/src/types.rs
+3
-3
crates/webscrobbler/src/types.rs
···
161
161
.map(|credit| credit.name.clone())
162
162
.unwrap_or_default();
163
163
let releases = recording.releases.unwrap_or_default();
164
+
let release_date = releases.first().and_then(|release| release.date.clone());
164
165
let album_artist = releases
165
166
.first()
166
167
.and_then(|release| {
···
178
179
artist: artist_credit,
179
180
album_artist,
180
181
duration: recording.length.unwrap_or_default(),
181
-
year: recording
182
-
.first_release_date
182
+
year: release_date
183
183
.as_ref()
184
184
.and_then(|date| date.split('-').next())
185
185
.and_then(|year| year.parse::<u32>().ok()),
186
-
release_date: recording.first_release_date.clone(),
186
+
release_date: release_date.clone(),
187
187
track_number: releases
188
188
.first()
189
189
.and_then(|release| {