[bodge]: deal with Jellyfin returning dupliate tracks for album query
This commit is contained in:
parent
729538d885
commit
19a88fea86
1 changed files with 19 additions and 1 deletions
|
@ -445,8 +445,26 @@ const getSongList = async (args: SongListArgs): Promise<SongListResponse> => {
|
||||||
throw new Error('Failed to get song list');
|
throw new Error('Failed to get song list');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let items: z.infer<typeof jfType._response.song>[];
|
||||||
|
|
||||||
|
// Jellyfin Bodge because of code from https://github.com/jellyfin/jellyfin/blob/c566ccb63bf61f9c36743ddb2108a57c65a2519b/Emby.Server.Implementations/Data/SqliteItemRepository.cs#L3622
|
||||||
|
// If the Album ID filter is passed, Jellyfin will search for
|
||||||
|
// 1. the matching album id
|
||||||
|
// 2. An album with the name of the album.
|
||||||
|
// It is this second condition causing issues,
|
||||||
|
if (query.albumIds) {
|
||||||
|
const albumIdSet = new Set(query.albumIds);
|
||||||
|
items = res.body.Items.filter((item) => albumIdSet.has(item.AlbumId));
|
||||||
|
|
||||||
|
if (items.length < res.body.Items.length) {
|
||||||
|
res.body.TotalRecordCount -= res.body.Items.length - items.length;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
items = res.body.Items;
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
items: res.body.Items.map((item) =>
|
items: items.map((item) =>
|
||||||
jfNormalize.song(item, apiClientProps.server, '', query.imageSize),
|
jfNormalize.song(item, apiClientProps.server, '', query.imageSize),
|
||||||
),
|
),
|
||||||
startIndex: query.startIndex,
|
startIndex: query.startIndex,
|
||||||
|
|
Reference in a new issue