aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs')
-rw-r--r--MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs31
1 files changed, 29 insertions, 2 deletions
diff --git a/MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs b/MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs
index be71a6408..bd22a8a70 100644
--- a/MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs
+++ b/MediaBrowser.Server.Implementations/Photos/BaseDynamicImageProvider.cs
@@ -191,6 +191,8 @@ namespace MediaBrowser.Server.Implementations.Photos
throw new ArgumentException("Unexpected image type");
}
+ private const int MaxImageAgeDays = 7;
+
public bool HasChanged(IHasMetadata item, IDirectoryService directoryService, DateTime date)
{
if (!Supports(item))
@@ -198,6 +200,11 @@ namespace MediaBrowser.Server.Implementations.Photos
return false;
}
+ if (item is UserView)
+ {
+ return HasChanged(item, ImageType.Primary) || HasChanged(item, ImageType.Thumb);
+ }
+
var items = GetItemsWithImages(item).Result;
var cacheKey = GetConfigurationCacheKey(items, item.Name);
@@ -216,7 +223,6 @@ namespace MediaBrowser.Server.Implementations.Photos
}
var currentPathCacheKey = (Path.GetFileNameWithoutExtension(image.Path) ?? string.Empty).Split('_').LastOrDefault();
-
if (string.Equals(cacheKey, currentPathCacheKey, StringComparison.OrdinalIgnoreCase))
{
return false;
@@ -226,6 +232,27 @@ namespace MediaBrowser.Server.Implementations.Photos
return true;
}
+ protected bool HasChanged(IHasImages item, ImageType type)
+ {
+ var image = item.GetImageInfo(type, 0);
+
+ if (image != null)
+ {
+ if (!FileSystem.ContainsSubPath(item.GetInternalMetadataPath(), image.Path))
+ {
+ return false;
+ }
+
+ var age = DateTime.UtcNow - image.DateModified;
+ if (age.TotalDays <= MaxImageAgeDays)
+ {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
protected List<BaseItem> GetFinalItems(List<BaseItem> items)
{
return GetFinalItems(items, 4);
@@ -234,7 +261,7 @@ namespace MediaBrowser.Server.Implementations.Photos
protected virtual List<BaseItem> GetFinalItems(List<BaseItem> items, int limit)
{
// Rotate the images once every x days
- var random = DateTime.Now.DayOfYear % 7;
+ var random = DateTime.Now.DayOfYear % MaxImageAgeDays;
return items
.OrderBy(i => (random + "" + items.IndexOf(i)).GetMD5())