mirror of
https://github.com/jeffvli/feishin.git
synced 2026-05-10 04:30:25 +02:00
refactor jellyfin field properties and include ProviderIds
This commit is contained in:
@@ -53,6 +53,18 @@ const VERSION_INFO: VersionInfo = [
|
|||||||
['10.0.0', { [ServerFeature.TAGS]: [1] }],
|
['10.0.0', { [ServerFeature.TAGS]: [1] }],
|
||||||
];
|
];
|
||||||
|
|
||||||
|
const JF_FIELDS = {
|
||||||
|
ALBUM_ARTIST_DETAIL: 'Genres, Overview, SortName, ProviderIds',
|
||||||
|
ALBUM_ARTIST_LIST: 'Genres, DateCreated, ExternalUrls, Overview, SortName, ProviderIds',
|
||||||
|
ALBUM_DETAIL: 'Genres, DateCreated, ChildCount, People, Tags, ProviderIds',
|
||||||
|
ALBUM_LIST: 'People, Tags, Studios, SortName, UserData, ProviderIds',
|
||||||
|
FOLDER: 'Genres, DateCreated, MediaSources, UserData, ParentId',
|
||||||
|
GENRE: 'ItemCounts',
|
||||||
|
PLAYLIST_DETAIL: 'Genres, DateCreated, MediaSources, ChildCount, ParentId, SortName',
|
||||||
|
PLAYLIST_LIST: 'ChildCount, Genres, DateCreated, ParentId, Overview',
|
||||||
|
SONG: 'Genres, DateCreated, MediaSources, ParentId, People, Tags, SortName, UserData, ProviderIds',
|
||||||
|
} as const;
|
||||||
|
|
||||||
export const JellyfinController: InternalControllerEndpoint = {
|
export const JellyfinController: InternalControllerEndpoint = {
|
||||||
addToPlaylist: async (args) => {
|
addToPlaylist: async (args) => {
|
||||||
const { apiClientProps, body, query } = args;
|
const { apiClientProps, body, query } = args;
|
||||||
@@ -230,7 +242,7 @@ export const JellyfinController: InternalControllerEndpoint = {
|
|||||||
userId: apiClientProps.server?.userId,
|
userId: apiClientProps.server?.userId,
|
||||||
},
|
},
|
||||||
query: {
|
query: {
|
||||||
Fields: 'Genres, Overview, SortName',
|
Fields: JF_FIELDS.ALBUM_ARTIST_DETAIL,
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
jfApiClient(apiClientProps).getSimilarArtistList({
|
jfApiClient(apiClientProps).getSimilarArtistList({
|
||||||
@@ -257,7 +269,7 @@ export const JellyfinController: InternalControllerEndpoint = {
|
|||||||
|
|
||||||
const res = await jfApiClient(apiClientProps).getAlbumArtistList({
|
const res = await jfApiClient(apiClientProps).getAlbumArtistList({
|
||||||
query: {
|
query: {
|
||||||
Fields: 'Genres, DateCreated, ExternalUrls, Overview, SortName',
|
Fields: JF_FIELDS.ALBUM_ARTIST_LIST,
|
||||||
ImageTypeLimit: 1,
|
ImageTypeLimit: 1,
|
||||||
Limit: query.limit,
|
Limit: query.limit,
|
||||||
ParentId: getLibraryId(query.musicFolderId),
|
ParentId: getLibraryId(query.musicFolderId),
|
||||||
@@ -300,7 +312,7 @@ export const JellyfinController: InternalControllerEndpoint = {
|
|||||||
userId: apiClientProps.server.userId,
|
userId: apiClientProps.server.userId,
|
||||||
},
|
},
|
||||||
query: {
|
query: {
|
||||||
Fields: 'Genres, DateCreated, ChildCount, People, Tags',
|
Fields: JF_FIELDS.ALBUM_DETAIL,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -309,7 +321,7 @@ export const JellyfinController: InternalControllerEndpoint = {
|
|||||||
userId: apiClientProps.server.userId,
|
userId: apiClientProps.server.userId,
|
||||||
},
|
},
|
||||||
query: {
|
query: {
|
||||||
Fields: 'Genres, DateCreated, MediaSources, ParentId, People, Tags, SortName',
|
Fields: JF_FIELDS.SONG,
|
||||||
IncludeItemTypes: 'Audio',
|
IncludeItemTypes: 'Audio',
|
||||||
ParentId: query.id,
|
ParentId: query.id,
|
||||||
SortBy: 'ParentIndexNumber,IndexNumber,SortName',
|
SortBy: 'ParentIndexNumber,IndexNumber,SortName',
|
||||||
@@ -367,7 +379,7 @@ export const JellyfinController: InternalControllerEndpoint = {
|
|||||||
},
|
},
|
||||||
query: {
|
query: {
|
||||||
...artistQuery,
|
...artistQuery,
|
||||||
Fields: 'People, Tags, Studios, SortName',
|
Fields: JF_FIELDS.ALBUM_LIST,
|
||||||
GenreIds: query.genreIds ? query.genreIds.join(',') : undefined,
|
GenreIds: query.genreIds ? query.genreIds.join(',') : undefined,
|
||||||
IncludeItemTypes: 'MusicAlbum',
|
IncludeItemTypes: 'MusicAlbum',
|
||||||
IsFavorite: query.favorite,
|
IsFavorite: query.favorite,
|
||||||
@@ -403,7 +415,7 @@ export const JellyfinController: InternalControllerEndpoint = {
|
|||||||
|
|
||||||
const res = await jfApiClient(apiClientProps).getArtistList({
|
const res = await jfApiClient(apiClientProps).getArtistList({
|
||||||
query: {
|
query: {
|
||||||
Fields: 'Genres, DateCreated, ExternalUrls, Overview, SortName',
|
Fields: JF_FIELDS.ALBUM_ARTIST_LIST,
|
||||||
ImageTypeLimit: 1,
|
ImageTypeLimit: 1,
|
||||||
Limit: query.limit,
|
Limit: query.limit,
|
||||||
ParentId: getLibraryId(query.musicFolderId),
|
ParentId: getLibraryId(query.musicFolderId),
|
||||||
@@ -442,7 +454,7 @@ export const JellyfinController: InternalControllerEndpoint = {
|
|||||||
itemId: query.artistId,
|
itemId: query.artistId,
|
||||||
},
|
},
|
||||||
query: {
|
query: {
|
||||||
Fields: 'Genres, DateCreated, MediaSources, ParentId, SortName',
|
Fields: JF_FIELDS.SONG,
|
||||||
Limit: query.count,
|
Limit: query.count,
|
||||||
UserId: apiClientProps.server?.userId || undefined,
|
UserId: apiClientProps.server?.userId || undefined,
|
||||||
},
|
},
|
||||||
@@ -567,7 +579,7 @@ export const JellyfinController: InternalControllerEndpoint = {
|
|||||||
userId,
|
userId,
|
||||||
},
|
},
|
||||||
query: {
|
query: {
|
||||||
Fields: 'Genres, DateCreated, MediaSources, UserData, ParentId',
|
Fields: JF_FIELDS.FOLDER,
|
||||||
ParentId: query.id,
|
ParentId: query.id,
|
||||||
SortBy: query.sortBy
|
SortBy: query.sortBy
|
||||||
? (songListSortMap.jellyfin[query.sortBy] as string) || 'SortName'
|
? (songListSortMap.jellyfin[query.sortBy] as string) || 'SortName'
|
||||||
@@ -596,7 +608,7 @@ export const JellyfinController: InternalControllerEndpoint = {
|
|||||||
userId,
|
userId,
|
||||||
},
|
},
|
||||||
query: {
|
query: {
|
||||||
Fields: 'Genres, DateCreated, MediaSources, UserData, ParentId',
|
Fields: JF_FIELDS.FOLDER,
|
||||||
ParentId: parentId,
|
ParentId: parentId,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
@@ -683,7 +695,7 @@ export const JellyfinController: InternalControllerEndpoint = {
|
|||||||
const res = await jfApiClient(apiClientProps).getGenreList({
|
const res = await jfApiClient(apiClientProps).getGenreList({
|
||||||
query: {
|
query: {
|
||||||
EnableTotalRecordCount: true,
|
EnableTotalRecordCount: true,
|
||||||
Fields: 'ItemCounts',
|
Fields: JF_FIELDS.GENRE,
|
||||||
Limit: query.limit === -1 ? undefined : query.limit,
|
Limit: query.limit === -1 ? undefined : query.limit,
|
||||||
ParentId: getLibraryId(query.musicFolderId),
|
ParentId: getLibraryId(query.musicFolderId),
|
||||||
Recursive: true,
|
Recursive: true,
|
||||||
@@ -798,7 +810,7 @@ export const JellyfinController: InternalControllerEndpoint = {
|
|||||||
userId: apiClientProps.server?.userId,
|
userId: apiClientProps.server?.userId,
|
||||||
},
|
},
|
||||||
query: {
|
query: {
|
||||||
Fields: 'Genres, DateCreated, MediaSources, ChildCount, ParentId, SortName',
|
Fields: JF_FIELDS.PLAYLIST_DETAIL,
|
||||||
Ids: query.id,
|
Ids: query.id,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
@@ -821,7 +833,7 @@ export const JellyfinController: InternalControllerEndpoint = {
|
|||||||
userId: apiClientProps.server?.userId,
|
userId: apiClientProps.server?.userId,
|
||||||
},
|
},
|
||||||
query: {
|
query: {
|
||||||
Fields: 'ChildCount, Genres, DateCreated, ParentId, Overview',
|
Fields: JF_FIELDS.PLAYLIST_LIST,
|
||||||
IncludeItemTypes: 'Playlist',
|
IncludeItemTypes: 'Playlist',
|
||||||
Limit: query.limit,
|
Limit: query.limit,
|
||||||
Recursive: true,
|
Recursive: true,
|
||||||
@@ -859,7 +871,7 @@ export const JellyfinController: InternalControllerEndpoint = {
|
|||||||
id: query.id,
|
id: query.id,
|
||||||
},
|
},
|
||||||
query: {
|
query: {
|
||||||
Fields: 'Genres, DateCreated, MediaSources, UserData, ParentId, People, Tags, SortName',
|
Fields: JF_FIELDS.SONG,
|
||||||
IncludeItemTypes: 'Audio',
|
IncludeItemTypes: 'Audio',
|
||||||
UserId: apiClientProps.server?.userId,
|
UserId: apiClientProps.server?.userId,
|
||||||
},
|
},
|
||||||
@@ -906,7 +918,7 @@ export const JellyfinController: InternalControllerEndpoint = {
|
|||||||
userId: apiClientProps.server?.userId,
|
userId: apiClientProps.server?.userId,
|
||||||
},
|
},
|
||||||
query: {
|
query: {
|
||||||
Fields: 'Genres, DateCreated, MediaSources, ParentId, People, Tags, SortName',
|
Fields: JF_FIELDS.SONG,
|
||||||
GenreIds: query.genre ? query.genre : undefined,
|
GenreIds: query.genre ? query.genre : undefined,
|
||||||
IncludeItemTypes: 'Audio',
|
IncludeItemTypes: 'Audio',
|
||||||
IsPlayed:
|
IsPlayed:
|
||||||
@@ -978,7 +990,7 @@ export const JellyfinController: InternalControllerEndpoint = {
|
|||||||
itemId: query.songId,
|
itemId: query.songId,
|
||||||
},
|
},
|
||||||
query: {
|
query: {
|
||||||
Fields: 'Genres, DateCreated, MediaSources, ParentId, SortName',
|
Fields: JF_FIELDS.SONG,
|
||||||
Limit: query.count,
|
Limit: query.count,
|
||||||
UserId: apiClientProps.server?.userId || undefined,
|
UserId: apiClientProps.server?.userId || undefined,
|
||||||
},
|
},
|
||||||
@@ -1011,7 +1023,7 @@ export const JellyfinController: InternalControllerEndpoint = {
|
|||||||
itemId: query.songId,
|
itemId: query.songId,
|
||||||
},
|
},
|
||||||
query: {
|
query: {
|
||||||
Fields: 'Genres, DateCreated, MediaSources, ParentId, SortName',
|
Fields: JF_FIELDS.SONG,
|
||||||
Limit: query.count,
|
Limit: query.count,
|
||||||
UserId: apiClientProps.server?.userId || undefined,
|
UserId: apiClientProps.server?.userId || undefined,
|
||||||
},
|
},
|
||||||
@@ -1096,7 +1108,7 @@ export const JellyfinController: InternalControllerEndpoint = {
|
|||||||
query: {
|
query: {
|
||||||
AlbumIds: albumIdsFilter,
|
AlbumIds: albumIdsFilter,
|
||||||
ArtistIds: artistIdsFilter,
|
ArtistIds: artistIdsFilter,
|
||||||
Fields: 'Genres, DateCreated, MediaSources, ParentId, People, Tags, SortName',
|
Fields: JF_FIELDS.SONG,
|
||||||
GenreIds: query.genreIds?.join(','),
|
GenreIds: query.genreIds?.join(','),
|
||||||
IncludeItemTypes: 'Audio',
|
IncludeItemTypes: 'Audio',
|
||||||
IsFavorite: query.favorite,
|
IsFavorite: query.favorite,
|
||||||
@@ -1131,7 +1143,7 @@ export const JellyfinController: InternalControllerEndpoint = {
|
|||||||
query: {
|
query: {
|
||||||
AlbumIds: albumIdsFilter,
|
AlbumIds: albumIdsFilter,
|
||||||
ArtistIds: artistIdsFilter,
|
ArtistIds: artistIdsFilter,
|
||||||
Fields: 'Genres, DateCreated, MediaSources, ParentId, People, Tags, SortName',
|
Fields: JF_FIELDS.SONG,
|
||||||
GenreIds: query.genreIds?.join(','),
|
GenreIds: query.genreIds?.join(','),
|
||||||
IncludeItemTypes: 'Audio',
|
IncludeItemTypes: 'Audio',
|
||||||
IsFavorite: query.favorite,
|
IsFavorite: query.favorite,
|
||||||
@@ -1289,11 +1301,7 @@ export const JellyfinController: InternalControllerEndpoint = {
|
|||||||
},
|
},
|
||||||
query: {
|
query: {
|
||||||
ArtistIds: query.artistId,
|
ArtistIds: query.artistId,
|
||||||
Fields:
|
Fields: JF_FIELDS.SONG,
|
||||||
type === 'personal'
|
|
||||||
? 'Genres, DateCreated, MediaSources, ParentId, SortName, UserData'
|
|
||||||
: 'Genres, DateCreated, MediaSources, ParentId, SortName',
|
|
||||||
|
|
||||||
IncludeItemTypes: 'Audio',
|
IncludeItemTypes: 'Audio',
|
||||||
Limit: query.limit,
|
Limit: query.limit,
|
||||||
Recursive: true,
|
Recursive: true,
|
||||||
@@ -1408,7 +1416,7 @@ export const JellyfinController: InternalControllerEndpoint = {
|
|||||||
id: query.id,
|
id: query.id,
|
||||||
},
|
},
|
||||||
query: {
|
query: {
|
||||||
Fields: 'Genres, DateCreated, MediaSources, UserData, ParentId, People, Tags, SortName',
|
Fields: JF_FIELDS.SONG,
|
||||||
IncludeItemTypes: 'Audio',
|
IncludeItemTypes: 'Audio',
|
||||||
UserId: apiClientProps.server?.userId,
|
UserId: apiClientProps.server?.userId,
|
||||||
},
|
},
|
||||||
@@ -1434,7 +1442,7 @@ export const JellyfinController: InternalControllerEndpoint = {
|
|||||||
userId: apiClientProps.server?.userId,
|
userId: apiClientProps.server?.userId,
|
||||||
},
|
},
|
||||||
query: {
|
query: {
|
||||||
Fields: 'Genres, DateCreated, MediaSources, ChildCount, ParentId, SortName',
|
Fields: JF_FIELDS.PLAYLIST_DETAIL,
|
||||||
Ids: query.id,
|
Ids: query.id,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
@@ -1592,7 +1600,7 @@ export const JellyfinController: InternalControllerEndpoint = {
|
|||||||
},
|
},
|
||||||
query: {
|
query: {
|
||||||
EnableTotalRecordCount: true,
|
EnableTotalRecordCount: true,
|
||||||
Fields: 'People, Tags, SortName',
|
Fields: JF_FIELDS.ALBUM_LIST,
|
||||||
ImageTypeLimit: 1,
|
ImageTypeLimit: 1,
|
||||||
IncludeItemTypes: 'MusicAlbum',
|
IncludeItemTypes: 'MusicAlbum',
|
||||||
Limit: query.albumLimit,
|
Limit: query.albumLimit,
|
||||||
@@ -1615,7 +1623,7 @@ export const JellyfinController: InternalControllerEndpoint = {
|
|||||||
const res = await jfApiClient(apiClientProps).getAlbumArtistList({
|
const res = await jfApiClient(apiClientProps).getAlbumArtistList({
|
||||||
query: {
|
query: {
|
||||||
EnableTotalRecordCount: true,
|
EnableTotalRecordCount: true,
|
||||||
Fields: 'Genres, DateCreated, ExternalUrls, Overview',
|
Fields: JF_FIELDS.ALBUM_ARTIST_LIST,
|
||||||
ImageTypeLimit: 1,
|
ImageTypeLimit: 1,
|
||||||
IncludeArtists: true,
|
IncludeArtists: true,
|
||||||
Limit: query.albumArtistLimit,
|
Limit: query.albumArtistLimit,
|
||||||
@@ -1640,7 +1648,7 @@ export const JellyfinController: InternalControllerEndpoint = {
|
|||||||
},
|
},
|
||||||
query: {
|
query: {
|
||||||
EnableTotalRecordCount: true,
|
EnableTotalRecordCount: true,
|
||||||
Fields: 'Genres, DateCreated, MediaSources, ParentId, People, Tags, SortName',
|
Fields: JF_FIELDS.SONG,
|
||||||
IncludeItemTypes: 'Audio',
|
IncludeItemTypes: 'Audio',
|
||||||
Limit: query.songLimit,
|
Limit: query.songLimit,
|
||||||
Recursive: true,
|
Recursive: true,
|
||||||
|
|||||||
Reference in New Issue
Block a user