diff --git a/src/renderer/api/jellyfin/jellyfin-normalize.ts b/src/renderer/api/jellyfin/jellyfin-normalize.ts index 12e65430..4d844174 100644 --- a/src/renderer/api/jellyfin/jellyfin-normalize.ts +++ b/src/renderer/api/jellyfin/jellyfin-normalize.ts @@ -150,6 +150,7 @@ const normalizeSong = ( container: (item.MediaSources && item.MediaSources[0]?.Container) || null, createdAt: item.DateCreated, discNumber: (item.ParentIndexNumber && item.ParentIndexNumber) || 1, + discSubtitle: null, duration: item.RunTimeTicks / 10000, gain: item.LUFS ? { diff --git a/src/renderer/api/navidrome/navidrome-normalize.ts b/src/renderer/api/navidrome/navidrome-normalize.ts index 17ba9508..90aa9bc8 100644 --- a/src/renderer/api/navidrome/navidrome-normalize.ts +++ b/src/renderer/api/navidrome/navidrome-normalize.ts @@ -88,6 +88,7 @@ const normalizeSong = ( container: item.suffix, createdAt: item.createdAt.split('T')[0], discNumber: item.discNumber, + discSubtitle: item.discSubtitle ? item.discSubtitle : null, duration: item.duration * 1000, gain: item.rgAlbumGain || item.rgTrackGain diff --git a/src/renderer/api/navidrome/navidrome-types.ts b/src/renderer/api/navidrome/navidrome-types.ts index 7260053c..2b98e7d7 100644 --- a/src/renderer/api/navidrome/navidrome-types.ts +++ b/src/renderer/api/navidrome/navidrome-types.ts @@ -181,22 +181,30 @@ const song = z.object({ bitRate: z.number(), bookmarkPosition: z.number(), bpm: z.number().optional(), + catalogNum: z.string().optional(), channels: z.number().optional(), comment: z.string().optional(), compilation: z.boolean(), createdAt: z.string(), discNumber: z.number(), + discSubtitle: z.string().optional(), duration: z.number(), + embedArtPath: z.string().optional(), + externalInfoUpdatedAt: z.string().optional(), + externalUrl: z.string().optional(), fullText: z.string(), genre: z.string(), genres: z.array(genre), hasCoverArt: z.boolean(), id: z.string(), + imageFiles: z.string().optional(), + largeImageUrl: z.string().optional(), lyrics: z.string().optional(), mbzAlbumArtistId: z.string().optional(), mbzAlbumId: z.string().optional(), mbzArtistId: z.string().optional(), mbzTrackId: z.string().optional(), + mediumImageUrl: z.string().optional(), orderAlbumArtistName: z.string(), orderAlbumName: z.string(), orderArtistName: z.string(), @@ -210,6 +218,7 @@ const song = z.object({ rgTrackGain: z.number().optional(), rgTrackPeak: z.number().optional(), size: z.number(), + smallImageUrl: z.string().optional(), sortAlbumArtistName: z.string(), sortArtistName: z.string(), starred: z.boolean(), diff --git a/src/renderer/api/subsonic/subsonic-normalize.ts b/src/renderer/api/subsonic/subsonic-normalize.ts index cb1a1569..881e7fef 100644 --- a/src/renderer/api/subsonic/subsonic-normalize.ts +++ b/src/renderer/api/subsonic/subsonic-normalize.ts @@ -67,6 +67,7 @@ const normalizeSong = ( container: item.contentType, createdAt: item.created, discNumber: item.discNumber || 1, + discSubtitle: null, duration: item.duration ? item.duration * 1000 : 0, gain: null, genres: item.genre diff --git a/src/renderer/api/types.ts b/src/renderer/api/types.ts index fcac9303..551f5cbe 100644 --- a/src/renderer/api/types.ts +++ b/src/renderer/api/types.ts @@ -190,6 +190,7 @@ export type Song = { container: string | null; createdAt: string; discNumber: number; + discSubtitle: string | null; duration: number; gain: GainInfo | null; genres: Genre[]; diff --git a/src/renderer/features/albums/components/album-detail-content.tsx b/src/renderer/features/albums/components/album-detail-content.tsx index a1e33482..04ac7361 100644 --- a/src/renderer/features/albums/components/album-detail-content.tsx +++ b/src/renderer/features/albums/components/album-detail-content.tsx @@ -88,9 +88,15 @@ export const AlbumDetailContent = ({ tableRef, background }: AlbumDetailContentP const songsByDiscNumber = detailQuery.data?.songs.filter( (s) => s.discNumber === discNumber, ); + + const discSubtitle = songsByDiscNumber?.[0]?.discSubtitle; + const discName = [`Disc ${discNumber}`.toLocaleUpperCase(), discSubtitle] + .filter(Boolean) + .join(': '); + rowData.push({ id: `disc-${discNumber}`, - name: `Disc ${discNumber}`.toLocaleUpperCase(), + name: discName, }); rowData.push(...songsByDiscNumber); }