aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations/Providers/ImageSaver.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Server.Implementations/Providers/ImageSaver.cs')
-rw-r--r--MediaBrowser.Server.Implementations/Providers/ImageSaver.cs39
1 files changed, 29 insertions, 10 deletions
diff --git a/MediaBrowser.Server.Implementations/Providers/ImageSaver.cs b/MediaBrowser.Server.Implementations/Providers/ImageSaver.cs
index 85b17888e..e2192535c 100644
--- a/MediaBrowser.Server.Implementations/Providers/ImageSaver.cs
+++ b/MediaBrowser.Server.Implementations/Providers/ImageSaver.cs
@@ -6,6 +6,7 @@ using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.IO;
using MediaBrowser.Model.Configuration;
using MediaBrowser.Model.Entities;
+using MediaBrowser.Model.Logging;
using System;
using System.Collections.Generic;
using System.Globalization;
@@ -13,7 +14,6 @@ using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
-using MediaBrowser.Model.Logging;
namespace MediaBrowser.Server.Implementations.Providers
{
@@ -89,6 +89,23 @@ namespace MediaBrowser.Server.Implementations.Providers
if (locationType == LocationType.Remote || locationType == LocationType.Virtual)
{
saveLocally = false;
+
+ var season = item as Season;
+
+ // If season is virtual under a physical series, save locally if using compatible convention
+ if (season != null && _config.Configuration.ImageSavingConvention == ImageSavingConvention.Compatible)
+ {
+ var series = season.Series;
+
+ if (series != null)
+ {
+ var seriesLocationType = series.LocationType;
+ if (seriesLocationType == LocationType.FileSystem || seriesLocationType == LocationType.Offline)
+ {
+ saveLocally = true;
+ }
+ }
+ }
}
if (type == ImageType.Backdrop && imageIndex == null)
@@ -402,7 +419,7 @@ namespace MediaBrowser.Server.Implementations.Providers
return path;
}
- private string GetBackdropSaveFilename(List<string> images, string zeroIndexFilename, string numberedIndexPrefix, int index)
+ private string GetBackdropSaveFilename(IEnumerable<string> images, string zeroIndexFilename, string numberedIndexPrefix, int index)
{
if (index == 0)
{
@@ -431,6 +448,8 @@ namespace MediaBrowser.Server.Implementations.Providers
/// <exception cref="System.ArgumentNullException">imageIndex</exception>
private string[] GetCompatibleSavePaths(BaseItem item, ImageType type, int? imageIndex, string mimeType)
{
+ var season = item as Season;
+
var extension = mimeType.Split('/').Last();
if (string.Equals(extension, "jpeg", StringComparison.OrdinalIgnoreCase))
@@ -449,9 +468,9 @@ namespace MediaBrowser.Server.Implementations.Providers
if (imageIndex.Value == 0)
{
- if (item is Season && item.IndexNumber.HasValue)
+ if (season != null && item.IndexNumber.HasValue)
{
- var seriesFolder = Path.GetDirectoryName(item.Path);
+ var seriesFolder = season.SeriesPath;
var seasonMarker = item.IndexNumber.Value == 0
? "-specials"
@@ -481,9 +500,9 @@ namespace MediaBrowser.Server.Implementations.Providers
if (type == ImageType.Primary)
{
- if (item is Season && item.IndexNumber.HasValue)
+ if (season != null && item.IndexNumber.HasValue)
{
- var seriesFolder = Path.GetDirectoryName(item.Path);
+ var seriesFolder = season.SeriesPath;
var seasonMarker = item.IndexNumber.Value == 0
? "-specials"
@@ -518,9 +537,9 @@ namespace MediaBrowser.Server.Implementations.Providers
if (type == ImageType.Banner)
{
- if (item is Season && item.IndexNumber.HasValue)
+ if (season != null && item.IndexNumber.HasValue)
{
- var seriesFolder = Path.GetDirectoryName(item.Path);
+ var seriesFolder = season.SeriesPath;
var seasonMarker = item.IndexNumber.Value == 0
? "-specials"
@@ -534,9 +553,9 @@ namespace MediaBrowser.Server.Implementations.Providers
if (type == ImageType.Thumb)
{
- if (item is Season && item.IndexNumber.HasValue)
+ if (season != null && item.IndexNumber.HasValue)
{
- var seriesFolder = Path.GetDirectoryName(item.Path);
+ var seriesFolder = season.SeriesPath;
var seasonMarker = item.IndexNumber.Value == 0
? "-specials"