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)