add "shuffle in order" playback order for multi-collections (#338)

* add "shuffle in order" option for multi-collections

* use balanced shuffle instead of random
This commit is contained in:
Jason Dove
2021-08-21 12:47:22 -05:00
committed by GitHub
parent d3fc820aef
commit 32fdb414fa
9 changed files with 254 additions and 10 deletions
@@ -567,6 +567,10 @@ namespace ErsatzTV.Core.Scheduling
return new ShuffledMediaCollectionEnumerator(
await GetGroupedMediaItemsForShuffle(playout, mediaItems, collectionKey),
state);
case PlaybackOrder.ShuffleInOrder:
return new ShuffleInOrderCollectionEnumerator(
await GetCollectionItemsForShuffleInOrder(collectionKey),
state);
default:
// TODO: handle this error case differently?
return new RandomizedMediaCollectionEnumerator(mediaItems, state);
@@ -593,6 +597,19 @@ namespace ErsatzTV.Core.Scheduling
: mediaItems.Map(mi => new GroupedMediaItem(mi, null)).ToList();
}
private async Task<List<CollectionWithItems>> GetCollectionItemsForShuffleInOrder(CollectionKey collectionKey)
{
var result = new List<CollectionWithItems>();
if (collectionKey.MultiCollectionId != null)
{
result = await _mediaCollectionRepository.GetMultiCollectionCollections(
collectionKey.MultiCollectionId.Value);
}
return result;
}
private static string DisplayTitle(MediaItem mediaItem)
{
switch (mediaItem)