Merge pull request #484 from kgarner7/fix-structured-lyrics

[bugfix/enhancement]: Support Navidrome structured lyrics
This commit is contained in:
Jeff 2024-02-13 16:17:24 -08:00 committed by GitHub
commit 83d5fee442
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
17 changed files with 366 additions and 55 deletions

View file

@ -150,6 +150,14 @@ export const contract = c.router({
400: jfType._response.error,
},
},
getServerInfo: {
method: 'GET',
path: 'system/info',
responses: {
200: jfType._response.serverInfo,
400: jfType._response.error,
},
},
getSimilarArtistList: {
method: 'GET',
path: 'artists/:id/similar',

View file

@ -49,6 +49,8 @@ import {
genreListSortMap,
SongDetailArgs,
SongDetailResponse,
ServerInfo,
ServerInfoArgs,
} from '/@/renderer/api/types';
import { jfApiClient } from '/@/renderer/api/jellyfin/jellyfin-api';
import { jfNormalize } from './jellyfin-normalize';
@ -946,6 +948,18 @@ const getSongDetail = async (args: SongDetailArgs): Promise<SongDetailResponse>
return jfNormalize.song(res.body, apiClientProps.server, '');
};
const getServerInfo = async (args: ServerInfoArgs): Promise<ServerInfo> => {
const { apiClientProps } = args;
const res = await jfApiClient(apiClientProps).getServerInfo();
if (res.status !== 200) {
throw new Error('Failed to get server info');
}
return { id: apiClientProps.server?.id, version: res.body.Version };
};
export const jfController = {
addToPlaylist,
authenticate,
@ -965,6 +979,7 @@ export const jfController = {
getPlaylistList,
getPlaylistSongList,
getRandomSongList,
getServerInfo,
getSongDetail,
getSongList,
getTopSongList,

View file

@ -661,6 +661,10 @@ const lyrics = z.object({
Lyrics: z.array(lyricText),
});
const serverInfo = z.object({
Version: z.string(),
});
export const jfType = {
_enum: {
albumArtistList: albumArtistListSort,
@ -714,6 +718,7 @@ export const jfType = {
removeFromPlaylist,
scrobble,
search,
serverInfo,
song,
songList,
topSongsList,