diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-02-09 18:08:01 -0500 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-02-09 18:08:01 -0500 |
| commit | 44bb192ce0e286ced703394f733ca033b489ebc5 (patch) | |
| tree | ec893218d10581513b4679d6b7da490c3c49ecf9 /MediaBrowser.Providers | |
| parent | 6ff59b7e590be140781292206a55822742f2c8fa (diff) | |
update wizard function of enable/disable local metadata saving
Diffstat (limited to 'MediaBrowser.Providers')
19 files changed, 52 insertions, 99 deletions
diff --git a/MediaBrowser.Providers/Folders/UserRootFolderNameProvider.cs b/MediaBrowser.Providers/Folders/UserRootFolderNameProvider.cs deleted file mode 100644 index 043e32d11..000000000 --- a/MediaBrowser.Providers/Folders/UserRootFolderNameProvider.cs +++ /dev/null @@ -1,42 +0,0 @@ -using MediaBrowser.Controller.Configuration; -using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Providers; -using MediaBrowser.Model.Logging; -using System; -using System.IO; -using System.Threading; -using System.Threading.Tasks; - -namespace MediaBrowser.Providers.Folders -{ - public class UserRootFolderNameProvider : BaseMetadataProvider - { - public UserRootFolderNameProvider(ILogManager logManager, IServerConfigurationManager configurationManager) - : base(logManager, configurationManager) - { - } - - public override bool Supports(BaseItem item) - { - return item is UserRootFolder; - } - - public override Task<bool> FetchAsync(BaseItem item, bool force, BaseProviderInfo providerInfo, CancellationToken cancellationToken) - { - var parentName = Path.GetFileNameWithoutExtension(item.Path); - - if (string.Equals(parentName, "default", StringComparison.OrdinalIgnoreCase)) - { - item.Name = "Media Library"; - } - - SetLastRefreshed(item, DateTime.UtcNow, providerInfo); - return TrueTaskResult; - } - - public override MetadataProviderPriority Priority - { - get { return MetadataProviderPriority.First; } - } - } -} diff --git a/MediaBrowser.Providers/Manager/MetadataService.cs b/MediaBrowser.Providers/Manager/MetadataService.cs index f7c2cef94..93879d826 100644 --- a/MediaBrowser.Providers/Manager/MetadataService.cs +++ b/MediaBrowser.Providers/Manager/MetadataService.cs @@ -71,7 +71,7 @@ namespace MediaBrowser.Providers.Manager } var itemOfType = (TItemType)item; - var config = GetMetadataOptions(itemOfType); + var config = ProviderManager.GetMetadataOptions(item); var updateType = ItemUpdateType.Unspecified; var refreshResult = GetLastResult(item.Id); @@ -157,15 +157,6 @@ namespace MediaBrowser.Providers.Manager } } - private readonly MetadataOptions _defaultOptions = new MetadataOptions(); - protected MetadataOptions GetMetadataOptions(TItemType item) - { - var type = item.GetType().Name; - return ServerConfigurationManager.Configuration.MetadataOptions - .FirstOrDefault(i => string.Equals(i.ItemType, type, StringComparison.OrdinalIgnoreCase)) ?? - _defaultOptions; - } - /// <summary> /// Befores the metadata refresh. /// </summary> diff --git a/MediaBrowser.Providers/Manager/ProviderManager.cs b/MediaBrowser.Providers/Manager/ProviderManager.cs index fd19d572c..a6817cf32 100644 --- a/MediaBrowser.Providers/Manager/ProviderManager.cs +++ b/MediaBrowser.Providers/Manager/ProviderManager.cs @@ -470,7 +470,7 @@ namespace MediaBrowser.Providers.Manager })); // Savers - list.AddRange(_savers.Where(i => IsSaverEnabledForItem(i, item, ItemUpdateType.MetadataEdit)).OrderBy(i => i.Name).Select(i => new MetadataPlugin + list.AddRange(_savers.Where(i => IsSaverEnabledForItem(i, item, ItemUpdateType.MetadataEdit, false)).OrderBy(i => i.Name).Select(i => new MetadataPlugin { Name = i.Name, Type = MetadataPluginType.MetadataSaver @@ -498,6 +498,14 @@ namespace MediaBrowser.Providers.Manager private readonly ConcurrentDictionary<string, SemaphoreSlim> _fileLocks = new ConcurrentDictionary<string, SemaphoreSlim>(); + public MetadataOptions GetMetadataOptions(IHasMetadata item) + { + var type = item.GetType().Name; + return ConfigurationManager.Configuration.MetadataOptions + .FirstOrDefault(i => string.Equals(i.ItemType, type, StringComparison.OrdinalIgnoreCase)) ?? + new MetadataOptions(); + } + /// <summary> /// Saves the metadata. /// </summary> @@ -506,7 +514,7 @@ namespace MediaBrowser.Providers.Manager /// <returns>Task.</returns> public async Task SaveMetadata(IHasMetadata item, ItemUpdateType updateType) { - foreach (var saver in _savers.Where(i => IsSaverEnabledForItem(i, item, updateType))) + foreach (var saver in _savers.Where(i => IsSaverEnabledForItem(i, item, updateType, true))) { _logger.Debug("Saving {0} to {1}.", item.Path ?? item.Name, saver.Name); @@ -559,10 +567,17 @@ namespace MediaBrowser.Providers.Manager } } - private bool IsSaverEnabledForItem(IMetadataSaver saver, IHasMetadata item, ItemUpdateType updateType) + private bool IsSaverEnabledForItem(IMetadataSaver saver, IHasMetadata item, ItemUpdateType updateType, bool enforceConfiguration) { + var options = GetMetadataOptions(item); + try { + if (enforceConfiguration && options.DisabledMetadataSavers.Contains(saver.Name, StringComparer.OrdinalIgnoreCase)) + { + return false; + } + return saver.IsEnabledFor(item, updateType); } catch (Exception ex) diff --git a/MediaBrowser.Providers/MediaBrowser.Providers.csproj b/MediaBrowser.Providers/MediaBrowser.Providers.csproj index 672cd86a6..5cf4b2591 100644 --- a/MediaBrowser.Providers/MediaBrowser.Providers.csproj +++ b/MediaBrowser.Providers/MediaBrowser.Providers.csproj @@ -135,11 +135,11 @@ <Compile Include="People\MovieDbPersonImageProvider.cs" /> <Compile Include="Movies\MovieUpdatesPrescanTask.cs" /> <Compile Include="Movies\MovieXmlParser.cs" /> - <Compile Include="Movies\FanArtMovieUpdatesPrescanTask.cs" /> + <Compile Include="Movies\FanArtMovieUpdatesPostScanTask.cs" /> <Compile Include="Movies\MovieDbProvider.cs" /> <Compile Include="Music\AlbumXmlProvider.cs" /> <Compile Include="Music\ArtistXmlProvider.cs" /> - <Compile Include="Music\FanArtUpdatesPrescanTask.cs" /> + <Compile Include="Music\FanArtUpdatesPostScanTask.cs" /> <Compile Include="Music\LastfmAlbumProvider.cs" /> <Compile Include="Music\LastfmHelper.cs" /> <Compile Include="Music\FanArtAlbumProvider.cs" /> @@ -172,7 +172,7 @@ <Compile Include="TV\EpisodeMetadataService.cs" /> <Compile Include="TV\EpisodeXmlProvider.cs" /> <Compile Include="TV\EpisodeXmlParser.cs" /> - <Compile Include="TV\FanArtTvUpdatesPrescanTask.cs" /> + <Compile Include="TV\FanArtTvUpdatesPostScanTask.cs" /> <Compile Include="TV\FanartSeasonProvider.cs" /> <Compile Include="TV\FanartSeriesProvider.cs" /> <Compile Include="TV\MovieDbSeriesImageProvider.cs" /> @@ -190,7 +190,6 @@ <Compile Include="TV\SeriesXmlProvider.cs" /> <Compile Include="TV\SeriesXmlParser.cs" /> <Compile Include="TV\TvdbPrescanTask.cs" /> - <Compile Include="Folders\UserRootFolderNameProvider.cs" /> <Compile Include="Users\UserMetadataService.cs" /> <Compile Include="Videos\VideoMetadataService.cs" /> <Compile Include="Years\YearMetadataService.cs" /> diff --git a/MediaBrowser.Providers/Movies/FanArtMovieUpdatesPrescanTask.cs b/MediaBrowser.Providers/Movies/FanArtMovieUpdatesPostScanTask.cs index 600ba1925..6f911d411 100644 --- a/MediaBrowser.Providers/Movies/FanArtMovieUpdatesPrescanTask.cs +++ b/MediaBrowser.Providers/Movies/FanArtMovieUpdatesPostScanTask.cs @@ -16,7 +16,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Providers.Movies { - class FanartMovieUpdatesPrescanTask : ILibraryPostScanTask + class FanartMovieUpdatesPostScanTask : ILibraryPostScanTask { private const string UpdatesUrl = "http://api.fanart.tv/webservice/newmovies/{0}/{1}/"; @@ -37,7 +37,7 @@ namespace MediaBrowser.Providers.Movies private static readonly CultureInfo UsCulture = new CultureInfo("en-US"); - public FanartMovieUpdatesPrescanTask(IJsonSerializer jsonSerializer, IServerConfigurationManager config, ILogger logger, IHttpClient httpClient, IFileSystem fileSystem) + public FanartMovieUpdatesPostScanTask(IJsonSerializer jsonSerializer, IServerConfigurationManager config, ILogger logger, IHttpClient httpClient, IFileSystem fileSystem) { _jsonSerializer = jsonSerializer; _config = config; @@ -118,7 +118,7 @@ namespace MediaBrowser.Providers.Movies return new List<string>(); } - var updates = _jsonSerializer.DeserializeFromString<List<FanartUpdatesPrescanTask.FanArtUpdate>>(json); + var updates = _jsonSerializer.DeserializeFromString<List<FanartUpdatesPostScanTask.FanArtUpdate>>(json); var existingDictionary = existingIds.ToDictionary(i => i, StringComparer.OrdinalIgnoreCase); diff --git a/MediaBrowser.Providers/Music/FanArtUpdatesPrescanTask.cs b/MediaBrowser.Providers/Music/FanArtUpdatesPostScanTask.cs index d002c02f2..9d24490b2 100644 --- a/MediaBrowser.Providers/Music/FanArtUpdatesPrescanTask.cs +++ b/MediaBrowser.Providers/Music/FanArtUpdatesPostScanTask.cs @@ -15,7 +15,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Providers.Music { - class FanartUpdatesPrescanTask : ILibraryPostScanTask + class FanartUpdatesPostScanTask : ILibraryPostScanTask { private const string UpdatesUrl = "http://api.fanart.tv/webservice/newmusic/{0}/{1}/"; @@ -36,7 +36,7 @@ namespace MediaBrowser.Providers.Music private static readonly CultureInfo UsCulture = new CultureInfo("en-US"); - public FanartUpdatesPrescanTask(IJsonSerializer jsonSerializer, IServerConfigurationManager config, ILogger logger, IHttpClient httpClient, IFileSystem fileSystem) + public FanartUpdatesPostScanTask(IJsonSerializer jsonSerializer, IServerConfigurationManager config, ILogger logger, IHttpClient httpClient, IFileSystem fileSystem) { _jsonSerializer = jsonSerializer; _config = config; diff --git a/MediaBrowser.Providers/Savers/AlbumXmlSaver.cs b/MediaBrowser.Providers/Savers/AlbumXmlSaver.cs index 74c507394..a1595bce1 100644 --- a/MediaBrowser.Providers/Savers/AlbumXmlSaver.cs +++ b/MediaBrowser.Providers/Savers/AlbumXmlSaver.cs @@ -46,7 +46,7 @@ namespace MediaBrowser.Providers.Savers var wasMetadataDownloaded = (updateType & ItemUpdateType.MetadataDownload) == ItemUpdateType.MetadataDownload; // If new metadata has been downloaded and save local is on - if (item.IsSaveLocalMetadataEnabled() && (wasMetadataEdited || wasMetadataDownloaded)) + if (wasMetadataEdited || wasMetadataDownloaded) { return item is MusicAlbum; } diff --git a/MediaBrowser.Providers/Savers/ArtistXmlSaver.cs b/MediaBrowser.Providers/Savers/ArtistXmlSaver.cs index c5c564fba..5a7b85205 100644 --- a/MediaBrowser.Providers/Savers/ArtistXmlSaver.cs +++ b/MediaBrowser.Providers/Savers/ArtistXmlSaver.cs @@ -47,20 +47,10 @@ namespace MediaBrowser.Providers.Savers var wasMetadataEdited = (updateType & ItemUpdateType.MetadataEdit) == ItemUpdateType.MetadataEdit; var wasMetadataDownloaded = (updateType & ItemUpdateType.MetadataDownload) == ItemUpdateType.MetadataDownload; - // If new metadata has been downloaded and save local is on - if (item.IsSaveLocalMetadataEnabled() && (wasMetadataEdited || wasMetadataDownloaded)) - { - if (item is MusicArtist) - { - return true; - } - } - // If new metadata has been downloaded or metadata was manually edited, proceed - if (wasMetadataDownloaded || wasMetadataEdited) + if (wasMetadataEdited || wasMetadataDownloaded) { - var artist = item as MusicArtist; - if (artist != null && artist.IsAccessedByName) + if (item is MusicArtist) { return true; } diff --git a/MediaBrowser.Providers/Savers/BoxSetXmlSaver.cs b/MediaBrowser.Providers/Savers/BoxSetXmlSaver.cs index fb5c57095..7b142b68e 100644 --- a/MediaBrowser.Providers/Savers/BoxSetXmlSaver.cs +++ b/MediaBrowser.Providers/Savers/BoxSetXmlSaver.cs @@ -46,7 +46,7 @@ namespace MediaBrowser.Providers.Savers var wasMetadataDownloaded = (updateType & ItemUpdateType.MetadataDownload) == ItemUpdateType.MetadataDownload; // If new metadata has been downloaded and save local is on - if (item.IsSaveLocalMetadataEnabled() && (wasMetadataEdited || wasMetadataDownloaded)) + if (wasMetadataEdited || wasMetadataDownloaded) { return item is BoxSet; } diff --git a/MediaBrowser.Providers/Savers/EpisodeXmlSaver.cs b/MediaBrowser.Providers/Savers/EpisodeXmlSaver.cs index f9932ce75..af73791c9 100644 --- a/MediaBrowser.Providers/Savers/EpisodeXmlSaver.cs +++ b/MediaBrowser.Providers/Savers/EpisodeXmlSaver.cs @@ -37,7 +37,7 @@ namespace MediaBrowser.Providers.Savers var wasMetadataDownloaded = (updateType & ItemUpdateType.MetadataDownload) == ItemUpdateType.MetadataDownload; // If new metadata has been downloaded and save local is on - if (item.IsSaveLocalMetadataEnabled() && (wasMetadataEdited || wasMetadataDownloaded)) + if (wasMetadataEdited || wasMetadataDownloaded) { return item is Episode; } diff --git a/MediaBrowser.Providers/Savers/FolderXmlSaver.cs b/MediaBrowser.Providers/Savers/FolderXmlSaver.cs index 5c21443ce..40e1ab019 100644 --- a/MediaBrowser.Providers/Savers/FolderXmlSaver.cs +++ b/MediaBrowser.Providers/Savers/FolderXmlSaver.cs @@ -55,7 +55,7 @@ namespace MediaBrowser.Providers.Savers var wasMetadataDownloaded = (updateType & ItemUpdateType.MetadataDownload) == ItemUpdateType.MetadataDownload; // If new metadata has been downloaded and save local is on - if (item.IsSaveLocalMetadataEnabled() && (wasMetadataEdited || wasMetadataDownloaded)) + if (wasMetadataEdited || wasMetadataDownloaded) { if (!(item is Series) && !(item is BoxSet) && !(item is MusicArtist) && !(item is MusicAlbum) && !(item is Season) && @@ -65,15 +65,6 @@ namespace MediaBrowser.Providers.Savers } } - // If new metadata has been downloaded or metadata was manually edited, proceed - if (wasMetadataDownloaded || wasMetadataEdited) - { - if (item is AggregateFolder || item is UserRootFolder || item is CollectionFolder) - { - return true; - } - } - return false; } diff --git a/MediaBrowser.Providers/Savers/GameSystemXmlSaver.cs b/MediaBrowser.Providers/Savers/GameSystemXmlSaver.cs index f0d34df08..020f8987c 100644 --- a/MediaBrowser.Providers/Savers/GameSystemXmlSaver.cs +++ b/MediaBrowser.Providers/Savers/GameSystemXmlSaver.cs @@ -46,7 +46,7 @@ namespace MediaBrowser.Providers.Savers var wasMetadataDownloaded = (updateType & ItemUpdateType.MetadataDownload) == ItemUpdateType.MetadataDownload; // If new metadata has been downloaded and save local is on - if (item.IsSaveLocalMetadataEnabled() && (wasMetadataEdited || wasMetadataDownloaded)) + if (wasMetadataEdited || wasMetadataDownloaded) { return item is GameSystem; } diff --git a/MediaBrowser.Providers/Savers/GameXmlSaver.cs b/MediaBrowser.Providers/Savers/GameXmlSaver.cs index a2a96909f..6f50cfda8 100644 --- a/MediaBrowser.Providers/Savers/GameXmlSaver.cs +++ b/MediaBrowser.Providers/Savers/GameXmlSaver.cs @@ -49,7 +49,7 @@ namespace MediaBrowser.Providers.Savers var wasMetadataDownloaded = (updateType & ItemUpdateType.MetadataDownload) == ItemUpdateType.MetadataDownload; // If new metadata has been downloaded and save local is on - if (item.IsSaveLocalMetadataEnabled() && (wasMetadataEdited || wasMetadataDownloaded)) + if (wasMetadataEdited || wasMetadataDownloaded) { return item is Game; } diff --git a/MediaBrowser.Providers/Savers/MovieXmlSaver.cs b/MediaBrowser.Providers/Savers/MovieXmlSaver.cs index e62a86af0..851c81f54 100644 --- a/MediaBrowser.Providers/Savers/MovieXmlSaver.cs +++ b/MediaBrowser.Providers/Savers/MovieXmlSaver.cs @@ -56,7 +56,7 @@ namespace MediaBrowser.Providers.Savers var wasMetadataDownloaded = (updateType & ItemUpdateType.MetadataDownload) == ItemUpdateType.MetadataDownload; // If new metadata has been downloaded and save local is on - if (item.IsSaveLocalMetadataEnabled() && (wasMetadataEdited || wasMetadataDownloaded)) + if (wasMetadataEdited || wasMetadataDownloaded) { var video = item as Video; // Check parent for null to avoid running this against things like video backdrops diff --git a/MediaBrowser.Providers/Savers/SeasonXmlSaver.cs b/MediaBrowser.Providers/Savers/SeasonXmlSaver.cs index cc0bf8b36..f8d4549cf 100644 --- a/MediaBrowser.Providers/Savers/SeasonXmlSaver.cs +++ b/MediaBrowser.Providers/Savers/SeasonXmlSaver.cs @@ -46,7 +46,7 @@ namespace MediaBrowser.Providers.Savers var wasMetadataDownloaded = (updateType & ItemUpdateType.MetadataDownload) == ItemUpdateType.MetadataDownload; // If new metadata has been downloaded and save local is on - if (item.IsSaveLocalMetadataEnabled() && (wasMetadataEdited || wasMetadataDownloaded)) + if (wasMetadataEdited || wasMetadataDownloaded) { return item is Season; } diff --git a/MediaBrowser.Providers/Savers/SeriesXmlSaver.cs b/MediaBrowser.Providers/Savers/SeriesXmlSaver.cs index ffd90b5d1..df0a87c35 100644 --- a/MediaBrowser.Providers/Savers/SeriesXmlSaver.cs +++ b/MediaBrowser.Providers/Savers/SeriesXmlSaver.cs @@ -46,7 +46,7 @@ namespace MediaBrowser.Providers.Savers var wasMetadataDownloaded = (updateType & ItemUpdateType.MetadataDownload) == ItemUpdateType.MetadataDownload; // If new metadata has been downloaded and save local is on - if (item.IsSaveLocalMetadataEnabled() && (wasMetadataEdited || wasMetadataDownloaded)) + if (wasMetadataEdited || wasMetadataDownloaded) { return item is Series; } diff --git a/MediaBrowser.Providers/TV/FanArtTvUpdatesPrescanTask.cs b/MediaBrowser.Providers/TV/FanArtTvUpdatesPostScanTask.cs index db546f3a3..50099dcb8 100644 --- a/MediaBrowser.Providers/TV/FanArtTvUpdatesPrescanTask.cs +++ b/MediaBrowser.Providers/TV/FanArtTvUpdatesPostScanTask.cs @@ -16,7 +16,7 @@ using System.Threading.Tasks; namespace MediaBrowser.Providers.TV { - class FanArtTvUpdatesPrescanTask : ILibraryPostScanTask + class FanArtTvUpdatesPostScanTask : ILibraryPostScanTask { private const string UpdatesUrl = "http://api.fanart.tv/webservice/newtv/{0}/{1}/"; @@ -37,7 +37,7 @@ namespace MediaBrowser.Providers.TV private static readonly CultureInfo UsCulture = new CultureInfo("en-US"); - public FanArtTvUpdatesPrescanTask(IJsonSerializer jsonSerializer, IServerConfigurationManager config, ILogger logger, IHttpClient httpClient, IFileSystem fileSystem) + public FanArtTvUpdatesPostScanTask(IJsonSerializer jsonSerializer, IServerConfigurationManager config, ILogger logger, IHttpClient httpClient, IFileSystem fileSystem) { _jsonSerializer = jsonSerializer; _config = config; @@ -127,7 +127,7 @@ namespace MediaBrowser.Providers.TV var existingDictionary = existingSeriesIds.ToDictionary(i => i, StringComparer.OrdinalIgnoreCase); - var updates = _jsonSerializer.DeserializeFromString<List<FanartUpdatesPrescanTask.FanArtUpdate>>(json); + var updates = _jsonSerializer.DeserializeFromString<List<FanartUpdatesPostScanTask.FanArtUpdate>>(json); return updates.Select(i => i.id).Where(existingDictionary.ContainsKey); } diff --git a/MediaBrowser.Providers/TV/SeriesPostScanTask.cs b/MediaBrowser.Providers/TV/SeriesPostScanTask.cs index 528661680..035528734 100644 --- a/MediaBrowser.Providers/TV/SeriesPostScanTask.cs +++ b/MediaBrowser.Providers/TV/SeriesPostScanTask.cs @@ -17,7 +17,7 @@ using System.Xml; namespace MediaBrowser.Providers.TV { - class SeriesPostScanTask : ILibraryPostScanTask + class SeriesPostScanTask : ILibraryPostScanTask, IHasOrder { /// <summary> /// The _library manager @@ -89,6 +89,15 @@ namespace MediaBrowser.Providers.TV progress.Report(percent); } } + + public int Order + { + get + { + // Run after tvdb update task + return 1; + } + } } class MissingEpisodeProvider diff --git a/MediaBrowser.Providers/TV/TvdbPrescanTask.cs b/MediaBrowser.Providers/TV/TvdbPrescanTask.cs index af4c27278..a9edeee0e 100644 --- a/MediaBrowser.Providers/TV/TvdbPrescanTask.cs +++ b/MediaBrowser.Providers/TV/TvdbPrescanTask.cs @@ -21,7 +21,7 @@ namespace MediaBrowser.Providers.TV /// <summary> /// Class TvdbPrescanTask /// </summary> - public class TvdbPrescanTask : ILibraryPrescanTask + public class TvdbPrescanTask : ILibraryPostScanTask { /// <summary> /// The server time URL |
