fixed up the featured artist thing
This commit is contained in:
@@ -475,6 +475,7 @@ impl MetadataFetcher for LocalMusicBrainzFetcher {
|
||||
secondary_types,
|
||||
first_release_date: row.get(4)?,
|
||||
first_release_mbid: row.get(5)?,
|
||||
featured: false, // Local DB only stores primary-credit releases
|
||||
})
|
||||
})
|
||||
.map_err(|e| DataError::Other(e.to_string()))?
|
||||
|
||||
@@ -345,7 +345,7 @@ impl MetadataFetcher for MusicBrainzFetcher {
|
||||
) -> DataResult<Vec<ReleaseGroupEntry>> {
|
||||
// Fetch album, single, and EP release groups
|
||||
let url = format!(
|
||||
"{BASE_URL}/release-group?artist={artist_mbid}&type=album|single|ep&fmt=json&limit=100"
|
||||
"{BASE_URL}/release-group?artist={artist_mbid}&type=album|single|ep&inc=artist-credits&fmt=json&limit=100"
|
||||
);
|
||||
let resp: MbReleaseGroupResponse = self.get_json(&url).await?;
|
||||
|
||||
@@ -353,15 +353,20 @@ impl MetadataFetcher for MusicBrainzFetcher {
|
||||
.release_groups
|
||||
.unwrap_or_default()
|
||||
.into_iter()
|
||||
.map(|rg| ReleaseGroupEntry {
|
||||
mbid: rg.id,
|
||||
title: rg.title,
|
||||
primary_type: rg.primary_type,
|
||||
secondary_types: rg.secondary_types.unwrap_or_default(),
|
||||
first_release_date: rg.first_release_date,
|
||||
first_release_mbid: rg
|
||||
.releases
|
||||
.and_then(|r| r.into_iter().next().map(|rel| rel.id)),
|
||||
.map(|rg| {
|
||||
let primary = extract_artist_credit(&rg.artist_credit);
|
||||
let featured = primary.1.as_deref() != Some(artist_mbid);
|
||||
ReleaseGroupEntry {
|
||||
mbid: rg.id,
|
||||
title: rg.title,
|
||||
primary_type: rg.primary_type,
|
||||
secondary_types: rg.secondary_types.unwrap_or_default(),
|
||||
first_release_date: rg.first_release_date,
|
||||
first_release_mbid: rg
|
||||
.releases
|
||||
.and_then(|r| r.into_iter().next().map(|rel| rel.id)),
|
||||
featured,
|
||||
}
|
||||
})
|
||||
.collect())
|
||||
}
|
||||
@@ -538,6 +543,8 @@ struct MbReleaseGroup {
|
||||
#[serde(rename = "first-release-date")]
|
||||
first_release_date: Option<String>,
|
||||
releases: Option<Vec<MbReleaseGroupRelease>>,
|
||||
#[serde(rename = "artist-credit")]
|
||||
artist_credit: Option<Vec<MbArtistCredit>>,
|
||||
}
|
||||
|
||||
#[derive(Deserialize)]
|
||||
|
||||
@@ -96,6 +96,9 @@ pub struct ReleaseGroupEntry {
|
||||
pub first_release_date: Option<String>,
|
||||
/// MBID of the first release in this group (for fetching tracks).
|
||||
pub first_release_mbid: Option<String>,
|
||||
/// True if the queried artist is not the primary credit on this release group.
|
||||
#[serde(default)]
|
||||
pub featured: bool,
|
||||
}
|
||||
|
||||
/// A track within a release.
|
||||
|
||||
Reference in New Issue
Block a user