aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations
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
parent455de48a65ddb9ac1fb5ff989b72f9735749a47e (diff)
Added poor man's multi-file movie support
Diffstat (limited to 'MediaBrowser.Server.Implementations')
-rw-r--r--MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs37
-rw-r--r--MediaBrowser.Server.Implementations/ScheduledTasks/ImageCleanupTask.cs10
-rw-r--r--MediaBrowser.Server.Implementations/ScheduledTasks/VideoImagesTask.cs1
3 files changed, 44 insertions, 4 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>
diff --git a/MediaBrowser.Server.Implementations/ScheduledTasks/ImageCleanupTask.cs b/MediaBrowser.Server.Implementations/ScheduledTasks/ImageCleanupTask.cs
index 058789665..fe4a34823 100644
--- a/MediaBrowser.Server.Implementations/ScheduledTasks/ImageCleanupTask.cs
+++ b/MediaBrowser.Server.Implementations/ScheduledTasks/ImageCleanupTask.cs
@@ -142,9 +142,15 @@ namespace MediaBrowser.Server.Implementations.ScheduledTasks
var video = item as Video;
- if (video != null && video.Chapters != null)
+ if (video != null)
{
- images = images.Concat(video.Chapters.Where(i => !string.IsNullOrEmpty(i.ImagePath)).Select(i => i.ImagePath));
+ if (video.Chapters != null)
+ {
+ images = images.Concat(video.Chapters.Where(i => !string.IsNullOrEmpty(i.ImagePath)).Select(i => i.ImagePath));
+ }
+
+ var additionalParts = _itemRepo.GetItems(video.AdditionalPartIds).ToList();
+ images = additionalParts.Aggregate(images, (current, subItem) => current.Concat(GetPathsInUse(subItem)));
}
var movie = item as Movie;
diff --git a/MediaBrowser.Server.Implementations/ScheduledTasks/VideoImagesTask.cs b/MediaBrowser.Server.Implementations/ScheduledTasks/VideoImagesTask.cs
index 48426585d..12f98cef3 100644
--- a/MediaBrowser.Server.Implementations/ScheduledTasks/VideoImagesTask.cs
+++ b/MediaBrowser.Server.Implementations/ScheduledTasks/VideoImagesTask.cs
@@ -222,6 +222,7 @@ namespace MediaBrowser.Server.Implementations.ScheduledTasks
items.AddRange(themeVideos);
+ items.AddRange(videos.SelectMany(i => _itemRepo.GetItems(i.AdditionalPartIds).Cast<Video>()).ToList());
items.AddRange(videos.OfType<Movie>().SelectMany(i => _itemRepo.GetItems(i.SpecialFeatureIds).Cast<Video>()).ToList());
return items.Where(i =>