mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-01-28 05:58:21 +00:00
Merge branch 'master' of https://github.com/MediaBrowser/MediaBrowser
This commit is contained in:
@@ -589,7 +589,7 @@ namespace MediaBrowser.Server.Implementations.Drawing
|
||||
|
||||
var supportedEnhancers = GetSupportedEnhancers(item, imageType);
|
||||
|
||||
return GetImageCacheTag(item, imageType, imagePath, dateModified, supportedEnhancers);
|
||||
return GetImageCacheTag(item, imageType, imagePath, dateModified, supportedEnhancers.ToList());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -602,7 +602,7 @@ namespace MediaBrowser.Server.Implementations.Drawing
|
||||
/// <param name="imageEnhancers">The image enhancers.</param>
|
||||
/// <returns>Guid.</returns>
|
||||
/// <exception cref="System.ArgumentNullException">item</exception>
|
||||
public Guid GetImageCacheTag(BaseItem item, ImageType imageType, string originalImagePath, DateTime dateModified, IEnumerable<IImageEnhancer> imageEnhancers)
|
||||
public Guid GetImageCacheTag(BaseItem item, ImageType imageType, string originalImagePath, DateTime dateModified, List<IImageEnhancer> imageEnhancers)
|
||||
{
|
||||
if (item == null)
|
||||
{
|
||||
@@ -619,6 +619,12 @@ namespace MediaBrowser.Server.Implementations.Drawing
|
||||
throw new ArgumentNullException("originalImagePath");
|
||||
}
|
||||
|
||||
// Optimization
|
||||
if (imageEnhancers.Count == 0)
|
||||
{
|
||||
return (originalImagePath + dateModified.Ticks).GetMD5();
|
||||
}
|
||||
|
||||
// Cache name is created with supported enhancers combined with the last config change so we pick up new config changes
|
||||
var cacheKeys = imageEnhancers.Select(i => i.GetConfigurationCacheKey(item, imageType)).ToList();
|
||||
cacheKeys.Add(originalImagePath + dateModified.Ticks);
|
||||
@@ -879,7 +885,7 @@ namespace MediaBrowser.Server.Implementations.Drawing
|
||||
{
|
||||
try
|
||||
{
|
||||
return i.Supports(item as BaseItem, imageType);
|
||||
return i.Supports(item, imageType);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@@ -888,7 +894,7 @@ namespace MediaBrowser.Server.Implementations.Drawing
|
||||
return false;
|
||||
}
|
||||
|
||||
}).ToList();
|
||||
});
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
|
||||
@@ -165,7 +165,8 @@ namespace MediaBrowser.Server.Implementations.Dto
|
||||
{
|
||||
var folder = (Folder)item;
|
||||
|
||||
dto.ChildCount = folder.GetChildren(user, true).Count();
|
||||
dto.ChildCount = folder.GetChildren(user, true)
|
||||
.Count();
|
||||
|
||||
if (!(folder is UserRootFolder))
|
||||
{
|
||||
@@ -1051,6 +1052,13 @@ namespace MediaBrowser.Server.Implementations.Dto
|
||||
{
|
||||
dto.SeriesThumbImageTag = GetImageCacheTag(series, ImageType.Thumb, series.GetImage(ImageType.Thumb));
|
||||
}
|
||||
|
||||
var imagePath = series.PrimaryImagePath;
|
||||
|
||||
if (!string.IsNullOrEmpty(imagePath))
|
||||
{
|
||||
dto.SeriesPrimaryImageTag = GetImageCacheTag(series, ImageType.Primary, imagePath);
|
||||
}
|
||||
}
|
||||
|
||||
// Add SeasonInfo
|
||||
@@ -1064,6 +1072,13 @@ namespace MediaBrowser.Server.Implementations.Dto
|
||||
dto.SeriesName = series.Name;
|
||||
dto.AirTime = series.AirTime;
|
||||
dto.SeriesStudio = series.Studios.FirstOrDefault();
|
||||
|
||||
var imagePath = series.PrimaryImagePath;
|
||||
|
||||
if (!string.IsNullOrEmpty(imagePath))
|
||||
{
|
||||
dto.SeriesPrimaryImageTag = GetImageCacheTag(series, ImageType.Primary, imagePath);
|
||||
}
|
||||
}
|
||||
|
||||
var game = item as Game;
|
||||
|
||||
@@ -67,7 +67,8 @@ namespace MediaBrowser.Server.Implementations.IO
|
||||
public async void RemoveTempIgnore(string path)
|
||||
{
|
||||
// This is an arbitraty amount of time, but delay it because file system writes often trigger events after RemoveTempIgnore has been called.
|
||||
await Task.Delay(2000).ConfigureAwait(false);
|
||||
// Seeing long delays in some situations, especially over the network.
|
||||
await Task.Delay(40000).ConfigureAwait(false);
|
||||
|
||||
string val;
|
||||
_tempIgnoredPaths.TryRemove(path, out val);
|
||||
|
||||
@@ -25,7 +25,8 @@ namespace MediaBrowser.Server.Implementations.Library
|
||||
"ps3_vprm",
|
||||
"adv_obj",
|
||||
"extrafanart",
|
||||
"extrathumbs"
|
||||
"extrathumbs",
|
||||
".actors"
|
||||
|
||||
}.ToDictionary(i => i, StringComparer.OrdinalIgnoreCase);
|
||||
|
||||
|
||||
@@ -250,7 +250,7 @@
|
||||
<EmbeddedResource Include="Localization\Ratings\gb.txt" />
|
||||
<EmbeddedResource Include="Localization\Ratings\nl.txt" />
|
||||
<EmbeddedResource Include="Localization\Ratings\br.txt" />
|
||||
<EmbeddedResource Include="Localization\Ratings\da.txt" />
|
||||
<EmbeddedResource Include="Localization\Ratings\dk.txt" />
|
||||
<EmbeddedResource Include="Localization\Ratings\de.txt" />
|
||||
<EmbeddedResource Include="Localization\Ratings\mx.txt" />
|
||||
<EmbeddedResource Include="Localization\Ratings\co.txt" />
|
||||
|
||||
@@ -13,6 +13,7 @@ using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using MediaBrowser.Model.Logging;
|
||||
|
||||
namespace MediaBrowser.Server.Implementations.Providers
|
||||
{
|
||||
@@ -37,17 +38,19 @@ namespace MediaBrowser.Server.Implementations.Providers
|
||||
/// </summary>
|
||||
private readonly IDirectoryWatchers _directoryWatchers;
|
||||
private readonly IFileSystem _fileSystem;
|
||||
private readonly ILogger _logger;
|
||||
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="ImageSaver"/> class.
|
||||
/// </summary>
|
||||
/// <param name="config">The config.</param>
|
||||
/// <param name="directoryWatchers">The directory watchers.</param>
|
||||
public ImageSaver(IServerConfigurationManager config, IDirectoryWatchers directoryWatchers, IFileSystem fileSystem)
|
||||
public ImageSaver(IServerConfigurationManager config, IDirectoryWatchers directoryWatchers, IFileSystem fileSystem, ILogger logger)
|
||||
{
|
||||
_config = config;
|
||||
_directoryWatchers = directoryWatchers;
|
||||
_fileSystem = fileSystem;
|
||||
_logger = logger;
|
||||
_remoteImageCache = new FileSystemRepository(config.ApplicationPaths.DownloadedImagesDataPath);
|
||||
}
|
||||
|
||||
@@ -170,7 +173,12 @@ namespace MediaBrowser.Server.Implementations.Providers
|
||||
/// <returns>Task.</returns>
|
||||
private async Task SaveImageToLocation(Stream source, string path, CancellationToken cancellationToken)
|
||||
{
|
||||
_logger.Debug("Saving image to {0}", path);
|
||||
|
||||
var parentFolder = Path.GetDirectoryName(path);
|
||||
|
||||
_directoryWatchers.TemporarilyIgnore(path);
|
||||
_directoryWatchers.TemporarilyIgnore(parentFolder);
|
||||
|
||||
try
|
||||
{
|
||||
@@ -196,6 +204,7 @@ namespace MediaBrowser.Server.Implementations.Providers
|
||||
finally
|
||||
{
|
||||
_directoryWatchers.RemoveTempIgnore(path);
|
||||
_directoryWatchers.RemoveTempIgnore(parentFolder);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -349,7 +349,7 @@ namespace MediaBrowser.Server.Implementations.Providers
|
||||
/// <returns>Task.</returns>
|
||||
public Task SaveImage(BaseItem item, Stream source, string mimeType, ImageType type, int? imageIndex, string sourceUrl, CancellationToken cancellationToken)
|
||||
{
|
||||
return new ImageSaver(ConfigurationManager, _directoryWatchers, _fileSystem).SaveImage(item, source, mimeType, type, imageIndex, sourceUrl, cancellationToken);
|
||||
return new ImageSaver(ConfigurationManager, _directoryWatchers, _fileSystem, _logger).SaveImage(item, source, mimeType, type, imageIndex, sourceUrl, cancellationToken);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user