From 7628ec7921d33026e0739a4392f4bed108a2ce2f Mon Sep 17 00:00:00 2001 From: Jason Dove <1695733+jasongdove@users.noreply.github.com> Date: Tue, 25 Apr 2023 15:18:53 -0500 Subject: [PATCH] fix vobsub subtitle burn in from media server libraries (#1258) --- CHANGELOG.md | 1 + .../Commands/ExtractEmbeddedSubtitlesHandler.cs | 10 +++++----- ErsatzTV.Core/Domain/Metadata/Subtitle.cs | 2 +- ErsatzTV.FFmpeg/InputFile.cs | 2 +- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 61d7c0596..8e502dc8a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Fix bug where deleting a channel would not remove its data from XMLTV - Fix colorspace filter for some files with invalid color metadata - Fix playback of external subtitles on Windows +- Fix vobsub subtitle burn in from media server libraries ### Changed - Remove duplicate items from smart collections before scheduling diff --git a/ErsatzTV.Application/Subtitles/Commands/ExtractEmbeddedSubtitlesHandler.cs b/ErsatzTV.Application/Subtitles/Commands/ExtractEmbeddedSubtitlesHandler.cs index b5a495afd..a8b04bb3d 100644 --- a/ErsatzTV.Application/Subtitles/Commands/ExtractEmbeddedSubtitlesHandler.cs +++ b/ErsatzTV.Application/Subtitles/Commands/ExtractEmbeddedSubtitlesHandler.cs @@ -177,7 +177,7 @@ public class ExtractEmbeddedSubtitlesHandler : IRequestHandler em.Subtitles.Any( s => s.SubtitleKind == SubtitleKind.Embedded && - s.Codec != "hdmv_pgs_subtitle" && s.Codec != "dvd_subtitle" && s.Codec != "dvdsub" && s.Codec != "pgssub")) + s.Codec != "hdmv_pgs_subtitle" && s.Codec != "dvd_subtitle" && s.Codec != "dvdsub" && s.Codec != "vobsub" && s.Codec != "pgssub")) .Map(em => em.EpisodeId) .ToListAsync(cancellationToken); result.AddRange(episodeIds); @@ -188,7 +188,7 @@ public class ExtractEmbeddedSubtitlesHandler : IRequestHandler mm.Subtitles.Any( s => s.SubtitleKind == SubtitleKind.Embedded && - s.Codec != "hdmv_pgs_subtitle" && s.Codec != "dvd_subtitle" && s.Codec != "dvdsub" && s.Codec != "pgssub")) + s.Codec != "hdmv_pgs_subtitle" && s.Codec != "dvd_subtitle" && s.Codec != "dvdsub" && s.Codec != "vobsub" && s.Codec != "pgssub")) .Map(mm => mm.MovieId) .ToListAsync(cancellationToken); result.AddRange(movieIds); @@ -199,7 +199,7 @@ public class ExtractEmbeddedSubtitlesHandler : IRequestHandler mm.Subtitles.Any( s => s.SubtitleKind == SubtitleKind.Embedded && - s.Codec != "hdmv_pgs_subtitle" && s.Codec != "dvd_subtitle" && s.Codec != "dvdsub" && s.Codec != "pgssub")) + s.Codec != "hdmv_pgs_subtitle" && s.Codec != "dvd_subtitle" && s.Codec != "dvdsub" && s.Codec != "vobsub" && s.Codec != "pgssub")) .Map(mm => mm.MusicVideoId) .ToListAsync(cancellationToken); result.AddRange(musicVideoIds); @@ -210,7 +210,7 @@ public class ExtractEmbeddedSubtitlesHandler : IRequestHandler ovm.Subtitles.Any( s => s.SubtitleKind == SubtitleKind.Embedded && - s.Codec != "hdmv_pgs_subtitle" && s.Codec != "dvd_subtitle" && s.Codec != "dvdsub" && s.Codec != "pgssub")) + s.Codec != "hdmv_pgs_subtitle" && s.Codec != "dvd_subtitle" && s.Codec != "dvdsub" && s.Codec != "vobsub" && s.Codec != "pgssub")) .Map(ovm => ovm.OtherVideoId) .ToListAsync(cancellationToken); result.AddRange(otherVideoIds); @@ -239,7 +239,7 @@ public class ExtractEmbeddedSubtitlesHandler : IRequestHandler subtitles = allSubtitles .Filter( s => s.SubtitleKind == SubtitleKind.Embedded && s.IsExtracted == false && - s.Codec != "hdmv_pgs_subtitle" && s.Codec != "dvd_subtitle" && s.Codec != "dvdsub" && s.Codec != "pgssub"); + s.Codec != "hdmv_pgs_subtitle" && s.Codec != "dvd_subtitle" && s.Codec != "dvdsub" && s.Codec != "vobsub" && s.Codec != "pgssub"); // find cache paths for each subtitle foreach (Subtitle subtitle in subtitles) diff --git a/ErsatzTV.Core/Domain/Metadata/Subtitle.cs b/ErsatzTV.Core/Domain/Metadata/Subtitle.cs index 8b1681ed9..e507dd5a3 100644 --- a/ErsatzTV.Core/Domain/Metadata/Subtitle.cs +++ b/ErsatzTV.Core/Domain/Metadata/Subtitle.cs @@ -15,7 +15,7 @@ public class Subtitle public string Path { get; set; } public DateTime DateAdded { get; set; } public DateTime DateUpdated { get; set; } - public bool IsImage => Codec is "hdmv_pgs_subtitle" or "dvd_subtitle" or "dvdsub" or "pgssub"; + public bool IsImage => Codec is "hdmv_pgs_subtitle" or "dvd_subtitle" or "dvdsub" or "vobsub" or "pgssub"; public static Subtitle FromMediaStream(MediaStream stream) => new() diff --git a/ErsatzTV.FFmpeg/InputFile.cs b/ErsatzTV.FFmpeg/InputFile.cs index d783c4983..db8edf845 100644 --- a/ErsatzTV.FFmpeg/InputFile.cs +++ b/ErsatzTV.FFmpeg/InputFile.cs @@ -80,5 +80,5 @@ public record SubtitleInputFile(string Path, IList SubtitleStreams, Path, SubtitleStreams) { - public bool IsImageBased = SubtitleStreams.All(s => s.Codec is "hdmv_pgs_subtitle" or "dvd_subtitle" or "dvdsub" or "pgssub"); + public bool IsImageBased = SubtitleStreams.All(s => s.Codec is "hdmv_pgs_subtitle" or "dvd_subtitle" or "dvdsub" or "vobsub" or "pgssub"); }