From 9430b09ae9fee8ce2a802019479558cc423eff11 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 20 May 2013 13:04:39 -0400 Subject: support xbmc -trailer suffix --- MediaBrowser.Controller/Entities/BaseItem.cs | 40 +++++++++++++++++++--------- 1 file changed, 27 insertions(+), 13 deletions(-) (limited to 'MediaBrowser.Controller') 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; /// @@ -707,27 +708,38 @@ namespace MediaBrowser.Controller.Entities return new List(); } + var files = new List(); + var folder = resolveArgs.GetFileSystemEntryByName(TrailerFolderName); // Path doesn't exist. No biggie - if (folder == null) + if (folder != null) { - return new List(); + try + { + files.AddRange(new DirectoryInfo(folder.FullName).EnumerateFiles()); + } + catch (IOException ex) + { + Logger.ErrorException("Error loading trailers for {0}", ex, Name); + } } - IEnumerable 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(); - } + 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(files, null).Select(video => + return false; + })); + + var trailers= LibraryManager.ResolvePaths(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; } /// -- cgit v1.2.3