From db315c4e3279a0f7c5fd5507887b32c6436b90af Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sat, 5 Aug 2017 15:02:33 -0400 Subject: update media source methods --- MediaBrowser.Controller/Entities/Video.cs | 66 +++++++++++++++++++++---------- 1 file changed, 46 insertions(+), 20 deletions(-) (limited to 'MediaBrowser.Controller/Entities/Video.cs') diff --git a/MediaBrowser.Controller/Entities/Video.cs b/MediaBrowser.Controller/Entities/Video.cs index 1e1d161c59..c027a35411 100644 --- a/MediaBrowser.Controller/Entities/Video.cs +++ b/MediaBrowser.Controller/Entities/Video.cs @@ -148,11 +148,6 @@ namespace MediaBrowser.Controller.Entities /// The video3 D format. public Video3DFormat? Video3DFormat { get; set; } - /// - /// If the video is a folder-rip, this will hold the file list for the largest playlist - /// - public List PlayableStreamFileNames { get; set; } - /// /// Gets the playable stream files. /// @@ -162,6 +157,11 @@ namespace MediaBrowser.Controller.Entities return GetPlayableStreamFiles(Path); } + public List GetPlayableStreamFileNames() + { + return GetPlayableStreamFiles().Select(System.IO.Path.GetFileName).ToList(); ; + } + /// /// Gets or sets the aspect ratio. /// @@ -170,7 +170,6 @@ namespace MediaBrowser.Controller.Entities public Video() { - PlayableStreamFileNames = new List(); AdditionalParts = new List(); LocalAlternateVersions = new List(); SubtitleFiles = new List(); @@ -395,11 +394,45 @@ namespace MediaBrowser.Controller.Entities { var allFiles = FileSystem.GetFilePaths(rootPath, true).ToList(); - return PlayableStreamFileNames.Select(name => allFiles.FirstOrDefault(f => string.Equals(System.IO.Path.GetFileName(f), name, StringComparison.OrdinalIgnoreCase))) + var videoType = VideoType; + + if (videoType == VideoType.Iso && IsoType == Model.Entities.IsoType.BluRay) + { + videoType = VideoType.BluRay; + } + else if (videoType == VideoType.Iso && IsoType == Model.Entities.IsoType.Dvd) + { + videoType = VideoType.Dvd; + } + + return QueryPlayableStreamFiles(rootPath, videoType).Select(name => allFiles.FirstOrDefault(f => string.Equals(System.IO.Path.GetFileName(f), name, StringComparison.OrdinalIgnoreCase))) .Where(f => !string.IsNullOrEmpty(f)) .ToList(); } + public static List QueryPlayableStreamFiles(string rootPath, VideoType videoType) + { + if (videoType == VideoType.Dvd) + { + return FileSystem.GetFiles(rootPath, new[] { ".vob" }, false, true) + .OrderByDescending(i => i.Length) + .ThenBy(i => i.FullName) + .Take(1) + .Select(i => i.FullName) + .ToList(); + } + if (videoType == VideoType.BluRay) + { + return FileSystem.GetFiles(rootPath, new[] { ".m2ts" }, false, true) + .OrderByDescending(i => i.Length) + .ThenBy(i => i.FullName) + .Take(1) + .Select(i => i.FullName) + .ToList(); + } + return new List(); + } + /// /// Gets a value indicating whether [is3 D]. /// @@ -505,17 +538,12 @@ namespace MediaBrowser.Controller.Entities return base.GetDeletePaths(); } - public IEnumerable GetMediaStreams() + public List GetMediaStreams() { - var mediaSource = GetMediaSources(false) - .FirstOrDefault(); - - if (mediaSource == null) + return MediaSourceManager.GetMediaStreams(new MediaStreamQuery { - return new List(); - } - - return mediaSource.MediaStreams; + ItemId = Id + }); } public virtual MediaStream GetDefaultVideoStream() @@ -563,7 +591,7 @@ namespace MediaBrowser.Controller.Entities return list; } - public virtual IEnumerable GetMediaSources(bool enablePathSubstitution) + public virtual List GetMediaSources(bool enablePathSubstitution) { if (SourceType == SourceType.Channel) { @@ -610,8 +638,7 @@ namespace MediaBrowser.Controller.Entities throw new ArgumentNullException("media"); } - var mediaStreams = MediaSourceManager.GetMediaStreams(media.Id) - .ToList(); + var mediaStreams = MediaSourceManager.GetMediaStreams(media.Id); var locationType = media.LocationType; @@ -630,7 +657,6 @@ namespace MediaBrowser.Controller.Entities Size = media.Size, Timestamp = media.Timestamp, Type = type, - PlayableStreamFileNames = media.PlayableStreamFileNames.ToList(), SupportsDirectStream = media.VideoType == VideoType.VideoFile, IsRemote = media.IsShortcut }; -- cgit v1.2.3