diff --git a/CHANGELOG.md b/CHANGELOG.md index ee1669ff7..27cf436c8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -66,6 +66,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Fix slow startup caused by check for overlapping playout items - Fix green line in *most* cases when overlaying content using NVIDIA acceleration and H264 output - Fix non-SRT (e.g. SSA/ASS) external subtitle playback from media servers +- Clean up some invalid external subtitle data to prevent playback failures ### Changed - Filler presets: use separate text fields for `hours`, `minutes` and `seconds` duration diff --git a/ErsatzTV.Application/Subtitles/Commands/ExtractEmbeddedSubtitlesHandler.cs b/ErsatzTV.Application/Subtitles/Commands/ExtractEmbeddedSubtitlesHandler.cs index 0b779e640..047374a35 100644 --- a/ErsatzTV.Application/Subtitles/Commands/ExtractEmbeddedSubtitlesHandler.cs +++ b/ErsatzTV.Application/Subtitles/Commands/ExtractEmbeddedSubtitlesHandler.cs @@ -328,11 +328,11 @@ public class ExtractEmbeddedSubtitlesHandler : IRequestHandler await dbContext.MediaItems + .AsNoTracking() .Include(mi => (mi as Episode).MediaVersions) .ThenInclude(mv => mv.MediaFiles) .Include(mi => (mi as Episode).MediaVersions) diff --git a/ErsatzTV/Services/RunOnce/DatabaseCleanerService.cs b/ErsatzTV/Services/RunOnce/DatabaseCleanerService.cs index 54878d0de..6a5f36c84 100644 --- a/ErsatzTV/Services/RunOnce/DatabaseCleanerService.cs +++ b/ErsatzTV/Services/RunOnce/DatabaseCleanerService.cs @@ -31,6 +31,7 @@ public class DatabaseCleanerService( await DeleteInvalidMediaItems(dbContext); await GenerateFallbackMetadata(scope, dbContext, stoppingToken); + await ResetExternalSubtitleState(dbContext, stoppingToken); systemStartup.DatabaseIsCleaned(); @@ -82,4 +83,11 @@ public class DatabaseCleanerService( await dbContext.SaveChangesAsync(cancellationToken); } + + private static async Task ResetExternalSubtitleState(TvContext dbContext, CancellationToken cancellationToken) + { + await dbContext.Database.ExecuteSqlRawAsync( + "UPDATE `Subtitle` SET `IsExtracted`=0 WHERE `Path` IS NULL", + cancellationToken); + } }