Sped up artist enrichment at least somewhat
This commit is contained in:
@@ -89,24 +89,39 @@ pub async fn add_artist(
|
||||
}
|
||||
};
|
||||
|
||||
tracing::info!(name = %resolved_name, mbid = %artist_mbid, "fetching discography");
|
||||
tracing::info!(name = %resolved_name, mbid = %artist_mbid, "fetching discography (release groups)");
|
||||
|
||||
let releases = provider
|
||||
.get_artist_releases(&artist_mbid, 100)
|
||||
let release_groups = provider
|
||||
.get_artist_release_groups(&artist_mbid)
|
||||
.await
|
||||
.map_err(|e| WatchError::Other(format!("failed to fetch discography: {e}")))?;
|
||||
.map_err(|e| WatchError::Other(format!("failed to fetch release groups: {e}")))?;
|
||||
|
||||
tracing::info!(count = releases.len(), "found releases");
|
||||
tracing::info!(count = release_groups.len(), "found release groups");
|
||||
|
||||
let mut summary = AddSummary::default();
|
||||
|
||||
for release in &releases {
|
||||
tracing::info!(title = %release.title, mbid = %release.mbid, "fetching tracks");
|
||||
for rg in &release_groups {
|
||||
// Resolve a concrete release MBID from the release group
|
||||
let release_mbid = if let Some(ref rid) = rg.first_release_mbid {
|
||||
rid.clone()
|
||||
} else {
|
||||
// Browse releases for this release group to find a concrete release
|
||||
match provider.resolve_release_from_group(&rg.mbid).await {
|
||||
Ok(rid) => rid,
|
||||
Err(e) => {
|
||||
tracing::warn!(rg = %rg.title, rg_id = %rg.mbid, error = %e, "failed to resolve release from group");
|
||||
summary.errors += 1;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
let tracks = match provider.get_release_tracks(&release.mbid).await {
|
||||
tracing::info!(title = %rg.title, release_mbid = %release_mbid, "fetching tracks for release group");
|
||||
|
||||
let tracks = match provider.get_release_tracks(&release_mbid).await {
|
||||
Ok(t) => t,
|
||||
Err(e) => {
|
||||
tracing::warn!(release = %release.title, error = %e, "failed to fetch tracks");
|
||||
tracing::warn!(rg = %rg.title, error = %e, "failed to fetch tracks");
|
||||
summary.errors += 1;
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -113,7 +113,24 @@ impl MetadataProvider for MockProvider {
|
||||
&self,
|
||||
_artist_mbid: &str,
|
||||
) -> DataResult<Vec<shanty_tag::provider::ReleaseGroupEntry>> {
|
||||
Ok(vec![])
|
||||
Ok(vec![ReleaseGroupEntry {
|
||||
mbid: "rg-123".into(),
|
||||
title: "Test Album".into(),
|
||||
primary_type: Some("Album".into()),
|
||||
secondary_types: vec![],
|
||||
first_release_date: Some("2024".into()),
|
||||
first_release_mbid: Some("release-123".into()),
|
||||
}])
|
||||
}
|
||||
|
||||
async fn resolve_release_from_group(&self, release_group_mbid: &str) -> DataResult<String> {
|
||||
if release_group_mbid == "rg-123" {
|
||||
Ok("release-123".into())
|
||||
} else {
|
||||
Err(shanty_data::DataError::Other(format!(
|
||||
"no releases for release-group {release_group_mbid}"
|
||||
)))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user