aboutsummaryrefslogtreecommitdiff
path: root/Emby.Server.Implementations
diff options
context:
space:
mode:
Diffstat (limited to 'Emby.Server.Implementations')
-rw-r--r--Emby.Server.Implementations/Data/SqliteItemRepository.cs17
-rw-r--r--Emby.Server.Implementations/Dto/DtoService.cs7
-rw-r--r--Emby.Server.Implementations/Library/LibraryManager.cs30
3 files changed, 51 insertions, 3 deletions
diff --git a/Emby.Server.Implementations/Data/SqliteItemRepository.cs b/Emby.Server.Implementations/Data/SqliteItemRepository.cs
index ca5cd6fdd..5a43a138b 100644
--- a/Emby.Server.Implementations/Data/SqliteItemRepository.cs
+++ b/Emby.Server.Implementations/Data/SqliteItemRepository.cs
@@ -1144,12 +1144,18 @@ namespace Emby.Server.Implementations.Data
var delimeter = "*";
var path = image.Path;
+ var hash = image.Hash;
if (path == null)
{
path = string.Empty;
}
+ if (hash == null)
+ {
+ hash = string.Empty;
+ }
+
return GetPathToSave(path) +
delimeter +
image.DateModified.Ticks.ToString(CultureInfo.InvariantCulture) +
@@ -1158,7 +1164,11 @@ namespace Emby.Server.Implementations.Data
delimeter +
image.Width.ToString(CultureInfo.InvariantCulture) +
delimeter +
- image.Height.ToString(CultureInfo.InvariantCulture);
+ image.Height.ToString(CultureInfo.InvariantCulture) +
+ delimeter +
+ // Replace delimiters with other characters.
+ // This can be removed when we migrate to a proper DB.
+ hash.Replace('*', '/').Replace('|', '\\');
}
public ItemImageInfo ItemImageInfoFromValueString(string value)
@@ -1192,6 +1202,11 @@ namespace Emby.Server.Implementations.Data
image.Width = width;
image.Height = height;
}
+
+ if (parts.Length >= 6)
+ {
+ image.Hash = parts[5].Replace('/', '*').Replace('\\', '|');
+ }
}
return image;
diff --git a/Emby.Server.Implementations/Dto/DtoService.cs b/Emby.Server.Implementations/Dto/DtoService.cs
index c4b65d265..a34a3a192 100644
--- a/Emby.Server.Implementations/Dto/DtoService.cs
+++ b/Emby.Server.Implementations/Dto/DtoService.cs
@@ -718,6 +718,7 @@ namespace Emby.Server.Implementations.Dto
if (options.EnableImages)
{
dto.ImageTags = new Dictionary<ImageType, string>();
+ dto.ImageHashes = new Dictionary<string, string>();
// Prevent implicitly captured closure
var currentItem = item;
@@ -732,6 +733,12 @@ namespace Emby.Server.Implementations.Dto
{
dto.ImageTags[image.Type] = tag;
}
+
+ var hash = image.Hash;
+ if (hash != null && hash.Length > 0)
+ {
+ dto.ImageHashes[tag] = image.Hash;
+ }
}
}
}
diff --git a/Emby.Server.Implementations/Library/LibraryManager.cs b/Emby.Server.Implementations/Library/LibraryManager.cs
index 0b86b2db7..bc35b0410 100644
--- a/Emby.Server.Implementations/Library/LibraryManager.cs
+++ b/Emby.Server.Implementations/Library/LibraryManager.cs
@@ -21,6 +21,7 @@ using MediaBrowser.Common.Extensions;
using MediaBrowser.Common.Progress;
using MediaBrowser.Controller;
using MediaBrowser.Controller.Configuration;
+using MediaBrowser.Controller.Drawing;
using MediaBrowser.Controller.Dto;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Audio;
@@ -35,6 +36,7 @@ using MediaBrowser.Controller.Resolvers;
using MediaBrowser.Controller.Sorting;
using MediaBrowser.Model.Configuration;
using MediaBrowser.Model.Dlna;
+using MediaBrowser.Model.Drawing;
using MediaBrowser.Model.Dto;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.IO;
@@ -110,6 +112,18 @@ namespace Emby.Server.Implementations.Library
private IBaseItemComparer[] Comparers { get; set; }
/// <summary>
+ /// Gets or sets the active item repository
+ /// </summary>
+ /// <value>The item repository.</value>
+ public IItemRepository ItemRepository { get; set; }
+
+ /// <summary>
+ /// Gets or sets the active image processor
+ /// </summary>
+ /// <value>The image processor.</value>
+ public IImageProcessor ImageProcessor { get; set; }
+
+ /// <summary>
/// Occurs when [item added].
/// </summary>
public event EventHandler<ItemChangeEventArgs> ItemAdded;
@@ -1817,7 +1831,19 @@ namespace Emby.Server.Implementations.Library
public void UpdateImages(BaseItem item)
{
- _itemRepository.SaveImages(item);
+ item.ImageInfos
+ .Where(i => (i.Width == 0 || i.Height == 0))
+ .ToList()
+ .ForEach(x =>
+ {
+ string blurhash = ImageProcessor.GetImageHash(x.Path);
+ ImageDimensions size = ImageProcessor.GetImageDimensions(item, x, true);
+ x.Width = size.Width;
+ x.Height = size.Height;
+ x.Hash = blurhash;
+ });
+
+ ItemRepository.SaveImages(item);
RegisterItem(item);
}
@@ -1839,7 +1865,7 @@ namespace Emby.Server.Implementations.Library
item.DateLastSaved = DateTime.UtcNow;
- RegisterItem(item);
+ UpdateImages(item);
}
_itemRepository.SaveItems(itemsList, cancellationToken);