aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations/Library
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2013-06-12 17:46:50 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2013-06-12 17:46:50 -0400
commitdef34281994508213e5200fb150cdbcc817c55ab (patch)
treec9233f3dce58987a3db389c90750ea5fa6d38096 /MediaBrowser.Server.Implementations/Library
parent455de48a65ddb9ac1fb5ff989b72f9735749a47e (diff)
Added poor man's multi-file movie support
Diffstat (limited to 'MediaBrowser.Server.Implementations/Library')
-rw-r--r--MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs37
1 files changed, 35 insertions, 2 deletions
diff --git a/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs b/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs
index a21c15f4f..136e83aa0 100644
--- a/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs
+++ b/MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs
@@ -8,6 +8,7 @@ using MediaBrowser.Model.Entities;
using System;
using System.Collections.Generic;
using System.IO;
+using System.Linq;
namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
{
@@ -17,7 +18,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
public class MovieResolver : BaseVideoResolver<Video>
{
private IServerApplicationPaths ApplicationPaths { get; set; }
-
+
public MovieResolver(IServerApplicationPaths appPaths)
{
ApplicationPaths = appPaths;
@@ -196,10 +197,41 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
}
}
- // If there are multiple video files, return null, and let the VideoResolver catch them later as plain videos
+ if (movies.Count > 1)
+ {
+ return GetMultiFileMovie(movies);
+ }
+
return movies.Count == 1 ? movies[0] : null;
}
+
+ /// <summary>
+ /// Gets the multi file movie.
+ /// </summary>
+ /// <typeparam name="T"></typeparam>
+ /// <param name="movies">The movies.</param>
+ /// <returns>``0.</returns>
+ private T GetMultiFileMovie<T>(List<T> movies)
+ where T : Video, new()
+ {
+ var multiPartMovies = movies.OrderBy(i => i.Path)
+ .Where(i => EntityResolutionHelper.IsMultiPartFile(i.Path))
+ .ToList();
+
+ // They must all be part of the sequence
+ if (multiPartMovies.Count != movies.Count)
+ {
+ return null;
+ }
+
+ var firstPart = multiPartMovies[0];
+
+ firstPart.IsMultiPart = true;
+
+ return firstPart;
+ }
+
/// <summary>
/// Determines whether [is DVD directory] [the specified directory name].
/// </summary>
@@ -209,6 +241,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
{
return directoryName.Equals("video_ts", StringComparison.OrdinalIgnoreCase);
}
+
/// <summary>
/// Determines whether [is hd DVD directory] [the specified directory name].
/// </summary>