diff --git a/packages/tourmaline/src/lib/server/enrich.ts b/packages/tourmaline/src/lib/server/enrich.ts index 9feb376..a5e0483 100644 --- a/packages/tourmaline/src/lib/server/enrich.ts +++ b/packages/tourmaline/src/lib/server/enrich.ts @@ -92,6 +92,10 @@ interface MBArtist { genres?: Array<{ name: string; count: number }>; rating?: { value?: number }; "life-span"?: { begin?: string; end?: string; ended?: boolean }; + // `area` (and the `iso-3166-1-codes` it carries) is a core artist field + // returned by the base MusicBrainz artist lookup — no extra `inc=` param + // or additional request is needed to get it. + area?: { name?: string; "iso-3166-1-codes"?: string[] }; } interface MBSearchResult { @@ -136,6 +140,8 @@ async function mbGetArtistInfo(mbId: string): Promise { listenerCount: undefined, playCount: undefined, startYear: isNaN(startYear!) ? undefined : startYear, + area: data.area?.name, + areaCode: data.area?.["iso-3166-1-codes"]?.[0], }; } @@ -315,6 +321,8 @@ export async function enrichArtistBatch( genres: mbInfo.genres?.length ? mbInfo.genres : info.genres, tags: mbInfo.tags?.length ? mbInfo.tags : info.tags, mbId: mbInfo.mbId, + area: mbInfo.area, + areaCode: mbInfo.areaCode, }; } } else { diff --git a/packages/tourmaline/src/lib/types.ts b/packages/tourmaline/src/lib/types.ts index dd4cf32..2f268da 100644 --- a/packages/tourmaline/src/lib/types.ts +++ b/packages/tourmaline/src/lib/types.ts @@ -27,6 +27,10 @@ export interface ArtistInfo { playCount?: number; imageUrl?: string; startYear?: number; + /** MusicBrainz area (country/region of origin), e.g. "United States". */ + area?: string; + /** ISO 3166-1 alpha-2 code for `area`, e.g. "US". */ + areaCode?: string; } export interface GenreEntry {