From 4f4e6e794ae14a2c31fcc9b7c2582c5376c8076b Mon Sep 17 00:00:00 2001 From: Connor Johnstone Date: Wed, 25 Mar 2026 14:04:24 -0400 Subject: [PATCH] added the cleanup, which was missing. also artist lookup first rather than search on import --- src/indexer.rs | 3 ++- src/metadata.rs | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/indexer.rs b/src/indexer.rs index 2cdcca4..b0ee7a8 100644 --- a/src/indexer.rs +++ b/src/indexer.rs @@ -65,9 +65,10 @@ async fn process_file( // Upsert artist (use album_artist if available, fall back to artist) let artist_name = meta.album_artist.as_deref().or(meta.artist.as_deref()); + let artist_mbid = meta.musicbrainz_artist_id.as_deref(); let artist_id = match artist_name { Some(name) if !name.is_empty() => { - Some(queries::artists::upsert(conn, name, None).await?.id) + Some(queries::artists::upsert(conn, name, artist_mbid).await?.id) } _ => None, }; diff --git a/src/metadata.rs b/src/metadata.rs index 6feb438..07c0cee 100644 --- a/src/metadata.rs +++ b/src/metadata.rs @@ -23,6 +23,7 @@ pub struct MusicMetadata { pub codec: Option, pub bitrate: Option, pub musicbrainz_recording_id: Option, + pub musicbrainz_artist_id: Option, } /// Map lofty FileType to a human-readable codec string. @@ -79,6 +80,10 @@ pub fn extract_metadata(path: &Path) -> IndexResult { meta.musicbrainz_recording_id = tag .get_string(&lofty::tag::ItemKey::MusicBrainzRecordingId) .map(|s| s.to_string()); + + meta.musicbrainz_artist_id = tag + .get_string(&lofty::tag::ItemKey::MusicBrainzArtistId) + .map(|s| s.to_string()); } Ok(meta)