diff options
| author | Luke <luke.pulverenti@gmail.com> | 2016-12-03 19:18:51 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-12-03 19:18:51 -0500 |
| commit | 9f76369150e5e290c5ab58843713c5afe8b57283 (patch) | |
| tree | 95231785e83ad3d981ffa78e8cf190686d6d4e4a /Emby.Server.Implementations | |
| parent | c14dc5686d8d9227ec327a9b15cc9905ab16e3b4 (diff) | |
| parent | 7ed6c67db0f28c5776d972668a438369c3b96aef (diff) | |
Merge pull request #2327 from MediaBrowser/dev
Dev
Diffstat (limited to 'Emby.Server.Implementations')
3 files changed, 44 insertions, 22 deletions
diff --git a/Emby.Server.Implementations/Library/Resolvers/BaseVideoResolver.cs b/Emby.Server.Implementations/Library/Resolvers/BaseVideoResolver.cs index d9c3ac5ab2..b337e1b9e4 100644 --- a/Emby.Server.Implementations/Library/Resolvers/BaseVideoResolver.cs +++ b/Emby.Server.Implementations/Library/Resolvers/BaseVideoResolver.cs @@ -4,6 +4,8 @@ using MediaBrowser.Model.Entities; using MediaBrowser.Naming.Video; using System; using System.IO; +using System.Linq; +using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Logging; namespace Emby.Server.Implementations.Library.Resolvers @@ -59,7 +61,7 @@ namespace Emby.Server.Implementations.Library.Resolvers if (child.IsDirectory) { - if (IsDvdDirectory(filename)) + if (IsDvdDirectory(child.FullName, filename, args.DirectoryService)) { videoInfo = parser.ResolveDirectory(args.Path); @@ -76,7 +78,7 @@ namespace Emby.Server.Implementations.Library.Resolvers }; break; } - if (IsBluRayDirectory(filename)) + if (IsBluRayDirectory(child.FullName, filename, args.DirectoryService)) { videoInfo = parser.ResolveDirectory(args.Path); @@ -267,11 +269,14 @@ namespace Emby.Server.Implementations.Library.Resolvers /// <summary> /// Determines whether [is DVD directory] [the specified directory name]. /// </summary> - /// <param name="directoryName">Name of the directory.</param> - /// <returns><c>true</c> if [is DVD directory] [the specified directory name]; otherwise, <c>false</c>.</returns> - protected bool IsDvdDirectory(string directoryName) + protected bool IsDvdDirectory(string fullPath, string directoryName, IDirectoryService directoryService) { - return string.Equals(directoryName, "video_ts", StringComparison.OrdinalIgnoreCase); + if (!string.Equals(directoryName, "video_ts", StringComparison.OrdinalIgnoreCase)) + { + return false; + } + + return directoryService.GetFiles(fullPath).Any(i => string.Equals(i.Extension, ".vob", StringComparison.OrdinalIgnoreCase)); } /// <summary> @@ -287,11 +292,14 @@ namespace Emby.Server.Implementations.Library.Resolvers /// <summary> /// Determines whether [is blu ray directory] [the specified directory name]. /// </summary> - /// <param name="directoryName">Name of the directory.</param> - /// <returns><c>true</c> if [is blu ray directory] [the specified directory name]; otherwise, <c>false</c>.</returns> - protected bool IsBluRayDirectory(string directoryName) + protected bool IsBluRayDirectory(string fullPath, string directoryName, IDirectoryService directoryService) { - return string.Equals(directoryName, "bdmv", StringComparison.OrdinalIgnoreCase); + if (!string.Equals(directoryName, "bdmv", StringComparison.OrdinalIgnoreCase)) + { + return false; + } + + return directoryService.GetFiles(fullPath).Any(i => string.Equals(i.Extension, ".m2ts", StringComparison.OrdinalIgnoreCase)); } } } diff --git a/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs b/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs index 002505b569..55a63b4e5d 100644 --- a/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs +++ b/Emby.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs @@ -366,7 +366,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.Movies if (child.IsDirectory) { - if (IsDvdDirectory(filename)) + if (IsDvdDirectory(child.FullName, filename, directoryService)) { var movie = new T { @@ -376,7 +376,7 @@ namespace Emby.Server.Implementations.Library.Resolvers.Movies Set3DFormat(movie); return movie; } - if (IsBluRayDirectory(filename)) + if (IsBluRayDirectory(child.FullName, filename, directoryService)) { var movie = new T { @@ -446,15 +446,14 @@ namespace Emby.Server.Implementations.Library.Resolvers.Movies var subfolders = subFileEntries .Where(e => e.IsDirectory) - .Select(d => d.Name) .ToList(); - if (subfolders.Any(IsDvdDirectory)) + if (subfolders.Any(s => IsDvdDirectory(s.FullName, s.Name, directoryService))) { videoTypes.Add(VideoType.Dvd); return true; } - if (subfolders.Any(IsBluRayDirectory)) + if (subfolders.Any(s => IsBluRayDirectory(s.FullName, s.Name, directoryService))) { videoTypes.Add(VideoType.BluRay); return true; diff --git a/Emby.Server.Implementations/News/NewsEntryPoint.cs b/Emby.Server.Implementations/News/NewsEntryPoint.cs index 1497d066fe..53c862d470 100644 --- a/Emby.Server.Implementations/News/NewsEntryPoint.cs +++ b/Emby.Server.Implementations/News/NewsEntryPoint.cs @@ -126,7 +126,7 @@ namespace Emby.Server.Implementations.News reader.MoveToContent(); reader.Read(); - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { @@ -134,10 +134,18 @@ namespace Emby.Server.Implementations.News { case "channel": { - using (var subReader = reader.ReadSubtree()) + if (!reader.IsEmptyElement) { - return ParseFromChannelNode(subReader); + using (var subReader = reader.ReadSubtree()) + { + return ParseFromChannelNode(subReader); + } } + else + { + reader.Read(); + } + break; } default: { @@ -162,7 +170,7 @@ namespace Emby.Server.Implementations.News reader.MoveToContent(); reader.Read(); - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { @@ -170,9 +178,16 @@ namespace Emby.Server.Implementations.News { case "item": { - using (var subReader = reader.ReadSubtree()) + if (!reader.IsEmptyElement) + { + using (var subReader = reader.ReadSubtree()) + { + list.Add(ParseItem(subReader)); + } + } + else { - list.Add(ParseItem(subReader)); + reader.Read(); } break; } @@ -199,7 +214,7 @@ namespace Emby.Server.Implementations.News reader.MoveToContent(); reader.Read(); - while (!reader.EOF) + while (!reader.EOF && reader.ReadState == ReadState.Interactive) { if (reader.NodeType == XmlNodeType.Element) { |
