fix delete old segments (#1536)
* code cleanup * ignore errors deleting old hls segments
This commit is contained in:
@@ -424,11 +424,12 @@ public class PlayoutBuilder : IPlayoutBuilder
|
||||
cancellationToken);
|
||||
collectionEnumerators.Add(collectionKey, enumerator);
|
||||
}
|
||||
|
||||
|
||||
var collectionItemCount = collectionMediaItems.Map((k, v) => (k, v.Count)).Values.ToDictionary();
|
||||
|
||||
|
||||
var scheduleItemsFillGroupEnumerators = new Dictionary<int, IScheduleItemsEnumerator>();
|
||||
foreach (ProgramScheduleItem scheduleItem in sortedScheduleItems.Where(si => si.FillWithGroupMode is not FillWithGroupMode.None))
|
||||
foreach (ProgramScheduleItem scheduleItem in sortedScheduleItems.Where(
|
||||
si => si.FillWithGroupMode is not FillWithGroupMode.None))
|
||||
{
|
||||
var collectionKey = CollectionKey.ForScheduleItem(scheduleItem);
|
||||
List<MediaItem> mediaItems = await MediaItemsForCollection.Collect(
|
||||
@@ -439,14 +440,15 @@ public class PlayoutBuilder : IPlayoutBuilder
|
||||
var fakeCollections = _mediaCollectionRepository.GroupIntoFakeCollections(mediaItems)
|
||||
.Filter(c => c.ShowId > 0 || c.ArtistId > 0)
|
||||
.ToList();
|
||||
List<ProgramScheduleItem> fakeScheduleItems = [];
|
||||
|
||||
List<ProgramScheduleItem> fakeScheduleItems = []
|
||||
;
|
||||
|
||||
// this will be used to clone a schedule item
|
||||
MethodInfo generic = typeof(JsonConvert).GetMethods()
|
||||
.FirstOrDefault(
|
||||
x => x.Name.Equals("DeserializeObject", StringComparison.OrdinalIgnoreCase) && x.IsGenericMethod &&
|
||||
x.GetParameters().Length == 1)?.MakeGenericMethod(scheduleItem.GetType());
|
||||
|
||||
|
||||
foreach (CollectionWithItems fakeCollection in fakeCollections)
|
||||
{
|
||||
var key = new CollectionKey
|
||||
@@ -473,7 +475,7 @@ public class PlayoutBuilder : IPlayoutBuilder
|
||||
cancellationToken);
|
||||
|
||||
collectionEnumerators.Add(key, enumerator);
|
||||
|
||||
|
||||
// this makes multiple (0) work - since it needs the number of items in the collection
|
||||
collectionItemCount.Add(key, fakeCollection.MediaItems.Count);
|
||||
}
|
||||
@@ -572,7 +574,7 @@ public class PlayoutBuilder : IPlayoutBuilder
|
||||
|
||||
// get the schedule item out of the sorted list
|
||||
ProgramScheduleItem scheduleItem = playoutBuilderState.ScheduleItemsEnumerator.Current;
|
||||
|
||||
|
||||
// replace with the fake schedule item when filling with group
|
||||
if (scheduleItem.FillWithGroupMode is not FillWithGroupMode.None)
|
||||
{
|
||||
@@ -672,7 +674,7 @@ public class PlayoutBuilder : IPlayoutBuilder
|
||||
activeSchedule,
|
||||
collectionEnumerators,
|
||||
saveAnchorDate);
|
||||
|
||||
|
||||
// build fill group indices
|
||||
playout.FillGroupIndices = BuildFillGroupIndices(playout, scheduleItemsFillGroupEnumerators);
|
||||
|
||||
@@ -684,7 +686,7 @@ public class PlayoutBuilder : IPlayoutBuilder
|
||||
Dictionary<int, IScheduleItemsEnumerator> scheduleItemsFillGroupEnumerators)
|
||||
{
|
||||
var result = playout.FillGroupIndices.ToList();
|
||||
|
||||
|
||||
foreach ((int programScheduleItemId, IScheduleItemsEnumerator enumerator) in scheduleItemsFillGroupEnumerators)
|
||||
{
|
||||
Option<PlayoutScheduleItemFillGroupIndex> maybeFgi = Optional(
|
||||
@@ -694,7 +696,7 @@ public class PlayoutBuilder : IPlayoutBuilder
|
||||
{
|
||||
fgi.EnumeratorState = enumerator.State;
|
||||
}
|
||||
|
||||
|
||||
if (maybeFgi.IsNone)
|
||||
{
|
||||
var fgi = new PlayoutScheduleItemFillGroupIndex
|
||||
@@ -703,7 +705,7 @@ public class PlayoutBuilder : IPlayoutBuilder
|
||||
ProgramScheduleItemId = programScheduleItemId,
|
||||
EnumeratorState = enumerator.State
|
||||
};
|
||||
|
||||
|
||||
result.Add(fgi);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -223,7 +223,7 @@ public abstract class PlayoutModeSchedulerBase<T> : IPlayoutModeScheduler<T> whe
|
||||
Logger.LogError("Multiple pad-to-nearest-minute values are invalid; no filler will be used");
|
||||
return new List<PlayoutItem> { playoutItem };
|
||||
}
|
||||
|
||||
|
||||
// missing pad-to-nearest-minute value is invalid; use no filler
|
||||
FillerPreset invalidPadFiller = allFiller
|
||||
.FirstOrDefault(f => f.FillerMode == FillerMode.Pad && f.PadToNearestMinute.HasValue == false);
|
||||
|
||||
@@ -11,10 +11,8 @@ public class PlayoutModeSchedulerMultiple : PlayoutModeSchedulerBase<ProgramSche
|
||||
private readonly Map<CollectionKey, int> _collectionItemCount;
|
||||
|
||||
public PlayoutModeSchedulerMultiple(Map<CollectionKey, int> collectionItemCount, ILogger logger)
|
||||
: base(logger)
|
||||
{
|
||||
: base(logger) =>
|
||||
_collectionItemCount = collectionItemCount;
|
||||
}
|
||||
|
||||
public override Tuple<PlayoutBuilderState, List<PlayoutItem>> Schedule(
|
||||
PlayoutBuilderState playoutBuilderState,
|
||||
|
||||
@@ -15,7 +15,8 @@ public class RandomizedMediaCollectionEnumerator : IMediaCollectionEnumerator
|
||||
{
|
||||
_mediaItems = mediaItems;
|
||||
_lazyMinimumDuration =
|
||||
new Lazy<Option<TimeSpan>>(() => _mediaItems.Bind(i => i.GetNonZeroDuration()).OrderBy(identity).HeadOrNone());
|
||||
new Lazy<Option<TimeSpan>>(
|
||||
() => _mediaItems.Bind(i => i.GetNonZeroDuration()).OrderBy(identity).HeadOrNone());
|
||||
_random = new Random(state.Seed);
|
||||
|
||||
State = new CollectionEnumeratorState { Seed = state.Seed };
|
||||
|
||||
@@ -34,7 +34,8 @@ public class ShuffleInOrderCollectionEnumerator : IMediaCollectionEnumerator
|
||||
_random = new Random(state.Seed);
|
||||
_shuffled = Shuffle(_collections, _random);
|
||||
_lazyMinimumDuration =
|
||||
new Lazy<Option<TimeSpan>>(() => _shuffled.Bind(i => i.GetNonZeroDuration()).OrderBy(identity).HeadOrNone());
|
||||
new Lazy<Option<TimeSpan>>(
|
||||
() => _shuffled.Bind(i => i.GetNonZeroDuration()).OrderBy(identity).HeadOrNone());
|
||||
|
||||
State = new CollectionEnumeratorState { Seed = state.Seed };
|
||||
while (State.Index < state.Index)
|
||||
|
||||
@@ -31,7 +31,8 @@ public class ShuffledMediaCollectionEnumerator : IMediaCollectionEnumerator
|
||||
_random = new CloneableRandom(state.Seed);
|
||||
_shuffled = Shuffle(_mediaItems, _random);
|
||||
_lazyMinimumDuration =
|
||||
new Lazy<Option<TimeSpan>>(() => _shuffled.Bind(i => i.GetNonZeroDuration()).OrderBy(identity).HeadOrNone());
|
||||
new Lazy<Option<TimeSpan>>(
|
||||
() => _shuffled.Bind(i => i.GetNonZeroDuration()).OrderBy(identity).HeadOrNone());
|
||||
|
||||
State = new CollectionEnumeratorState { Seed = state.Seed };
|
||||
while (State.Index < state.Index)
|
||||
|
||||
Reference in New Issue
Block a user