Browse Source

add `rewind_on_reset` option `wait_until` yaml playout instruction (#1941)

pull/1942/head
Jason Dove 9 months ago committed by GitHub
parent
commit
0953e258a5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 2
      CHANGELOG.md
  2. 1
      ErsatzTV.Core/Scheduling/YamlScheduling/Handlers/IYamlPlayoutHandler.cs
  3. 1
      ErsatzTV.Core/Scheduling/YamlScheduling/Handlers/YamlPlayoutAllHandler.cs
  4. 1
      ErsatzTV.Core/Scheduling/YamlScheduling/Handlers/YamlPlayoutContentHandler.cs
  5. 1
      ErsatzTV.Core/Scheduling/YamlScheduling/Handlers/YamlPlayoutCountHandler.cs
  6. 1
      ErsatzTV.Core/Scheduling/YamlScheduling/Handlers/YamlPlayoutDurationHandler.cs
  7. 1
      ErsatzTV.Core/Scheduling/YamlScheduling/Handlers/YamlPlayoutEpgGroupHandler.cs
  8. 1
      ErsatzTV.Core/Scheduling/YamlScheduling/Handlers/YamlPlayoutPadToNextHandler.cs
  9. 1
      ErsatzTV.Core/Scheduling/YamlScheduling/Handlers/YamlPlayoutPadUntilHandler.cs
  10. 1
      ErsatzTV.Core/Scheduling/YamlScheduling/Handlers/YamlPlayoutRepeatHandler.cs
  11. 1
      ErsatzTV.Core/Scheduling/YamlScheduling/Handlers/YamlPlayoutShuffleSequenceHandler.cs
  12. 1
      ErsatzTV.Core/Scheduling/YamlScheduling/Handlers/YamlPlayoutSkipItemsHandler.cs
  13. 1
      ErsatzTV.Core/Scheduling/YamlScheduling/Handlers/YamlPlayoutSkipToItemHandler.cs
  14. 6
      ErsatzTV.Core/Scheduling/YamlScheduling/Handlers/YamlPlayoutWaitUntilHandler.cs
  15. 4
      ErsatzTV.Core/Scheduling/YamlScheduling/Models/YamlPlayoutWaitUntilInstruction.cs
  16. 4
      ErsatzTV.Core/Scheduling/YamlScheduling/YamlPlayoutBuilder.cs

2
CHANGELOG.md

@ -6,6 +6,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
## [Unreleased] ## [Unreleased]
### Added ### Added
- Add `Reset All Playouts` button to top of playouts page - Add `Reset All Playouts` button to top of playouts page
- Add `rewind_on_reset` option to `wait_until` YAML playout instruction to allow
- This option allows YAML playouts to start in the past
### Changed ### Changed
- **BREAKING CHANGE**: Change channel identifiers used in XMLTV to work around bad behavior in Plex - **BREAKING CHANGE**: Change channel identifiers used in XMLTV to work around bad behavior in Plex

1
ErsatzTV.Core/Scheduling/YamlScheduling/Handlers/IYamlPlayoutHandler.cs

@ -10,6 +10,7 @@ public interface IYamlPlayoutHandler
Task<bool> Handle( Task<bool> Handle(
YamlPlayoutContext context, YamlPlayoutContext context,
YamlPlayoutInstruction instruction, YamlPlayoutInstruction instruction,
PlayoutBuildMode mode,
ILogger<YamlPlayoutBuilder> logger, ILogger<YamlPlayoutBuilder> logger,
CancellationToken cancellationToken); CancellationToken cancellationToken);
} }

1
ErsatzTV.Core/Scheduling/YamlScheduling/Handlers/YamlPlayoutAllHandler.cs

