From 58774d740cedd75cbb519ae7d469e0446b0112ff Mon Sep 17 00:00:00 2001 From: gnattu Date: Thu, 2 May 2024 00:01:15 +0800 Subject: [PATCH] Use season.BeforeMetadataRefresh instead of custom hack Signed-off-by: gnattu --- MediaBrowser.Providers/TV/SeriesMetadataService.cs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/MediaBrowser.Providers/TV/SeriesMetadataService.cs b/MediaBrowser.Providers/TV/SeriesMetadataService.cs index a1fef73e41..d80fb62ceb 100644 --- a/MediaBrowser.Providers/TV/SeriesMetadataService.cs +++ b/MediaBrowser.Providers/TV/SeriesMetadataService.cs @@ -8,6 +8,7 @@ using System.Threading; using System.Threading.Tasks; using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Dto; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Providers; @@ -42,7 +43,7 @@ namespace MediaBrowser.Providers.TV RemoveObsoleteEpisodes(item); RemoveObsoleteSeasons(item); - await UpdateAndCreateSeasonsAsync(item, cancellationToken).ConfigureAwait(false); + await UpdateAndCreateSeasonsAsync(item, refreshOptions.ReplaceAllMetadata, cancellationToken).ConfigureAwait(false); } /// @@ -197,18 +198,17 @@ namespace MediaBrowser.Providers.TV /// Updates seasons names. /// /// The series. + /// Should replace all metadata. /// The cancellation token. /// The async task. - private async Task UpdateAndCreateSeasonsAsync(Series series, CancellationToken cancellationToken) + private async Task UpdateAndCreateSeasonsAsync(Series series, bool replaceAllMetadata, CancellationToken cancellationToken) { var seasonNames = series.SeasonNames; var seriesChildren = series.GetRecursiveChildren(i => i is Episode || i is Season); var seasons = seriesChildren.OfType().ToList(); - // Very old Jellyfin library will have a cursed DB that a season may have NULL index number - foreach (var season in seasons.Where(season => season.IndexNumber is null).Where(season => season.Name.Any(char.IsDigit))) + foreach (var season in from season in seasons let hasUpdate = season.BeforeMetadataRefresh(replaceAllMetadata) where hasUpdate select season) { - season.IndexNumber = int.Parse(new string(season.Name.Where(char.IsDigit).ToArray()), NumberStyles.Integer, CultureInfo.InvariantCulture); await season.UpdateToRepositoryAsync(ItemUpdateType.MetadataEdit, cancellationToken).ConfigureAwait(false); }