aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MediaBrowser.Controller/Entities/BaseItem.cs40
-rw-r--r--MediaBrowser.Server.Implementations/Library/Resolvers/LocalTrailerResolver.cs6
-rw-r--r--MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs2
3 files changed, 34 insertions, 14 deletions
diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs
index 1bc6b523e..10b3aa722 100644
--- a/MediaBrowser.Controller/Entities/BaseItem.cs
+++ b/MediaBrowser.Controller/Entities/BaseItem.cs
@@ -48,6 +48,7 @@ namespace MediaBrowser.Controller.Entities
public const string TrailerFolderName = "trailers";
public const string ThemeSongsFolderName = "theme-music";
public const string ThemeVideosFolderName = "backdrops";
+ public const string XbmcTrailerFileSuffix = "-trailer";
private string _name;
/// <summary>
@@ -707,27 +708,38 @@ namespace MediaBrowser.Controller.Entities
return new List<Trailer>();
}
+ var files = new List<FileSystemInfo>();
+
var folder = resolveArgs.GetFileSystemEntryByName(TrailerFolderName);
// Path doesn't exist. No biggie
- if (folder == null)
+ if (folder != null)
{
- return new List<Trailer>();
+ try
+ {
+ files.AddRange(new DirectoryInfo(folder.FullName).EnumerateFiles());
+ }
+ catch (IOException ex)
+ {
+ Logger.ErrorException("Error loading trailers for {0}", ex, Name);
+ }
}
- IEnumerable<FileSystemInfo> files;
-
- try
+ // Support xbmc trailers (-trailer suffix on video file names)
+ files.AddRange(resolveArgs.FileSystemChildren.Where(i =>
{
- files = new DirectoryInfo(folder.FullName).EnumerateFiles();
- }
- catch (IOException ex)
- {
- Logger.ErrorException("Error loading trailers for {0}", ex, Name);
- return new List<Trailer>();
- }
+ if (!i.Attributes.HasFlag(FileAttributes.Directory))
+ {
+ if (System.IO.Path.GetFileNameWithoutExtension(i.Name).EndsWith(XbmcTrailerFileSuffix, StringComparison.OrdinalIgnoreCase) && !string.Equals(Path, i.FullName, StringComparison.OrdinalIgnoreCase))
+ {
+ return true;
+ }
+ }
- return LibraryManager.ResolvePaths<Trailer>(files, null).Select(video =>
+ return false;
+ }));
+
+ var trailers= LibraryManager.ResolvePaths<Trailer>(files, null).Select(video =>
{
// Try to retrieve it from the db. If we don't find it, use the resolved version
var dbItem = LibraryManager.RetrieveItem(video.Id) as Trailer;
@@ -740,6 +752,8 @@ namespace MediaBrowser.Controller.Entities
return video;
}).ToList();
+
+ return trailers;
}
/// <summary>
diff --git a/MediaBrowser.Server.Implementations/Library/Resolvers/LocalTrailerResolver.cs b/MediaBrowser.Server.Implementations/Library/Resolvers/LocalTrailerResolver.cs
index f8e9f32b5..ba7590e7f 100644
--- a/MediaBrowser.Server.Implementations/Library/Resolvers/LocalTrailerResolver.cs
+++ b/MediaBrowser.Server.Implementations/Library/Resolvers/LocalTrailerResolver.cs
@@ -31,6 +31,12 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers
{
return base.Resolve(args);
}
+
+ // Support xbmc local trailer convention, but only when looking for local trailers (hence the parent == null check)
+ if (args.Parent == null && Path.GetFileNameWithoutExtension(args.Path).EndsWith(BaseItem.XbmcTrailerFileSuffix, StringComparison.OrdinalIgnoreCase))
+ {
+ return base.Resolve(args);
+ }
}
return null;
diff --git a/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs b/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs
index a8b8359d8..33071080d 100644
--- a/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs
+++ b/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs
@@ -158,7 +158,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
}
// Don't misidentify xbmc trailers as a movie
- if (child.Name.IndexOf("-trailer", StringComparison.OrdinalIgnoreCase) != -1)
+ if (child.Name.IndexOf(BaseItem.XbmcTrailerFileSuffix, StringComparison.OrdinalIgnoreCase) != -1)
{
continue;
}