mirror of
https://github.com/informaticker/discord-jellyfin-bot.git
synced 2024-10-18 19:35:04 +02:00
Fix playing albums and playlists (#249)
* Fix retrieving AlbumSearchItem during queueing * Make convertToTracks actually work
This commit is contained in:
parent
56b31c19ee
commit
3e84a44e6e
@ -1,4 +1,4 @@
|
||||
import { SearchHint as JellyfinSearchHint } from '@jellyfin/sdk/lib/generated-client/models';
|
||||
import { BaseItemDto, SearchHint as JellyfinSearchHint } from '@jellyfin/sdk/lib/generated-client/models';
|
||||
|
||||
import { Track } from '../music/Track';
|
||||
import { JellyfinSearchService } from '../../clients/jellyfin/jellyfin.search.service';
|
||||
@ -29,6 +29,24 @@ export class AlbumSearchItem extends SearchItem {
|
||||
);
|
||||
}
|
||||
|
||||
static constructFromBaseItem(baseItem: BaseItemDto) {
|
||||
if (baseItem.Id === undefined || !baseItem.Name || !baseItem.RunTimeTicks) {
|
||||
throw new Error(
|
||||
'Unable to construct search hint from base item, required properties were undefined',
|
||||
);
|
||||
}
|
||||
var artist = ""
|
||||
if(baseItem.AlbumArtist) {
|
||||
artist = baseItem.AlbumArtist + " - "
|
||||
}
|
||||
|
||||
return new AlbumSearchItem(
|
||||
baseItem.Id,
|
||||
trimStringToFixedLength(artist + baseItem.Name, 70),
|
||||
baseItem.RunTimeTicks / 10000,
|
||||
);
|
||||
}
|
||||
|
||||
override async toTracks(
|
||||
searchService: JellyfinSearchService,
|
||||
): Promise<Track[]> {
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { SearchHint as JellyfinSearchHint } from '@jellyfin/sdk/lib/generated-client/models';
|
||||
import { BaseItemDto, SearchHint as JellyfinSearchHint } from '@jellyfin/sdk/lib/generated-client/models';
|
||||
|
||||
import { Track } from '../music/Track';
|
||||
import { JellyfinSearchService } from '../../clients/jellyfin/jellyfin.search.service';
|
||||
@ -26,6 +26,20 @@ export class PlaylistSearchItem extends SearchItem {
|
||||
);
|
||||
}
|
||||
|
||||
static constructFromBaseItem(baseItem: BaseItemDto) {
|
||||
if (baseItem.Id === undefined || !baseItem.Name || !baseItem.RunTimeTicks) {
|
||||
throw new Error(
|
||||
'Unable to construct playlist search hint, required properties were undefined',
|
||||
);
|
||||
}
|
||||
|
||||
return new PlaylistSearchItem(
|
||||
baseItem.Id,
|
||||
trimStringToFixedLength(baseItem.Name, 50),
|
||||
baseItem.RunTimeTicks / 10000,
|
||||
);
|
||||
}
|
||||
|
||||
override async toTracks(
|
||||
searchService: JellyfinSearchService,
|
||||
): Promise<Track[]> {
|
||||
|
@ -9,7 +9,7 @@ export const flatMapTrackItems = (
|
||||
let tracks: Track[] = [];
|
||||
hints.forEach(async (hint) => {
|
||||
const searchedTracks = await hint.toTracks(jellyfinSearchService);
|
||||
tracks = [...tracks, ...searchedTracks];
|
||||
searchedTracks.forEach((track) => tracks.push(track));
|
||||
});
|
||||
return tracks;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user