diff options
Diffstat (limited to 'MediaBrowser.Controller/Entities/BaseItem.cs')
| -rw-r--r-- | MediaBrowser.Controller/Entities/BaseItem.cs | 106 |
1 files changed, 25 insertions, 81 deletions
diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs index e9eee9e40..d878619b8 100644 --- a/MediaBrowser.Controller/Entities/BaseItem.cs +++ b/MediaBrowser.Controller/Entities/BaseItem.cs @@ -472,75 +472,30 @@ namespace MediaBrowser.Controller.Entities /// <returns>List{Video}.</returns> private IEnumerable<Trailer> LoadLocalTrailers(List<FileSystemInfo> fileSystemChildren) { - return new List<Trailer>(); - //ItemResolveArgs resolveArgs; - - //try - //{ - // resolveArgs = ResolveArgs; - - // if (!resolveArgs.IsDirectory) - // { - // return new List<Trailer>(); - // } - //} - //catch (IOException ex) - //{ - // Logger.ErrorException("Error getting ResolveArgs for {0}", ex, Path); - // return new List<Trailer>(); - //} - - //var files = new List<FileSystemInfo>(); - - //var folder = resolveArgs.GetFileSystemEntryByName(TrailerFolderName); - - //// Path doesn't exist. No biggie - //if (folder != null) - //{ - // try - // { - // files.AddRange(new DirectoryInfo(folder.FullName).EnumerateFiles()); - // } - // catch (IOException ex) - // { - // Logger.ErrorException("Error loading trailers for {0}", ex, Name); - // } - //} - - //// Support xbmc trailers (-trailer suffix on video file names) - //files.AddRange(resolveArgs.FileSystemChildren.Where(i => - //{ - // try - // { - // if ((i.Attributes & FileAttributes.Directory) != FileAttributes.Directory) - // { - // if (System.IO.Path.GetFileNameWithoutExtension(i.Name).EndsWith(XbmcTrailerFileSuffix, StringComparison.OrdinalIgnoreCase) && !string.Equals(Path, i.FullName, StringComparison.OrdinalIgnoreCase)) - // { - // return true; - // } - // } - // } - // catch (IOException ex) - // { - // Logger.ErrorException("Error accessing path {0}", ex, i.FullName); - // } - - // return false; - //})); - - //return 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.GetItemById(video.Id) as Trailer; - - // if (dbItem != null) - // { - // video = dbItem; - // } - - // return video; - - //}).ToList(); + var files = fileSystemChildren.OfType<DirectoryInfo>() + .Where(i => string.Equals(i.Name, TrailerFolderName, StringComparison.OrdinalIgnoreCase)) + .SelectMany(i => i.EnumerateFiles("*", SearchOption.TopDirectoryOnly)) + .ToList(); + + // Support plex/xbmc convention + files.AddRange(fileSystemChildren.OfType<FileInfo>() + .Where(i => System.IO.Path.GetFileNameWithoutExtension(i.Name).EndsWith(XbmcTrailerFileSuffix, StringComparison.OrdinalIgnoreCase) && !string.Equals(Path, i.FullName, StringComparison.OrdinalIgnoreCase)) + ); + + return 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.GetItemById(video.Id) as Trailer; + + if (dbItem != null) + { + video = dbItem; + } + + return video; + + // Sort them so that the list can be easily compared for changes + }).OrderBy(i => i.Path).ToList(); } /// <summary> @@ -656,19 +611,8 @@ namespace MediaBrowser.Controller.Entities } } - if (themeSongsChanged) - { - Logger.Debug("Theme songs have changed for {0}", Path); - options.ForceSave = true; - } - if (themeVideosChanged) - { - Logger.Debug("Theme videos have changed for {0}", Path); - options.ForceSave = true; - } - if (localTrailersChanged) + if (themeSongsChanged || themeVideosChanged || localTrailersChanged) { - Logger.Debug("Local trailers have changed for {0}", Path); options.ForceSave = true; } } |