@ -11,6 +11,7 @@ public class YamlPlayoutAllHandler(EnumeratorCache enumeratorCache) : YamlPlayou
public override async Task<bool> Handle( public override async Task<bool> Handle(
YamlPlayoutContext context, YamlPlayoutContext context,
YamlPlayoutInstruction instruction, YamlPlayoutInstruction instruction,
PlayoutBuildMode mode,
ILogger<YamlPlayoutBuilder> logger, ILogger<YamlPlayoutBuilder> logger,
CancellationToken cancellationToken) CancellationToken cancellationToken)
{ {

1
ErsatzTV.Core/Scheduling/YamlScheduling/Handlers/YamlPlayoutContentHandler.cs

@ -15,6 +15,7 @@ public abstract class YamlPlayoutContentHandler(EnumeratorCache enumeratorCache)
public abstract Task<bool> Handle( public abstract Task<bool> Handle(
YamlPlayoutContext context, YamlPlayoutContext context,
YamlPlayoutInstruction instruction, YamlPlayoutInstruction instruction,
PlayoutBuildMode mode,
ILogger<YamlPlayoutBuilder> logger, ILogger<YamlPlayoutBuilder> logger,
CancellationToken cancellationToken); CancellationToken cancellationToken);

1
ErsatzTV.Core/Scheduling/YamlScheduling/Handlers/YamlPlayoutCountHandler.cs

@ -11,6 +11,7 @@ public class YamlPlayoutCountHandler(EnumeratorCache enumeratorCache) : YamlPlay
public override async Task<bool> Handle( public override async Task<bool> Handle(
YamlPlayoutContext context, YamlPlayoutContext context,
YamlPlayoutInstruction instruction, YamlPlayoutInstruction instruction,
PlayoutBuildMode mode,
ILogger<YamlPlayoutBuilder> logger, ILogger<YamlPlayoutBuilder> logger,
CancellationToken cancellationToken) CancellationToken cancellationToken)
{ {

1
ErsatzTV.Core/Scheduling/YamlScheduling/Handlers/YamlPlayoutDurationHandler.cs

@ -13,6 +13,7 @@ public class YamlPlayoutDurationHandler(EnumeratorCache enumeratorCache) : YamlP
public override async Task<bool> Handle( public override async Task<bool> Handle(
YamlPlayoutContext context, YamlPlayoutContext context,
YamlPlayoutInstruction instruction, YamlPlayoutInstruction instruction,
PlayoutBuildMode mode,
ILogger<YamlPlayoutBuilder> logger, ILogger<YamlPlayoutBuilder> logger,
CancellationToken cancellationToken) CancellationToken cancellationToken)
{ {

1
ErsatzTV.Core/Scheduling/YamlScheduling/Handlers/YamlPlayoutEpgGroupHandler.cs

@ -10,6 +10,7 @@ public class YamlPlayoutEpgGroupHandler : IYamlPlayoutHandler
public Task<bool> Handle( public Task<bool> Handle(
YamlPlayoutContext context, YamlPlayoutContext context,
YamlPlayoutInstruction instruction, YamlPlayoutInstruction instruction,
PlayoutBuildMode mode,
ILogger<YamlPlayoutBuilder> logger, ILogger<YamlPlayoutBuilder> logger,
CancellationToken cancellationToken) CancellationToken cancellationToken)
{ {

1
ErsatzTV.Core/Scheduling/YamlScheduling/Handlers/YamlPlayoutPadToNextHandler.cs

@ -9,6 +9,7 @@ public class YamlPlayoutPadToNextHandler(EnumeratorCache enumeratorCache) : Yaml
public override async Task<bool> Handle( public override async Task<bool> Handle(
YamlPlayoutContext context, YamlPlayoutContext context,
YamlPlayoutInstruction instruction, YamlPlayoutInstruction instruction,
PlayoutBuildMode mode,
ILogger<YamlPlayoutBuilder> logger, ILogger<YamlPlayoutBuilder> logger,
CancellationToken cancellationToken) CancellationToken cancellationToken)
{ {

1
ErsatzTV.Core/Scheduling/YamlScheduling/Handlers/YamlPlayoutPadUntilHandler.cs

@ -9,6 +9,7 @@ public class YamlPlayoutPadUntilHandler(EnumeratorCache enumeratorCache) : YamlP
public override async Task<bool> Handle( public override async Task<bool> Handle(
YamlPlayoutContext context, YamlPlayoutContext context,
YamlPlayoutInstruction instruction, YamlPlayoutInstruction instruction,
PlayoutBuildMode mode,
ILogger<YamlPlayoutBuilder> logger, ILogger<YamlPlayoutBuilder> logger,
CancellationToken cancellationToken) CancellationToken cancellationToken)
{ {

1
ErsatzTV.Core/Scheduling/YamlScheduling/Handlers/YamlPlayoutRepeatHandler.cs

@ -12,6 +12,7 @@ public class YamlPlayoutRepeatHandler : IYamlPlayoutHandler
public Task<bool> Handle( public Task<bool> Handle(
YamlPlayoutContext context, YamlPlayoutContext context,
YamlPlayoutInstruction instruction, YamlPlayoutInstruction instruction,
PlayoutBuildMode mode,
ILogger<YamlPlayoutBuilder> logger, ILogger<YamlPlayoutBuilder> logger,
CancellationToken cancellationToken) CancellationToken cancellationToken)
{ {

1
ErsatzTV.Core/Scheduling/YamlScheduling/Handlers/YamlPlayoutShuffleSequenceHandler.cs

@ -10,6 +10,7 @@ public class YamlPlayoutShuffleSequenceHandler : IYamlPlayoutHandler
public Task<bool> Handle( public Task<bool> Handle(
YamlPlayoutContext context, YamlPlayoutContext context,
YamlPlayoutInstruction instruction, YamlPlayoutInstruction instruction,
PlayoutBuildMode mode,
ILogger<YamlPlayoutBuilder> logger, ILogger<YamlPlayoutBuilder> logger,
CancellationToken cancellationToken) CancellationToken cancellationToken)
{ {

1
ErsatzTV.Core/Scheduling/YamlScheduling/Handlers/YamlPlayoutSkipItemsHandler.cs

@ -11,6 +11,7 @@ public class YamlPlayoutSkipItemsHandler(EnumeratorCache enumeratorCache) : IYam
public async Task<bool> Handle( public async Task<bool> Handle(
YamlPlayoutContext context, YamlPlayoutContext context,
YamlPlayoutInstruction instruction, YamlPlayoutInstruction instruction,
PlayoutBuildMode mode,
ILogger<YamlPlayoutBuilder> logger, ILogger<YamlPlayoutBuilder> logger,
CancellationToken cancellationToken) CancellationToken cancellationToken)
{ {

1
ErsatzTV.Core/Scheduling/YamlScheduling/Handlers/YamlPlayoutSkipToItemHandler.cs

@ -12,6 +12,7 @@ public class YamlPlayoutSkipToItemHandler(EnumeratorCache enumeratorCache) : IYa
public async Task<bool> Handle( public async Task<bool> Handle(
YamlPlayoutContext context, YamlPlayoutContext context,
YamlPlayoutInstruction instruction, YamlPlayoutInstruction instruction,
PlayoutBuildMode mode,
ILogger<YamlPlayoutBuilder> logger, ILogger<YamlPlayoutBuilder> logger,
CancellationToken cancellationToken) CancellationToken cancellationToken)
{ {

6
ErsatzTV.Core/Scheduling/YamlScheduling/Handlers/YamlPlayoutWaitUntilHandler.cs

@ -10,6 +10,7 @@ public class YamlPlayoutWaitUntilHandler : IYamlPlayoutHandler
public Task<bool> Handle( public Task<bool> Handle(
YamlPlayoutContext context, YamlPlayoutContext context,
YamlPlayoutInstruction instruction, YamlPlayoutInstruction instruction,
PlayoutBuildMode mode,
ILogger<YamlPlayoutBuilder> logger, ILogger<YamlPlayoutBuilder> logger,
CancellationToken cancellationToken) CancellationToken cancellationToken)
{ {
@ -33,6 +34,11 @@ public class YamlPlayoutWaitUntilHandler : IYamlPlayoutHandler
dayOnly = dayOnly.AddDays(1); dayOnly = dayOnly.AddDays(1);
currentTime = new DateTimeOffset(dayOnly, result, currentTime.Offset); currentTime = new DateTimeOffset(dayOnly, result, currentTime.Offset);
} }
else if (waitUntil.RewindOnReset && mode == PlayoutBuildMode.Reset)
{
// maybe wrong when offset changes?
currentTime = new DateTimeOffset(dayOnly, result, currentTime.Offset);
}
} }
else else
{ {

4
ErsatzTV.Core/Scheduling/YamlScheduling/Models/YamlPlayoutWaitUntilInstruction.cs

@ -6,5 +6,9 @@ public class YamlPlayoutWaitUntilInstruction : YamlPlayoutInstruction
{ {
[YamlMember(Alias = "wait_until", ApplyNamingConventions = false)] [YamlMember(Alias = "wait_until", ApplyNamingConventions = false)]
public string WaitUntil { get; set; } public string WaitUntil { get; set; }
public bool Tomorrow { get; set; } public bool Tomorrow { get; set; }
[YamlMember(Alias = "rewind_on_reset", ApplyNamingConventions = false)]
public bool RewindOnReset { get; set; }
} }

4
ErsatzTV.Core/Scheduling/YamlScheduling/YamlPlayoutBuilder.cs

@ -121,7 +121,7 @@ public class YamlPlayoutBuilder(
} }
else else
{ {
await handler.Handle(context, instruction, logger, cancellationToken); await handler.Handle(context, instruction, mode, logger, cancellationToken);
} }
} }
} }
@ -145,7 +145,7 @@ public class YamlPlayoutBuilder(
foreach (IYamlPlayoutHandler handler in maybeHandler) foreach (IYamlPlayoutHandler handler in maybeHandler)
{ {
if (!await handler.Handle(context, instruction, logger, cancellationToken)) if (!await handler.Handle(context, instruction, mode, logger, cancellationToken))
{ {
logger.LogInformation("YAML playout instruction handler failed"); logger.LogInformation("YAML playout instruction handler failed");
} }

Loading…
Cancel
Save