Browse Source

fix: fix next playout building (#2855)

pull/2856/head
Jason Dove 1 month ago committed by GitHub
parent
commit
4ee97d5bb3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 2
      ErsatzTV.Application/Channels/Commands/UpdateChannelHandler.cs
  2. 22
      ErsatzTV.Application/Playouts/Commands/SyncNextPlayoutHandler.cs
  3. 14
      ErsatzTV.Application/Streaming/Commands/StartFFmpegNextSessionHandler.cs

2
ErsatzTV.Application/Channels/Commands/UpdateChannelHandler.cs

@ -1,6 +1,7 @@ @@ -1,6 +1,7 @@
using System.Globalization;
using System.Text.RegularExpressions;
using System.Threading.Channels;
using ErsatzTV.Application.Playouts;
using ErsatzTV.Application.Subtitles;
using ErsatzTV.Core;
using ErsatzTV.Core.Domain;
@ -160,6 +161,7 @@ public class UpdateChannelHandler( @@ -160,6 +161,7 @@ public class UpdateChannelHandler(
if (hasEpgChange)
{
await workerChannel.WriteAsync(new RefreshChannelData(c.Number), cancellationToken);
await workerChannel.WriteAsync(new SyncNextPlayout(c.Number), cancellationToken);
}
return ProjectToViewModel(c, c.Playouts?.Count ?? 0);

22
ErsatzTV.Application/Playouts/Commands/SyncNextPlayoutHandler.cs

@ -7,6 +7,7 @@ using ErsatzTV.Core.Extensions; @@ -7,6 +7,7 @@ using ErsatzTV.Core.Extensions;
using ErsatzTV.Core.Interfaces.Metadata;
using ErsatzTV.Core.Next;
using ErsatzTV.Infrastructure.Data;
using ErsatzTV.Infrastructure.Extensions;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Logging;
@ -78,6 +79,22 @@ public partial class SyncNextPlayoutHandler( @@ -78,6 +79,22 @@ public partial class SyncNextPlayoutHandler(
{
await using TvContext dbContext = await dbContextFactory.CreateDbContextAsync(cancellationToken);
TimeSpan playoutOffset = TimeSpan.Zero;
string mirrorChannelNumber = null;
Option<Channel> maybeChannel = await dbContext.Channels
.AsNoTracking()
.Include(c => c.MirrorSourceChannel)
.Filter(c => c.PlayoutSource == ChannelPlayoutSource.Mirror && c.MirrorSourceChannelId != null)
.SelectOneAsync(
c => c.Number == channelNumber,
c => c.Number == channelNumber,
cancellationToken);
foreach (Channel channel in maybeChannel)
{
mirrorChannelNumber = channel.MirrorSourceChannel.Number;
playoutOffset = channel.PlayoutOffset ?? TimeSpan.Zero;
}
List<int> localLibraryIds = await dbContext.LocalLibraries
.AsNoTracking()
.Map(l => l.Id)
@ -85,7 +102,7 @@ public partial class SyncNextPlayoutHandler( @@ -85,7 +102,7 @@ public partial class SyncNextPlayoutHandler(
List<PlayoutItem> playoutItems = await dbContext.PlayoutItems
.AsNoTracking()
.Where(i => i.Playout.Channel.Number == channelNumber)
.Where(i => i.Playout.Channel.Number == (mirrorChannelNumber ?? channelNumber))
.Where(i => localLibraryIds.Contains(i.MediaItem.LibraryPath.LibraryId))
.Include(i => i.MediaItem)
.ThenInclude(i => (i as Episode).MediaVersions)
@ -124,6 +141,9 @@ public partial class SyncNextPlayoutHandler( @@ -124,6 +141,9 @@ public partial class SyncNextPlayoutHandler(
string path = playoutItem.MediaItem.GetHeadVersion().MediaFiles.Head().Path;
playoutItem.Start += playoutOffset;
playoutItem.Finish += playoutOffset;
var nextPlayoutItem = new ItemElement
{
Id = playoutItem.Id.ToString(CultureInfo.InvariantCulture),

14
ErsatzTV.Application/Streaming/Commands/StartFFmpegNextSessionHandler.cs

@ -142,9 +142,17 @@ public class StartFFmpegNextSessionHandler( @@ -142,9 +142,17 @@ public class StartFFmpegNextSessionHandler(
private Task<Validation<BaseError, ValidationResult>> ChannelBinaryMustExist()
{
string nextFolder = string.IsNullOrWhiteSpace(SystemEnvironment.NextFolder)
? fileSystem.Path.GetDirectoryName(Assembly.GetEntryAssembly()?.Location)
: SystemEnvironment.NextFolder;
string nextFolder = SystemEnvironment.NextFolder;
if (string.IsNullOrWhiteSpace(nextFolder))
{
string processFileName = Environment.ProcessPath ?? string.Empty;
string processExecutable = Path.GetFileNameWithoutExtension(processFileName);
nextFolder = Path.GetDirectoryName(processFileName);
if ("dotnet".Equals(processExecutable, StringComparison.OrdinalIgnoreCase))
{
nextFolder = AppContext.BaseDirectory;
}
}
string executable = RuntimeInformation.IsOSPlatform(OSPlatform.Windows)
? "ersatztv-channel.exe"

Loading…
Cancel
Save