From 7a77b9bfe7b4a3c18c35b6a17856476160563d6a Mon Sep 17 00:00:00 2001 From: Benjamin Date: Mon, 22 Dec 2025 21:08:35 -0600 Subject: [PATCH] feat: show record label copyright at bottom of track listing (#1421) * show record label copyright at bottom of track listing * add recordLabels support for Jellyfin --------- Co-authored-by: jeffvli --- src/renderer/api/jellyfin/jellyfin-controller.ts | 2 +- .../albums/components/album-detail-content.tsx | 13 ++++++++++++- src/shared/api/jellyfin/jellyfin-normalize.ts | 2 +- src/shared/api/jellyfin/jellyfin-types.ts | 6 ++++++ 4 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/renderer/api/jellyfin/jellyfin-controller.ts b/src/renderer/api/jellyfin/jellyfin-controller.ts index 4bdf93c22..957de1493 100644 --- a/src/renderer/api/jellyfin/jellyfin-controller.ts +++ b/src/renderer/api/jellyfin/jellyfin-controller.ts @@ -360,7 +360,7 @@ export const JellyfinController: InternalControllerEndpoint = { }, query: { ...artistQuery, - Fields: 'People, Tags', + Fields: 'People, Tags, Studios', GenreIds: query.genreIds ? query.genreIds.join(',') : undefined, IncludeItemTypes: 'MusicAlbum', IsFavorite: query.favorite, diff --git a/src/renderer/features/albums/components/album-detail-content.tsx b/src/renderer/features/albums/components/album-detail-content.tsx index 398827f73..7f3bd6178 100644 --- a/src/renderer/features/albums/components/album-detail-content.tsx +++ b/src/renderer/features/albums/components/album-detail-content.tsx @@ -362,6 +362,9 @@ export const AlbumDetailContent = () => { const comment = detailQuery?.data?.comment; + const releaseYear = detailQuery?.data?.releaseYear; + const labels = detailQuery?.data?.recordLabels; + const mbzId = detailQuery?.data?.mbzId; return ( @@ -396,7 +399,15 @@ export const AlbumDetailContent = () => { - + {labels && ( + + {labels.map((label) => ( + + ℗{releaseYear ? ` ${releaseYear}` : ''} {label} + + ))} + + )} {cq.height || cq.width ? ( }> diff --git a/src/shared/api/jellyfin/jellyfin-normalize.ts b/src/shared/api/jellyfin/jellyfin-normalize.ts index 635297961..57c79343f 100644 --- a/src/shared/api/jellyfin/jellyfin-normalize.ts +++ b/src/shared/api/jellyfin/jellyfin-normalize.ts @@ -323,7 +323,7 @@ const normalizeAlbum = ( originalDate: null, participants: getPeople(item), playCount: item.UserData?.PlayCount || 0, - recordLabels: [], + recordLabels: item.Studios?.map((entry) => entry.Name) || [], releaseDate: item.PremiereDate || null, releaseTypes: [], releaseYear: item.ProductionYear || null, diff --git a/src/shared/api/jellyfin/jellyfin-types.ts b/src/shared/api/jellyfin/jellyfin-types.ts index 1c261e06a..ef24db32b 100644 --- a/src/shared/api/jellyfin/jellyfin-types.ts +++ b/src/shared/api/jellyfin/jellyfin-types.ts @@ -525,6 +525,11 @@ const albumArtist = z.object({ UserData: userData.optional(), }); +const studio = z.object({ + Id: z.string(), + Name: z.string(), +}); + const albumDetailParameters = baseParameters; const album = z.object({ @@ -555,6 +560,7 @@ const album = z.object({ RunTimeTicks: z.number(), ServerId: z.string(), Songs: z.array(song).optional(), // This is not a native Jellyfin property -- this is used for combined album detail + Studios: z.array(studio), Tags: z.string().array().optional(), Type: z.string(), UserData: userData.optional(),