Files
ersatztv/ErsatzTV.Core/Scheduling/Engine/ISchedulingEngine.cs
T
Jason DoveandGitHub 605c57bef3 add scripted control instructions (#2341)
* add start_epg_group, stop_epg_group

* fix imports

* add graphics_on, graphics_off

* add skip_items

* add skip_to_item

* add watermark_on, watermark_off
2025-08-24 16:14:43 +00:00

65 lines
2.1 KiB
C#

using ErsatzTV.Core.Domain;
using ErsatzTV.Core.Domain.Filler;
namespace ErsatzTV.Core.Scheduling.Engine;
public interface ISchedulingEngine
{
ISchedulingEngine WithPlayoutId(int playoutId);
ISchedulingEngine WithMode(PlayoutBuildMode mode);
ISchedulingEngine WithSeed(int seed);
ISchedulingEngine WithReferenceData(PlayoutReferenceData referenceData);
ISchedulingEngine BuildBetween(DateTimeOffset start, DateTimeOffset finish);
ISchedulingEngine RemoveBefore(DateTimeOffset removeBefore);
ISchedulingEngine RestoreOrReset(Option<PlayoutAnchor> maybeAnchor);
// content definitions
Task AddCollection(string key, string collectionName, PlaybackOrder playbackOrder);
Task AddMarathon(
string key,
Dictionary<string, List<string>> guids,
List<string> searches,
string groupBy,
bool shuffleGroups,
PlaybackOrder itemPlaybackOrder,
bool playAllItems);
Task AddMultiCollection(string key, string multiCollectionName, PlaybackOrder playbackOrder);
Task AddPlaylist(string key, string playlist, string playlistGroup);
Task AddSmartCollection(string key, string smartCollectionName, PlaybackOrder playbackOrder);
Task AddSearch(string key, string query, PlaybackOrder playbackOrder);
Task AddShow(string key, Dictionary<string, string> guids, PlaybackOrder playbackOrder);
// content instructions
bool AddCount(
string content,
int count,
Option<FillerKind> fillerKind,
string customTitle,
bool disableWatermarks);
// control instructions
void LockGuideGroup(bool advance);
void UnlockGuideGroup();
Task GraphicsOn(List<string> graphicsElements, Dictionary<string, string> variables);
Task GraphicsOff(List<string> graphicsElements);
Task WatermarkOn(List<string> watermarks);
Task WatermarkOff(List<string> watermarks);
void SkipItems(string content, int count);
void SkipToItem(string content, int season, int episode);
ISchedulingEngine WaitUntil(TimeOnly waitUntil, bool tomorrow, bool rewindOnReset);
PlayoutAnchor GetAnchor();
ISchedulingEngineState GetState();
}