aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Providers
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2014-02-03 23:04:19 -0500
committerLuke Pulverenti <luke.pulverenti@gmail.com>2014-02-03 23:04:19 -0500
commit351cfef7a70ef311801be0bc9eb9e3891265d22b (patch)
treeedb841c6b311a1c13c4c70cbd4ed08e9129fac78 /MediaBrowser.Providers
parent48b9f657a4d163e4be32c1641907fc429481aa85 (diff)
use conditional caching on some json responses
Diffstat (limited to 'MediaBrowser.Providers')
-rw-r--r--MediaBrowser.Providers/BoxSets/BoxSetMetadataService.cs6
-rw-r--r--MediaBrowser.Providers/CollectionFolderImageProvider.cs4
-rw-r--r--MediaBrowser.Providers/Manager/MetadataService.cs13
-rw-r--r--MediaBrowser.Providers/Music/AlbumMetadataService.cs4
-rw-r--r--MediaBrowser.Providers/Music/ArtistMetadataService.cs4
-rw-r--r--MediaBrowser.Providers/TV/SeriesMetadataService.cs4
-rw-r--r--MediaBrowser.Providers/TV/TvdbSeriesProvider.cs45
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>