diff --git a/Jellyfin.Plugin.CinemaTrailers4Jellyfins/Jellyfin.Plugin.CinemaTrailers4Jellyfins.csproj b/Jellyfin.Plugin.CinemaTrailers4Jellyfins/Jellyfin.Plugin.CinemaTrailers4Jellyfins.csproj index 6c73986..c5ed9df 100644 --- a/Jellyfin.Plugin.CinemaTrailers4Jellyfins/Jellyfin.Plugin.CinemaTrailers4Jellyfins.csproj +++ b/Jellyfin.Plugin.CinemaTrailers4Jellyfins/Jellyfin.Plugin.CinemaTrailers4Jellyfins.csproj @@ -3,8 +3,8 @@ net9.0 Jellyfin.Plugin.CinemaTrailers4Jellyfins - 1.0.0.13 - 1.0.0.13 + 1.0.0.14 + 1.0.0.14 enable false false diff --git a/Jellyfin.Plugin.CinemaTrailers4Jellyfins/Services/TrailerDownloadService.cs b/Jellyfin.Plugin.CinemaTrailers4Jellyfins/Services/TrailerDownloadService.cs index a699318..561be97 100644 --- a/Jellyfin.Plugin.CinemaTrailers4Jellyfins/Services/TrailerDownloadService.cs +++ b/Jellyfin.Plugin.CinemaTrailers4Jellyfins/Services/TrailerDownloadService.cs @@ -282,6 +282,32 @@ namespace Jellyfin.Plugin.CinemaTrailers4Jellyfins.Services _logger.LogError(ex, "|CinemaTrailers4Jellyfins| yt-dlp download failed for {Key}", key); return false; } + finally + { + DeleteYtDlpLeftovers(outputPath); + } + } + + // yt-dlp names its separate/partial downloads ".f137.mp4.part", ".f140.m4a", + // ".ytdl", ... It removes them after a successful merge, but not when it fails. Everything + // sharing the output's "." prefix (other than the output itself) is one of those. + private void DeleteYtDlpLeftovers(string outputPath) + { + var folder = Path.GetDirectoryName(outputPath); + if (folder == null || !Directory.Exists(folder)) + return; + + var outputName = Path.GetFileName(outputPath); + var prefix = Path.GetFileNameWithoutExtension(outputPath) + "."; + foreach (var file in Directory.EnumerateFiles(folder)) + { + var name = Path.GetFileName(file); + if (name.StartsWith(prefix, StringComparison.Ordinal) + && !string.Equals(name, outputName, StringComparison.Ordinal)) + { + TryDeleteFile(file); + } + } } } } diff --git a/build.yaml b/build.yaml index b249773..6583300 100644 --- a/build.yaml +++ b/build.yaml @@ -1,5 +1,5 @@ --- -version: 1.0.0.13 +version: 1.0.0.14 name: CinemaTrailers4Jellyfins guid: b581493e-1046-40ed-b6dc-cb8027624984 description: > @@ -12,12 +12,9 @@ category: General owner: 514mart targetAbi: 10.11.0.0 changelog: - - yt-dlp now prefers H.264 + AAC (plays or hardware-transcodes on every - client; VP9/AV1 often needed a CPU transcode) and uses Jellyfin's own - ffmpeg for the merge - - If yt-dlp fails, the built-in downloader is tried instead - - Fix a possible hang. yt-dlp's output is now read while it runs, so a - full output buffer can no longer block it + - When yt-dlp fails part-way, its partial download files (.part, .ytdl, + separate video/audio) are now deleted instead of being left in the + trailer folder dotnetProjects: - name: Jellyfin.Plugin.CinemaTrailers4Jellyfins