restore dummy season folder creation
This commit is contained in:
parent
c3dbca1507
commit
83ec91f836
|
@ -4,11 +4,11 @@ using MediaBrowser.Model.Configuration;
|
||||||
using MediaBrowser.Model.Dto;
|
using MediaBrowser.Model.Dto;
|
||||||
using MediaBrowser.Model.Entities;
|
using MediaBrowser.Model.Entities;
|
||||||
using MediaBrowser.Model.MediaInfo;
|
using MediaBrowser.Model.MediaInfo;
|
||||||
|
using MediaBrowser.Model.Users;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Runtime.Serialization;
|
using System.Runtime.Serialization;
|
||||||
using MediaBrowser.Model.Users;
|
|
||||||
|
|
||||||
namespace MediaBrowser.Controller.Entities.Audio
|
namespace MediaBrowser.Controller.Entities.Audio
|
||||||
{
|
{
|
||||||
|
@ -80,6 +80,15 @@ namespace MediaBrowser.Controller.Entities.Audio
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[IgnoreDataMember]
|
||||||
|
protected override bool SupportsOwnedItems
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[IgnoreDataMember]
|
||||||
public override Folder LatestItemsIndexContainer
|
public override Folder LatestItemsIndexContainer
|
||||||
{
|
{
|
||||||
|
|
|
@ -690,7 +690,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
|
|
||||||
var requiresSave = false;
|
var requiresSave = false;
|
||||||
|
|
||||||
if (IsFolder || Parent != null)
|
if (SupportsOwnedItems)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -722,6 +722,12 @@ namespace MediaBrowser.Controller.Entities
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[IgnoreDataMember]
|
||||||
|
protected virtual bool SupportsOwnedItems
|
||||||
|
{
|
||||||
|
get { return IsFolder || Parent != null; }
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Refreshes owned items such as trailers, theme videos, special features, etc.
|
/// Refreshes owned items such as trailers, theme videos, special features, etc.
|
||||||
/// Returns true or false indicating if changes were found.
|
/// Returns true or false indicating if changes were found.
|
||||||
|
|
|
@ -6,7 +6,6 @@ using MediaBrowser.Controller.Providers;
|
||||||
using MediaBrowser.Model.Dto;
|
using MediaBrowser.Model.Dto;
|
||||||
using MediaBrowser.Model.Entities;
|
using MediaBrowser.Model.Entities;
|
||||||
using MediaBrowser.Model.Querying;
|
using MediaBrowser.Model.Querying;
|
||||||
using MoreLinq;
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
@ -106,6 +105,7 @@ namespace MediaBrowser.Controller.Entities
|
||||||
|
|
||||||
public virtual List<LinkedChild> LinkedChildren { get; set; }
|
public virtual List<LinkedChild> LinkedChildren { get; set; }
|
||||||
|
|
||||||
|
[IgnoreDataMember]
|
||||||
protected virtual bool SupportsShortcutChildren
|
protected virtual bool SupportsShortcutChildren
|
||||||
{
|
{
|
||||||
get { return true; }
|
get { return true; }
|
||||||
|
@ -1033,6 +1033,15 @@ namespace MediaBrowser.Controller.Entities
|
||||||
.Where(i => i.Item2 != null);
|
.Where(i => i.Item2 != null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[IgnoreDataMember]
|
||||||
|
protected override bool SupportsOwnedItems
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return base.SupportsOwnedItems || SupportsShortcutChildren;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected override async Task<bool> RefreshedOwnedItems(MetadataRefreshOptions options, List<FileSystemInfo> fileSystemChildren, CancellationToken cancellationToken)
|
protected override async Task<bool> RefreshedOwnedItems(MetadataRefreshOptions options, List<FileSystemInfo> fileSystemChildren, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
var changesFound = false;
|
var changesFound = false;
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
using MediaBrowser.Common.Progress;
|
using MediaBrowser.Controller.Entities.TV;
|
||||||
using MediaBrowser.Controller.Entities.TV;
|
|
||||||
using MediaBrowser.Controller.Providers;
|
using MediaBrowser.Controller.Providers;
|
||||||
using MediaBrowser.Model.Configuration;
|
using MediaBrowser.Model.Configuration;
|
||||||
using MediaBrowser.Model.Entities;
|
using MediaBrowser.Model.Entities;
|
||||||
|
@ -138,7 +137,6 @@ namespace MediaBrowser.Controller.Entities.Movies
|
||||||
|
|
||||||
public async Task RefreshAllMetadata(MetadataRefreshOptions refreshOptions, IProgress<double> progress, CancellationToken cancellationToken)
|
public async Task RefreshAllMetadata(MetadataRefreshOptions refreshOptions, IProgress<double> progress, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
var b = this;
|
|
||||||
// Refresh bottom up, children first, then the boxset
|
// Refresh bottom up, children first, then the boxset
|
||||||
// By then hopefully the movies within will have Tmdb collection values
|
// By then hopefully the movies within will have Tmdb collection values
|
||||||
var items = GetRecursiveChildren().ToList();
|
var items = GetRecursiveChildren().ToList();
|
||||||
|
|
|
@ -55,6 +55,15 @@ namespace MediaBrowser.Controller.Entities.TV
|
||||||
get { return true; }
|
get { return true; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[IgnoreDataMember]
|
||||||
|
protected override bool SupportsOwnedItems
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return IsStacked || MediaSourceCount > 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
[IgnoreDataMember]
|
[IgnoreDataMember]
|
||||||
public int? AiredSeasonNumber
|
public int? AiredSeasonNumber
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,4 +1,6 @@
|
||||||
using MediaBrowser.Controller.Localization;
|
using System.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using MediaBrowser.Controller.Localization;
|
||||||
using MediaBrowser.Controller.Providers;
|
using MediaBrowser.Controller.Providers;
|
||||||
using MediaBrowser.Model.Configuration;
|
using MediaBrowser.Model.Configuration;
|
||||||
using MediaBrowser.Model.Entities;
|
using MediaBrowser.Model.Entities;
|
||||||
|
@ -14,7 +16,7 @@ namespace MediaBrowser.Controller.Entities.TV
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class Series
|
/// Class Series
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class Series : Folder, IHasSoundtracks, IHasTrailers, IHasDisplayOrder, IHasLookupInfo<SeriesInfo>, IHasSpecialFeatures
|
public class Series : Folder, IHasSoundtracks, IHasTrailers, IHasDisplayOrder, IHasLookupInfo<SeriesInfo>, IHasSpecialFeatures, IMetadataContainer
|
||||||
{
|
{
|
||||||
public List<Guid> SpecialFeatureIds { get; set; }
|
public List<Guid> SpecialFeatureIds { get; set; }
|
||||||
public List<Guid> SoundtrackIds { get; set; }
|
public List<Guid> SoundtrackIds { get; set; }
|
||||||
|
@ -210,6 +212,55 @@ namespace MediaBrowser.Controller.Entities.TV
|
||||||
return returnList;
|
return returnList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task RefreshAllMetadata(MetadataRefreshOptions refreshOptions, IProgress<double> progress, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
// Refresh bottom up, children first, then the boxset
|
||||||
|
// By then hopefully the movies within will have Tmdb collection values
|
||||||
|
var items = GetRecursiveChildren().ToList();
|
||||||
|
|
||||||
|
var seasons = items.OfType<Season>().ToList();
|
||||||
|
var otherItems = items.Except(seasons).ToList();
|
||||||
|
|
||||||
|
var totalItems = seasons.Count + otherItems.Count;
|
||||||
|
var numComplete = 0;
|
||||||
|
|
||||||
|
refreshOptions = new MetadataRefreshOptions(refreshOptions);
|
||||||
|
refreshOptions.IsPostRecursiveRefresh = true;
|
||||||
|
|
||||||
|
// Refresh songs
|
||||||
|
foreach (var item in seasons)
|
||||||
|
{
|
||||||
|
cancellationToken.ThrowIfCancellationRequested();
|
||||||
|
|
||||||
|
await item.RefreshMetadata(refreshOptions, cancellationToken).ConfigureAwait(false);
|
||||||
|
|
||||||
|
numComplete++;
|
||||||
|
double percent = numComplete;
|
||||||
|
percent /= totalItems;
|
||||||
|
progress.Report(percent * 100);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Refresh current item
|
||||||
|
await RefreshMetadata(refreshOptions, cancellationToken).ConfigureAwait(false);
|
||||||
|
|
||||||
|
// Refresh all non-songs
|
||||||
|
foreach (var item in otherItems)
|
||||||
|
{
|
||||||
|
cancellationToken.ThrowIfCancellationRequested();
|
||||||
|
|
||||||
|
await item.RefreshMetadata(refreshOptions, cancellationToken).ConfigureAwait(false);
|
||||||
|
|
||||||
|
numComplete++;
|
||||||
|
double percent = numComplete;
|
||||||
|
percent /= totalItems;
|
||||||
|
progress.Report(percent * 100);
|
||||||
|
}
|
||||||
|
|
||||||
|
await ProviderManager.RefreshMetadata(this, refreshOptions, cancellationToken).ConfigureAwait(false);
|
||||||
|
|
||||||
|
progress.Report(100);
|
||||||
|
}
|
||||||
|
|
||||||
public IEnumerable<Episode> GetEpisodes(User user, int seasonNumber)
|
public IEnumerable<Episode> GetEpisodes(User user, int seasonNumber)
|
||||||
{
|
{
|
||||||
var config = user.Configuration;
|
var config = user.Configuration;
|
||||||
|
|
|
@ -11,6 +11,8 @@ namespace MediaBrowser.Controller.Providers
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool ReplaceAllMetadata { get; set; }
|
public bool ReplaceAllMetadata { get; set; }
|
||||||
|
|
||||||
|
public bool IsPostRecursiveRefresh { get; set; }
|
||||||
|
|
||||||
public MetadataRefreshMode MetadataRefreshMode { get; set; }
|
public MetadataRefreshMode MetadataRefreshMode { get; set; }
|
||||||
|
|
||||||
public bool ForceSave { get; set; }
|
public bool ForceSave { get; set; }
|
||||||
|
|
|
@ -183,7 +183,14 @@ namespace MediaBrowser.Providers.Manager
|
||||||
await SaveProviderResult(itemOfType, refreshResult, refreshOptions.DirectoryService).ConfigureAwait(false);
|
await SaveProviderResult(itemOfType, refreshResult, refreshOptions.DirectoryService).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
itemOfType.AfterMetadataRefresh();
|
await AfterMetadataRefresh(itemOfType, refreshOptions, cancellationToken).ConfigureAwait(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
private readonly Task _cachedTask = Task.FromResult(true);
|
||||||
|
protected virtual Task AfterMetadataRefresh(TItemType item, MetadataRefreshOptions refreshOptions, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
item.AfterMetadataRefresh();
|
||||||
|
return _cachedTask;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void MergeIdentities(TItemType item, TIdType id)
|
private void MergeIdentities(TItemType item, TIdType id)
|
||||||
|
|
|
@ -8,6 +8,8 @@ using MediaBrowser.Model.Entities;
|
||||||
using MediaBrowser.Model.Logging;
|
using MediaBrowser.Model.Logging;
|
||||||
using MediaBrowser.Providers.Manager;
|
using MediaBrowser.Providers.Manager;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace MediaBrowser.Providers.TV
|
namespace MediaBrowser.Providers.TV
|
||||||
{
|
{
|
||||||
|
@ -16,7 +18,8 @@ namespace MediaBrowser.Providers.TV
|
||||||
private readonly ILocalizationManager _localization;
|
private readonly ILocalizationManager _localization;
|
||||||
private readonly ILibraryManager _libraryManager;
|
private readonly ILibraryManager _libraryManager;
|
||||||
|
|
||||||
public SeriesMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILocalizationManager localization, ILibraryManager libraryManager) : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager)
|
public SeriesMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, IUserDataManager userDataManager, ILocalizationManager localization, ILibraryManager libraryManager)
|
||||||
|
: base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem, userDataManager)
|
||||||
{
|
{
|
||||||
_localization = localization;
|
_localization = localization;
|
||||||
_libraryManager = libraryManager;
|
_libraryManager = libraryManager;
|
||||||
|
@ -59,5 +62,17 @@ namespace MediaBrowser.Providers.TV
|
||||||
target.DisplaySpecialsWithSeasons = source.DisplaySpecialsWithSeasons;
|
target.DisplaySpecialsWithSeasons = source.DisplaySpecialsWithSeasons;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected override async Task AfterMetadataRefresh(Series item, MetadataRefreshOptions refreshOptions, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
await base.AfterMetadataRefresh(item, refreshOptions, cancellationToken).ConfigureAwait(false);
|
||||||
|
|
||||||
|
if (refreshOptions.IsPostRecursiveRefresh)
|
||||||
|
{
|
||||||
|
var provider = new DummySeasonProvider(ServerConfigurationManager, Logger, _localization, _libraryManager);
|
||||||
|
|
||||||
|
await provider.Run(item, CancellationToken.None).ConfigureAwait(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,13 +48,6 @@ namespace MediaBrowser.Providers.TV
|
||||||
.Cast<Series>()
|
.Cast<Series>()
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
||||||
var provider = new DummySeasonProvider(_config, _logger, _localization, _libraryManager);
|
|
||||||
|
|
||||||
foreach (var series in seriesList)
|
|
||||||
{
|
|
||||||
await provider.Run(series, cancellationToken).ConfigureAwait(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
var seriesGroups = FindSeriesGroups(seriesList).Where(g => !string.IsNullOrEmpty(g.Key)).ToList();
|
var seriesGroups = FindSeriesGroups(seriesList).Where(g => !string.IsNullOrEmpty(g.Key)).ToList();
|
||||||
|
|
||||||
await new MissingEpisodeProvider(_logger, _config, _libraryManager, _localization).Run(seriesGroups, cancellationToken).ConfigureAwait(false);
|
await new MissingEpisodeProvider(_logger, _config, _libraryManager, _localization).Run(seriesGroups, cancellationToken).ConfigureAwait(false);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user