Added poor man's multi-file movie support

This commit is contained in:
Luke Pulverenti
2013-06-12 17:46:50 -04:00
parent 455de48a65
commit def3428199
20 changed files with 353 additions and 54 deletions

View File

@@ -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>