Pre-fill ParentIndexNumber to preserve it between scans (#12739)

This commit is contained in:
Tim Eisele 2024-09-28 16:51:48 +02:00 committed by GitHub
parent c8c58d6aac
commit d10406fd75
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 44 additions and 9 deletions

View File

@ -675,6 +675,7 @@ namespace MediaBrowser.Providers.Manager
}; };
temp.Item.Path = item.Path; temp.Item.Path = item.Path;
temp.Item.Id = item.Id; temp.Item.Id = item.Id;
temp.Item.ParentIndexNumber = item.ParentIndexNumber;
temp.Item.PreferredMetadataCountryCode = item.PreferredMetadataCountryCode; temp.Item.PreferredMetadataCountryCode = item.PreferredMetadataCountryCode;
temp.Item.PreferredMetadataLanguage = item.PreferredMetadataLanguage; temp.Item.PreferredMetadataLanguage = item.PreferredMetadataLanguage;
@ -728,7 +729,7 @@ namespace MediaBrowser.Providers.Manager
refreshResult.UpdateType |= ItemUpdateType.ImageUpdate; refreshResult.UpdateType |= ItemUpdateType.ImageUpdate;
} }
MergeData(localItem, temp, Array.Empty<MetadataField>(), false, true); MergeData(localItem, temp, [], false, true);
refreshResult.UpdateType |= ItemUpdateType.MetadataImport; refreshResult.UpdateType |= ItemUpdateType.MetadataImport;
break; break;
@ -768,7 +769,7 @@ namespace MediaBrowser.Providers.Manager
if (!options.RemoveOldMetadata) if (!options.RemoveOldMetadata)
{ {
// Add existing metadata to provider result if it does not exist there // Add existing metadata to provider result if it does not exist there
MergeData(metadata, temp, Array.Empty<MetadataField>(), false, false); MergeData(metadata, temp, [], false, false);
} }
if (isLocalLocked) if (isLocalLocked)
@ -837,7 +838,7 @@ namespace MediaBrowser.Providers.Manager
{ {
result.Provider = provider.Name; result.Provider = provider.Name;
MergeData(result, temp, Array.Empty<MetadataField>(), replaceData, false); MergeData(result, temp, [], replaceData, false);
MergeNewData(temp.Item, id); MergeNewData(temp.Item, id);
refreshResult.UpdateType |= ItemUpdateType.MetadataDownload; refreshResult.UpdateType |= ItemUpdateType.MetadataDownload;

View File

@ -1,5 +1,3 @@
#pragma warning disable CS1591
using System; using System;
using MediaBrowser.Controller.Configuration; using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Entities.TV;
@ -12,8 +10,19 @@ using Microsoft.Extensions.Logging;
namespace MediaBrowser.Providers.TV namespace MediaBrowser.Providers.TV
{ {
/// <summary>
/// Service to manage episode metadata.
/// </summary>
public class EpisodeMetadataService : MetadataService<Episode, EpisodeInfo> public class EpisodeMetadataService : MetadataService<Episode, EpisodeInfo>
{ {
/// <summary>
/// Initializes a new instance of the <see cref="EpisodeMetadataService"/> class.
/// </summary>
/// <param name="serverConfigurationManager">Instance of the <see cref="IServerConfigurationManager"/> interface.</param>
/// <param name="logger">Instance of the <see cref="ILogger{SeasonMetadataService}"/> interface.</param>
/// <param name="providerManager">Instance of the <see cref="IProviderManager"/> interface.</param>
/// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
/// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
public EpisodeMetadataService( public EpisodeMetadataService(
IServerConfigurationManager serverConfigurationManager, IServerConfigurationManager serverConfigurationManager,
ILogger<EpisodeMetadataService> logger, ILogger<EpisodeMetadataService> logger,
@ -94,6 +103,11 @@ namespace MediaBrowser.Providers.TV
{ {
targetItem.IndexNumberEnd = sourceItem.IndexNumberEnd; targetItem.IndexNumberEnd = sourceItem.IndexNumberEnd;
} }
if (replaceData || !targetItem.ParentIndexNumber.HasValue)
{
targetItem.ParentIndexNumber = sourceItem.ParentIndexNumber;
}
} }
} }
} }

View File

@ -1,5 +1,3 @@
#pragma warning disable CS1591
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
@ -15,8 +13,19 @@ using Microsoft.Extensions.Logging;
namespace MediaBrowser.Providers.TV namespace MediaBrowser.Providers.TV
{ {
/// <summary>
/// Service to manage season metadata.
/// </summary>
public class SeasonMetadataService : MetadataService<Season, SeasonInfo> public class SeasonMetadataService : MetadataService<Season, SeasonInfo>
{ {
/// <summary>
/// Initializes a new instance of the <see cref="SeasonMetadataService"/> class.
/// </summary>
/// <param name="serverConfigurationManager">Instance of the <see cref="IServerConfigurationManager"/> interface.</param>
/// <param name="logger">Instance of the <see cref="ILogger{SeasonMetadataService}"/> interface.</param>
/// <param name="providerManager">Instance of the <see cref="IProviderManager"/> interface.</param>
/// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
/// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
public SeasonMetadataService( public SeasonMetadataService(
IServerConfigurationManager serverConfigurationManager, IServerConfigurationManager serverConfigurationManager,
ILogger<SeasonMetadataService> logger, ILogger<SeasonMetadataService> logger,

View File

@ -1,5 +1,3 @@
#pragma warning disable CS1591
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Globalization; using System.Globalization;
@ -20,10 +18,22 @@ using Microsoft.Extensions.Logging;
namespace MediaBrowser.Providers.TV namespace MediaBrowser.Providers.TV
{ {
/// <summary>
/// Service to manage series metadata.
/// </summary>
public class SeriesMetadataService : MetadataService<Series, SeriesInfo> public class SeriesMetadataService : MetadataService<Series, SeriesInfo>
{ {
private readonly ILocalizationManager _localizationManager; private readonly ILocalizationManager _localizationManager;
/// <summary>
/// Initializes a new instance of the <see cref="SeriesMetadataService"/> class.
/// </summary>
/// <param name="serverConfigurationManager">Instance of the <see cref="IServerConfigurationManager"/> interface.</param>
/// <param name="logger">Instance of the <see cref="ILogger{SeasonMetadataService}"/> interface.</param>
/// <param name="providerManager">Instance of the <see cref="IProviderManager"/> interface.</param>
/// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
/// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
/// <param name="localizationManager">Instance of the <see cref="ILocalizationManager"/> interface.</param>
public SeriesMetadataService( public SeriesMetadataService(
IServerConfigurationManager serverConfigurationManager, IServerConfigurationManager serverConfigurationManager,
ILogger<SeriesMetadataService> logger, ILogger<SeriesMetadataService> logger,
@ -36,6 +46,7 @@ namespace MediaBrowser.Providers.TV
_localizationManager = localizationManager; _localizationManager = localizationManager;
} }
/// <inheritdoc />
public override async Task<ItemUpdateType> RefreshMetadata(BaseItem item, MetadataRefreshOptions refreshOptions, CancellationToken cancellationToken) public override async Task<ItemUpdateType> RefreshMetadata(BaseItem item, MetadataRefreshOptions refreshOptions, CancellationToken cancellationToken)
{ {
if (item is Series series) if (item is Series series)