aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MediaBrowser.Providers/ImageFromMediaLocationProvider.cs66
-rw-r--r--MediaBrowser.Providers/VirtualItemImageValidator.cs17
2 files changed, 59 insertions, 24 deletions
diff --git a/MediaBrowser.Providers/ImageFromMediaLocationProvider.cs b/MediaBrowser.Providers/ImageFromMediaLocationProvider.cs
index 0b6accf33..2146d927b 100644
--- a/MediaBrowser.Providers/ImageFromMediaLocationProvider.cs
+++ b/MediaBrowser.Providers/ImageFromMediaLocationProvider.cs
@@ -54,6 +54,20 @@ namespace MediaBrowser.Providers
return item.IsInMixedFolder && item.Parent != null && !(item is Episode);
}
+ if (item.LocationType == LocationType.Virtual)
+ {
+ var season = item as Season;
+
+ if (season != null)
+ {
+ var series = season.Series;
+
+ if (series != null && series.LocationType == LocationType.FileSystem)
+ {
+ return true;
+ }
+ }
+ }
return false;
}
@@ -63,11 +77,20 @@ namespace MediaBrowser.Providers
var season = item as Season;
if (season != null)
{
+ var list = new List<BaseItem>();
+
+ if (season.LocationType == LocationType.FileSystem)
+ {
+ list.Add(season);
+ }
+
var series = season.Series;
- if (series != null)
+ if (series != null && series.LocationType == LocationType.FileSystem)
{
- return new[] { item, series };
+ list.Add(series);
}
+
+ return list;
}
return base.GetItemsForFileStampComparison(item);
@@ -143,6 +166,11 @@ namespace MediaBrowser.Providers
private ItemResolveArgs GetResolveArgsContainingImages(BaseItem item)
{
+ if (item.LocationType != LocationType.FileSystem)
+ {
+ return null;
+ }
+
if (item.IsInMixedFolder)
{
if (item.Parent == null)
@@ -164,15 +192,13 @@ namespace MediaBrowser.Providers
/// <returns>FileSystemInfo.</returns>
protected virtual FileSystemInfo GetImage(BaseItem item, ItemResolveArgs args, string filenameWithoutExtension)
{
- return BaseItem.SupportedImageExtensions
- .Select(i => args.GetMetaFileByPath(GetFullImagePath(item, args, filenameWithoutExtension, i)))
- .FirstOrDefault(i => i != null);
- }
+ if (string.IsNullOrEmpty(item.MetaLocation))
+ {
+ return null;
+ }
- protected virtual FileSystemInfo GetImage(List<FileSystemInfo> files, string filenameWithoutExtension)
- {
return BaseItem.SupportedImageExtensions
- .Select(i => files.FirstOrDefault(f => string.Equals(f.Extension, i, StringComparison.OrdinalIgnoreCase) && string.Equals(filenameWithoutExtension, Path.GetFileNameWithoutExtension(f.Name), StringComparison.OrdinalIgnoreCase)))
+ .Select(i => args.GetMetaFileByPath(GetFullImagePath(item, args, filenameWithoutExtension, i)))
.FirstOrDefault(i => i != null);
}
@@ -278,14 +304,12 @@ namespace MediaBrowser.Providers
image = GetImage(item, args, "show");
}
- var isFileSystemItem = item.LocationType == LocationType.FileSystem;
-
// Support plex/xbmc convention
if (image == null)
{
// Supprt xbmc conventions
var season = item as Season;
- if (season != null && item.IndexNumber.HasValue && isFileSystemItem)
+ if (season != null && item.IndexNumber.HasValue && season.Series.LocationType == LocationType.FileSystem)
{
image = GetSeasonImageFromSeriesFolder(season, "-poster");
}
@@ -298,7 +322,7 @@ namespace MediaBrowser.Providers
}
// Look for a file with the same name as the item
- if (image == null && isFileSystemItem)
+ if (image == null && !string.IsNullOrEmpty(item.Path))
{
var name = Path.GetFileNameWithoutExtension(item.Path);
@@ -327,11 +351,9 @@ namespace MediaBrowser.Providers
if (image == null)
{
- var isFileSystemItem = item.LocationType == LocationType.FileSystem;
-
// Supprt xbmc conventions
var season = item as Season;
- if (season != null && item.IndexNumber.HasValue && isFileSystemItem)
+ if (season != null && item.IndexNumber.HasValue && season.Series.LocationType == LocationType.FileSystem)
{
image = GetSeasonImageFromSeriesFolder(season, "-banner");
}
@@ -356,11 +378,9 @@ namespace MediaBrowser.Providers
if (image == null)
{
- var isFileSystemItem = item.LocationType == LocationType.FileSystem;
-
// Supprt xbmc conventions
var season = item as Season;
- if (season != null && item.IndexNumber.HasValue && isFileSystemItem)
+ if (season != null && item.IndexNumber.HasValue && season.Series.LocationType == LocationType.FileSystem)
{
image = GetSeasonImageFromSeriesFolder(season, "-landscape");
}
@@ -380,14 +400,12 @@ namespace MediaBrowser.Providers
/// <param name="args">The args.</param>
private void PopulateBackdrops(BaseItem item, ItemResolveArgs args)
{
- var isFileSystemItem = item.LocationType == LocationType.FileSystem;
-
var backdropFiles = new List<string>();
PopulateBackdrops(item, args, backdropFiles, "backdrop", "backdrop");
// Support {name}-fanart.ext
- if (isFileSystemItem)
+ if (!string.IsNullOrEmpty(item.Path))
{
var name = Path.GetFileNameWithoutExtension(item.Path);
@@ -408,7 +426,7 @@ namespace MediaBrowser.Providers
PopulateBackdrops(item, args, backdropFiles, "art", "art-");
var season = item as Season;
- if (season != null && item.IndexNumber.HasValue && isFileSystemItem)
+ if (season != null && item.IndexNumber.HasValue && season.Series.LocationType == LocationType.FileSystem)
{
var image = GetSeasonImageFromSeriesFolder(season, "-fanart");
@@ -418,7 +436,7 @@ namespace MediaBrowser.Providers
}
}
- if (isFileSystemItem)
+ if (item.LocationType == LocationType.FileSystem)
{
PopulateBackdropsFromExtraFanart(args, backdropFiles);
}
diff --git a/MediaBrowser.Providers/VirtualItemImageValidator.cs b/MediaBrowser.Providers/VirtualItemImageValidator.cs
index d4bbaf713..f3f32b2b3 100644
--- a/MediaBrowser.Providers/VirtualItemImageValidator.cs
+++ b/MediaBrowser.Providers/VirtualItemImageValidator.cs
@@ -1,5 +1,6 @@
using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Logging;
@@ -20,6 +21,22 @@ namespace MediaBrowser.Providers
{
var locationType = item.LocationType;
+ // The regular provider will get virtual seasons
+ if (item.LocationType == LocationType.Virtual)
+ {
+ var season = item as Season;
+
+ if (season != null)
+ {
+ var series = season.Series;
+
+ if (series != null && series.LocationType == LocationType.FileSystem)
+ {
+ return false;
+ }
+ }
+ }
+
return locationType == LocationType.Virtual ||
locationType == LocationType.Remote;
}