Browse Source

more jf episode scanning improvements

pull/2753/head
Jason Dove 7 months ago
parent
commit
e08067f4b9
No known key found for this signature in database
  1. 22
      ErsatzTV.Infrastructure/Data/Repositories/JellyfinTelevisionRepository.cs
  2. 1
      ErsatzTV.Infrastructure/Data/TvContext.cs
  3. 1
      ErsatzTV.Scanner/ErsatzTV.Scanner.csproj
  4. 2
      ErsatzTV.Scanner/Worker.cs

22
ErsatzTV.Infrastructure/Data/Repositories/JellyfinTelevisionRepository.cs

@ -188,9 +188,7 @@ public class JellyfinTelevisionRepository : IJellyfinTelevisionRepository @@ -188,9 +188,7 @@ public class JellyfinTelevisionRepository : IJellyfinTelevisionRepository
.Include(e => e.EpisodeMetadata).ThenInclude(em => em.Actors).ThenInclude(a => a.Artwork)
.Include(e => e.EpisodeMetadata).ThenInclude(em => em.Directors)
.Include(e => e.EpisodeMetadata).ThenInclude(em => em.Writers)
.Include(e => e.MediaVersions).ThenInclude(mv => mv.MediaFiles)
.Include(e => e.MediaVersions).ThenInclude(mv => mv.Streams)
.Include(e => e.MediaVersions).ThenInclude(mv => mv.Chapters)
.AsSplitQuery()
.SingleAsync(s => s.Id == existingId, cancellationToken);
@ -210,9 +208,7 @@ public class JellyfinTelevisionRepository : IJellyfinTelevisionRepository @@ -210,9 +208,7 @@ public class JellyfinTelevisionRepository : IJellyfinTelevisionRepository
.Include(e => e.EpisodeMetadata).ThenInclude(em => em.Actors)
.Include(e => e.EpisodeMetadata).ThenInclude(em => em.Directors)
.Include(e => e.EpisodeMetadata).ThenInclude(em => em.Writers)
.Include(e => e.MediaVersions).ThenInclude(mv => mv.MediaFiles)
.Include(e => e.MediaVersions).ThenInclude(mv => mv.Streams)
.Include(e => e.MediaVersions).ThenInclude(mv => mv.Chapters)
.AsSplitQuery()
.SingleAsync(s => s.Id == existingId, cancellationToken);
@ -931,12 +927,24 @@ public class JellyfinTelevisionRepository : IJellyfinTelevisionRepository @@ -931,12 +927,24 @@ public class JellyfinTelevisionRepository : IJellyfinTelevisionRepository
MediaVersion incomingVersion = incoming.MediaVersions.Head();
version.Name = incomingVersion.Name;
version.DateAdded = incomingVersion.DateAdded;
// delete old chapters
await dbContext.MediaChapters
.Where(c => c.MediaVersionId == version.Id)
.ExecuteDeleteAsync(cancellationToken);
// replace with new chapters
version.Chapters = incomingVersion.Chapters;
foreach (var ch in version.Chapters)
{
ch.MediaVersionId = version.Id;
}
// media file
MediaFile file = version.MediaFiles.Head();
// always update media file path
MediaFile incomingFile = incomingVersion.MediaFiles.Head();
file.Path = incomingFile.Path;
await dbContext.MediaFiles
.Where(mf => mf.MediaVersionId == version.Id)
.ExecuteUpdateAsync(mf => mf.SetProperty(f => f.Path, incomingFile.Path), cancellationToken);
await dbContext.SaveChangesAsync(cancellationToken);
}

1
ErsatzTV.Infrastructure/Data/TvContext.cs

@ -50,6 +50,7 @@ public class TvContext : DbContext @@ -50,6 +50,7 @@ public class TvContext : DbContext
public DbSet<MediaVersion> MediaVersions { get; set; }
public DbSet<MediaFile> MediaFiles { get; set; }
public DbSet<MediaStream> MediaStreams { get; set; }
public DbSet<MediaChapter> MediaChapters { get; set; }
public DbSet<Movie> Movies { get; set; }
public DbSet<MovieMetadata> MovieMetadata { get; set; }
public DbSet<Artwork> Artwork { get; set; }

1
ErsatzTV.Scanner/ErsatzTV.Scanner.csproj

@ -21,6 +21,7 @@ @@ -21,6 +21,7 @@
<ItemGroup>
<PackageReference Include="CliWrap" Version="3.10.0" />
<!-- <PackageReference Include="EntityFrameworkProfiler.Appender" Version="6.0.6049" />-->
<PackageReference Include="Humanizer.Core" Version="3.0.1" />
<PackageReference Include="LanguageExt.Core" Version="4.4.9" />
<PackageReference Include="MediatR" Version="[12.5.0]" />

2
ErsatzTV.Scanner/Worker.cs

@ -29,6 +29,8 @@ public class Worker : BackgroundService @@ -29,6 +29,8 @@ public class Worker : BackgroundService
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
//HibernatingRhinos.Profiler.Appender.EntityFramework.EntityFrameworkProfiler.Initialize();
using IServiceScope scope = _serviceScopeFactory.CreateScope();
IMediator mediator = scope.ServiceProvider.GetRequiredService<IMediator>();
await mediator.Send(new RefreshFFmpegCapabilities(), stoppingToken);

Loading…
Cancel
Save