From 28a6694f6eb227eed810dba55cc646b1d5aa9dac Mon Sep 17 00:00:00 2001 From: LJQ Date: Fri, 4 Aug 2023 21:19:08 +0800 Subject: [PATCH 1/6] Combined Title and Overview for multi-episodes files for the TMDB provider --- .../Plugins/Tmdb/TV/TmdbEpisodeProvider.cs | 48 +++++++++++++++++-- 1 file changed, 45 insertions(+), 3 deletions(-) diff --git a/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbEpisodeProvider.cs b/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbEpisodeProvider.cs index f18575aa98..b25a15be51 100644 --- a/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbEpisodeProvider.cs +++ b/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbEpisodeProvider.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Net.Http; +using System.Text; using System.Threading; using System.Threading.Tasks; using Jellyfin.Data.Enums; @@ -13,6 +14,8 @@ using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Providers; +using MediaBrowser.Providers.Music; +using TMDbLib.Objects.TvShows; namespace MediaBrowser.Providers.Plugins.Tmdb.TV { @@ -102,9 +105,48 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.TV return metadataResult; } - var episodeResult = await _tmdbClientManager - .GetEpisodeAsync(seriesTmdbId, seasonNumber.Value, episodeNumber.Value, info.SeriesDisplayOrder, info.MetadataLanguage, TmdbUtils.GetImageLanguagesParam(info.MetadataLanguage), cancellationToken) - .ConfigureAwait(false); + var episodeResult = new TvEpisode(); + if (!info.IndexNumberEnd.HasValue) + { + episodeResult = await _tmdbClientManager + .GetEpisodeAsync(seriesTmdbId, seasonNumber.Value, episodeNumber.Value, info.SeriesDisplayOrder, info.MetadataLanguage, TmdbUtils.GetImageLanguagesParam(info.MetadataLanguage), cancellationToken) + .ConfigureAwait(false); + } + else + { + var startindex = episodeNumber; + var endindex = info.IndexNumberEnd; + List result = new List(); + for (int? episode = startindex; episode <= endindex; episode++) + { + var episodeInfo = await _tmdbClientManager.GetEpisodeAsync(seriesTmdbId, seasonNumber.Value, episode.Value, info.SeriesDisplayOrder, info.MetadataLanguage, TmdbUtils.GetImageLanguagesParam(info.MetadataLanguage), cancellationToken).ConfigureAwait(false); + if (episodeInfo is not null) + { + result.Add(episodeInfo); + } + } + + if (result.Count > 0) + { + episodeResult = result[0]; + } + else + { + return metadataResult; + } + + var name = new StringBuilder(episodeResult.Name); + var overview = new StringBuilder(episodeResult.Overview); + + for (int i = 1; i < result.Count; i++) + { + name.Append(" / " + result[i].Name); + overview.Append(" / " + result[i].Overview); + } + + episodeResult.Name = name.ToString(); + episodeResult.Overview = overview.ToString(); + } if (episodeResult is null) { From 0676b878f3e4709a86e5e397261536745311d303 Mon Sep 17 00:00:00 2001 From: LJQ Date: Fri, 4 Aug 2023 21:25:43 +0800 Subject: [PATCH 2/6] Removed unused imports --- MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbEpisodeProvider.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbEpisodeProvider.cs b/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbEpisodeProvider.cs index b25a15be51..319364b395 100644 --- a/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbEpisodeProvider.cs +++ b/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbEpisodeProvider.cs @@ -14,7 +14,6 @@ using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Providers; -using MediaBrowser.Providers.Music; using TMDbLib.Objects.TvShows; namespace MediaBrowser.Providers.Plugins.Tmdb.TV From 4271f7b5ad90abef51cded9957dbfd9f4d23c2a2 Mon Sep 17 00:00:00 2001 From: LJQ Date: Sat, 5 Aug 2023 13:29:31 +0800 Subject: [PATCH 3/6] Added me to CONTRIBUTORS.md --- CONTRIBUTORS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index d5a87d2692..4009c01cc5 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -167,6 +167,7 @@ - [ipitio](https://github.com/ipitio) - [TheTyrius](https://github.com/TheTyrius) - [tallbl0nde](https://github.com/tallbl0nde) + - [scampower3](https://github.com/scampower3) # Emby Contributors From 136a4abbd3c7304479bb7d7218d7c1b39955e5d1 Mon Sep 17 00:00:00 2001 From: LJQ Date: Mon, 11 Sep 2023 20:29:49 +0800 Subject: [PATCH 4/6] Applied Suggested Changes --- MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbEpisodeProvider.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbEpisodeProvider.cs b/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbEpisodeProvider.cs index 319364b395..69ffd7859c 100644 --- a/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbEpisodeProvider.cs +++ b/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbEpisodeProvider.cs @@ -139,8 +139,8 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.TV for (int i = 1; i < result.Count; i++) { - name.Append(" / " + result[i].Name); - overview.Append(" / " + result[i].Overview); + name.Append(" / ").Append(result[i].Name); + overview.Append(" / ").Append(result[i].Overview); } episodeResult.Name = name.ToString(); From 298a7488a3a45e51e0defdf0196070ad1bff85cc Mon Sep 17 00:00:00 2001 From: LJQ Date: Mon, 16 Oct 2023 19:48:01 +0800 Subject: [PATCH 5/6] Applied 2nd Round of Suggested Changes --- .../Plugins/Tmdb/TV/TmdbEpisodeProvider.cs | 48 ++++++++++--------- 1 file changed, 25 insertions(+), 23 deletions(-) diff --git a/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbEpisodeProvider.cs b/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbEpisodeProvider.cs index 69ffd7859c..90abaa6956 100644 --- a/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbEpisodeProvider.cs +++ b/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbEpisodeProvider.cs @@ -104,47 +104,49 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.TV return metadataResult; } - var episodeResult = new TvEpisode(); - if (!info.IndexNumberEnd.HasValue) - { - episodeResult = await _tmdbClientManager - .GetEpisodeAsync(seriesTmdbId, seasonNumber.Value, episodeNumber.Value, info.SeriesDisplayOrder, info.MetadataLanguage, TmdbUtils.GetImageLanguagesParam(info.MetadataLanguage), cancellationToken) - .ConfigureAwait(false); - } - else + TvEpisode? episodeResult = null; + if (info.IndexNumberEnd.HasValue) { var startindex = episodeNumber; var endindex = info.IndexNumberEnd; - List result = new List(); + List? result = null; for (int? episode = startindex; episode <= endindex; episode++) { var episodeInfo = await _tmdbClientManager.GetEpisodeAsync(seriesTmdbId, seasonNumber.Value, episode.Value, info.SeriesDisplayOrder, info.MetadataLanguage, TmdbUtils.GetImageLanguagesParam(info.MetadataLanguage), cancellationToken).ConfigureAwait(false); if (episodeInfo is not null) { - result.Add(episodeInfo); + (result ??= new List()).Add(episodeInfo); } } - if (result.Count > 0) + if (result is not null) { episodeResult = result[0]; + if (result.Count > 1) + { + var name = new StringBuilder(episodeResult.Name); + var overview = new StringBuilder(episodeResult.Overview); + + for (int i = 1; i < result.Count; i++) + { + name.Append(" / ").Append(result[i].Name); + overview.Append(" / ").Append(result[i].Overview); + } + + episodeResult.Name = name.ToString(); + episodeResult.Overview = overview.ToString(); + } } else { return metadataResult; } - - var name = new StringBuilder(episodeResult.Name); - var overview = new StringBuilder(episodeResult.Overview); - - for (int i = 1; i < result.Count; i++) - { - name.Append(" / ").Append(result[i].Name); - overview.Append(" / ").Append(result[i].Overview); - } - - episodeResult.Name = name.ToString(); - episodeResult.Overview = overview.ToString(); + } + else + { + episodeResult = await _tmdbClientManager + .GetEpisodeAsync(seriesTmdbId, seasonNumber.Value, episodeNumber.Value, info.SeriesDisplayOrder, info.MetadataLanguage, TmdbUtils.GetImageLanguagesParam(info.MetadataLanguage), cancellationToken) + .ConfigureAwait(false); } if (episodeResult is null) From 1d19fe50b4889406f8cf5517392668f09b3e1f18 Mon Sep 17 00:00:00 2001 From: LJQ Date: Mon, 16 Oct 2023 21:18:25 +0800 Subject: [PATCH 6/6] Deep copy instead of Shallow copy --- .../Plugins/Tmdb/TV/TmdbEpisodeProvider.cs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbEpisodeProvider.cs b/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbEpisodeProvider.cs index 90abaa6956..489f5e2a17 100644 --- a/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbEpisodeProvider.cs +++ b/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbEpisodeProvider.cs @@ -121,7 +121,18 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.TV if (result is not null) { - episodeResult = result[0]; + // Forces a deep copy of the first TvEpisode, so we don't modify the original because it's cached + episodeResult = new TvEpisode() + { + Name = result[0].Name, + Overview = result[0].Overview, + AirDate = result[0].AirDate, + VoteAverage = result[0].VoteAverage, + ExternalIds = result[0].ExternalIds, + Videos = result[0].Videos, + Credits = result[0].Credits + }; + if (result.Count > 1) { var name = new StringBuilder(episodeResult.Name);