diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-02-03 23:04:19 -0500 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-02-03 23:04:19 -0500 |
| commit | 351cfef7a70ef311801be0bc9eb9e3891265d22b (patch) | |
| tree | edb841c6b311a1c13c4c70cbd4ed08e9129fac78 /MediaBrowser.Providers | |
| parent | 48b9f657a4d163e4be32c1641907fc429481aa85 (diff) | |
use conditional caching on some json responses
Diffstat (limited to 'MediaBrowser.Providers')
7 files changed, 57 insertions, 23 deletions
diff --git a/MediaBrowser.Providers/BoxSets/BoxSetMetadataService.cs b/MediaBrowser.Providers/BoxSets/BoxSetMetadataService.cs index 2d0fed02d1..e4701a1161 100644 --- a/MediaBrowser.Providers/BoxSets/BoxSetMetadataService.cs +++ b/MediaBrowser.Providers/BoxSets/BoxSetMetadataService.cs @@ -1,12 +1,10 @@ using MediaBrowser.Common.IO; using MediaBrowser.Controller.Configuration; -using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Entities.Movies; using MediaBrowser.Controller.Entities.TV; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Localization; using MediaBrowser.Controller.Providers; -using MediaBrowser.Model.Configuration; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; using MediaBrowser.Providers.Manager; @@ -48,9 +46,9 @@ namespace MediaBrowser.Providers.BoxSets return _libraryManager.UpdateItem(item, reason, cancellationToken); } - protected override ItemUpdateType AfterMetadataRefresh(BoxSet item) + protected override ItemUpdateType BeforeSave(BoxSet item) { - var updateType = base.AfterMetadataRefresh(item); + var updateType = base.BeforeSave(item); if (!item.LockedFields.Contains(MetadataFields.OfficialRating)) { diff --git a/MediaBrowser.Providers/CollectionFolderImageProvider.cs b/MediaBrowser.Providers/CollectionFolderImageProvider.cs index 12f13262d1..e4ea36dd12 100644 --- a/MediaBrowser.Providers/CollectionFolderImageProvider.cs +++ b/MediaBrowser.Providers/CollectionFolderImageProvider.cs @@ -31,14 +31,14 @@ namespace MediaBrowser.Providers protected override FileSystemInfo GetImage(BaseItem item, ItemResolveArgs args, string filenameWithoutExtension) { - return item.ResolveArgs.PhysicalLocations + return item.PhysicalLocations .Select(i => GetImageFromLocation(i, filenameWithoutExtension)) .FirstOrDefault(i => i != null); } protected override Guid GetFileSystemStamp(IEnumerable<BaseItem> items) { - var files = items.SelectMany(i => i.ResolveArgs.PhysicalLocations) + var files = items.SelectMany(i => i.PhysicalLocations) .Select(i => new DirectoryInfo(i)) .SelectMany(i => i.EnumerateFiles("*", SearchOption.TopDirectoryOnly)) .Where(i => diff --git a/MediaBrowser.Providers/Manager/MetadataService.cs b/MediaBrowser.Providers/Manager/MetadataService.cs index 349a4de97c..da82dcb3fb 100644 --- a/MediaBrowser.Providers/Manager/MetadataService.cs +++ b/MediaBrowser.Providers/Manager/MetadataService.cs @@ -100,8 +100,6 @@ namespace MediaBrowser.Providers.Manager refreshResult.SetDateLastMetadataRefresh(DateTime.UtcNow); refreshResult.AddImageProvidersRefreshed(result.Providers); } - - updateType = updateType | AfterMetadataRefresh(itemOfType); } // Next run remote image providers, but only if local image providers didn't throw an exception @@ -120,6 +118,8 @@ namespace MediaBrowser.Providers.Manager } } + updateType = updateType | BeforeSave(itemOfType); + var providersHadChanges = updateType > ItemUpdateType.Unspecified; if (refreshOptions.ForceSave || providersHadChanges) @@ -149,20 +149,21 @@ namespace MediaBrowser.Providers.Manager } /// <summary> - /// Afters the metadata refresh. + /// Befores the metadata refresh. /// </summary> /// <param name="item">The item.</param> - protected virtual ItemUpdateType AfterMetadataRefresh(TItemType item) + /// <returns>ItemUpdateType.</returns> + protected virtual ItemUpdateType BeforeMetadataRefresh(TItemType item) { return ItemUpdateType.Unspecified; } /// <summary> - /// Befores the metadata refresh. + /// Befores the save. /// </summary> /// <param name="item">The item.</param> /// <returns>ItemUpdateType.</returns> - protected virtual ItemUpdateType BeforeMetadataRefresh(TItemType item) + protected virtual ItemUpdateType BeforeSave(TItemType item) { return ItemUpdateType.Unspecified; } diff --git a/MediaBrowser.Providers/Music/AlbumMetadataService.cs b/MediaBrowser.Providers/Music/AlbumMetadataService.cs index 8b9ebdc702..024e44cad2 100644 --- a/MediaBrowser.Providers/Music/AlbumMetadataService.cs +++ b/MediaBrowser.Providers/Music/AlbumMetadataService.cs @@ -47,9 +47,9 @@ namespace MediaBrowser.Providers.Music return _libraryManager.UpdateItem(item, reason, cancellationToken); } - protected override ItemUpdateType AfterMetadataRefresh(MusicAlbum item) + protected override ItemUpdateType BeforeSave(MusicAlbum item) { - var updateType = base.AfterMetadataRefresh(item); + var updateType = base.BeforeSave(item); var songs = item.RecursiveChildren.OfType<Audio>().ToList(); diff --git a/MediaBrowser.Providers/Music/ArtistMetadataService.cs b/MediaBrowser.Providers/Music/ArtistMetadataService.cs index e91679607d..1642cdfaab 100644 --- a/MediaBrowser.Providers/Music/ArtistMetadataService.cs +++ b/MediaBrowser.Providers/Music/ArtistMetadataService.cs @@ -42,9 +42,9 @@ namespace MediaBrowser.Providers.Music return _libraryManager.UpdateItem(item, reason, cancellationToken); } - protected override ItemUpdateType AfterMetadataRefresh(MusicArtist item) + protected override ItemUpdateType BeforeSave(MusicArtist item) { - var updateType = base.AfterMetadataRefresh(item); + var updateType = base.BeforeSave(item); if (!item.IsAccessedByName && !item.LockedFields.Contains(MetadataFields.Genres)) { diff --git a/MediaBrowser.Providers/TV/SeriesMetadataService.cs b/MediaBrowser.Providers/TV/SeriesMetadataService.cs index ffd6d17b29..ccefd370cc 100644 --- a/MediaBrowser.Providers/TV/SeriesMetadataService.cs +++ b/MediaBrowser.Providers/TV/SeriesMetadataService.cs @@ -41,9 +41,9 @@ namespace MediaBrowser.Providers.TV return _libraryManager.UpdateItem(item, reason, cancellationToken); } - protected override ItemUpdateType AfterMetadataRefresh(Series item) + protected override ItemUpdateType BeforeSave(Series item) { - var updateType = base.AfterMetadataRefresh(item); + var updateType = base.BeforeSave(item); var episodes = item.RecursiveChildren .OfType<Episode>() diff --git a/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs b/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs index e4d86f550b..1c31b8ac64 100644 --- a/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs +++ b/MediaBrowser.Providers/TV/TvdbSeriesProvider.cs @@ -142,24 +142,59 @@ namespace MediaBrowser.Providers.TV await ExtractEpisodes(seriesDataPath, Path.Combine(seriesDataPath, preferredMetadataLanguage + ".xml"), lastTvDbUpdateTime).ConfigureAwait(false); } - internal async Task EnsureSeriesInfo(string seriesId, string preferredMetadataLanguage, CancellationToken cancellationToken) + private readonly Task _cachedTask = Task.FromResult(true); + internal Task EnsureSeriesInfo(string seriesId, string preferredMetadataLanguage, CancellationToken cancellationToken) { var seriesDataPath = GetSeriesDataPath(_config.ApplicationPaths, seriesId); Directory.CreateDirectory(seriesDataPath); - var files = Directory.EnumerateFiles(seriesDataPath, "*.xml", SearchOption.TopDirectoryOnly) - .Select(Path.GetFileName) + var files = new DirectoryInfo(seriesDataPath).EnumerateFiles("*.xml", SearchOption.TopDirectoryOnly) .ToList(); var seriesXmlFilename = preferredMetadataLanguage + ".xml"; + var download = false; + var automaticUpdatesEnabled = _config.Configuration.EnableTvDbUpdates; + + var seriesFile = files.FirstOrDefault(i => string.Equals(seriesXmlFilename, i.Name, StringComparison.OrdinalIgnoreCase)); + if (seriesFile == null || !seriesFile.Exists) + { + // No need to check age if automatic updates are enabled + if (!automaticUpdatesEnabled && (DateTime.UtcNow - _fileSystem.GetLastWriteTimeUtc(seriesFile)).TotalDays > 7) + { + download = true; + } + } + + var actorsXml = files.FirstOrDefault(i => string.Equals("actors.xml", i.Name, StringComparison.OrdinalIgnoreCase)); + if (actorsXml == null || !actorsXml.Exists) + { + // No need to check age if automatic updates are enabled + if (!automaticUpdatesEnabled && (DateTime.UtcNow - _fileSystem.GetLastWriteTimeUtc(actorsXml)).TotalDays > 7) + { + download = true; + } + } + + var bannersXml = files.FirstOrDefault(i => string.Equals("banners.xml", i.Name, StringComparison.OrdinalIgnoreCase)); + if (bannersXml == null || !bannersXml.Exists) + { + // No need to check age if automatic updates are enabled + if (!automaticUpdatesEnabled && (DateTime.UtcNow - _fileSystem.GetLastWriteTimeUtc(bannersXml)).TotalDays > 7) + { + download = true; + } + } + // Only download if not already there // The prescan task will take care of updates so we don't need to re-download here - if (!files.Contains("banners.xml", StringComparer.OrdinalIgnoreCase) || !files.Contains("actors.xml", StringComparer.OrdinalIgnoreCase) || !files.Contains(seriesXmlFilename, StringComparer.OrdinalIgnoreCase)) + if (download) { - await DownloadSeriesZip(seriesId, seriesDataPath, null, preferredMetadataLanguage, cancellationToken).ConfigureAwait(false); + return DownloadSeriesZip(seriesId, seriesDataPath, null, preferredMetadataLanguage, cancellationToken); } + + return _cachedTask; } /// <summary> |
