Add discsubtitle for navidrome (#217)

This commit is contained in:
jeffvli 2023-09-22 15:12:23 -07:00
parent 8b0fe69e1c
commit 45b80ac395
6 changed files with 20 additions and 1 deletions

View file

@ -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
? {

View file

@ -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

View file

@ -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(),

View file

@ -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

View file

@ -190,6 +190,7 @@ export type Song = {
container: string | null;
createdAt: string;
discNumber: number;
discSubtitle: string | null;
duration: number;
gain: GainInfo | null;
genres: Genre[];

View file

@ -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);
}