aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller
diff options
context:
space:
mode:
authorTechywarrior <techywarrior@gmail.com>2013-04-08 13:47:25 -0700
committerTechywarrior <techywarrior@gmail.com>2013-04-08 13:47:25 -0700
commitb1cc7ccaff8073a5d50287f6db6f78bdd1f4835d (patch)
treea5d33f354eb51e826d6be7e264e3809ce658b521 /MediaBrowser.Controller
parenta771a812daf7fa8a61153af74d153e8ea891d4a6 (diff)
parent57f082051d15da7450fe41f293e0131c8320db33 (diff)
Merge branch 'master' of https://github.com/MediaBrowser/MediaBrowser
Diffstat (limited to 'MediaBrowser.Controller')
-rw-r--r--MediaBrowser.Controller/Entities/BaseItem.cs6
-rw-r--r--MediaBrowser.Controller/Entities/Folder.cs6
-rw-r--r--MediaBrowser.Controller/Entities/Movies/Movie.cs2
-rw-r--r--MediaBrowser.Controller/Kernel.cs77
-rw-r--r--MediaBrowser.Controller/Library/ILibraryManager.cs39
-rw-r--r--MediaBrowser.Controller/MediaBrowser.Controller.csproj1
-rw-r--r--MediaBrowser.Controller/MediaInfo/FFMpegManager.cs21
-rw-r--r--MediaBrowser.Controller/Providers/MediaInfo/FFProbeVideoInfoProvider.cs23
8 files changed, 73 insertions, 102 deletions
diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs
index 67ec219bb..e8e90b97a 100644
--- a/MediaBrowser.Controller/Entities/BaseItem.cs
+++ b/MediaBrowser.Controller/Entities/BaseItem.cs
@@ -668,7 +668,7 @@ namespace MediaBrowser.Controller.Entities
return LibraryManager.ResolvePaths<Video>(files, null).Select(video =>
{
// Try to retrieve it from the db. If we don't find it, use the resolved version
- var dbItem = Kernel.Instance.ItemRepository.RetrieveItem(video.Id) as Video;
+ var dbItem = LibraryManager.RetrieveItem(video.Id) as Video;
if (dbItem != null)
{
@@ -721,7 +721,7 @@ namespace MediaBrowser.Controller.Entities
{
cancellationToken.ThrowIfCancellationRequested();
- await Kernel.Instance.ItemRepository.SaveItem(this, cancellationToken).ConfigureAwait(false);
+ await LibraryManager.SaveItem(this, cancellationToken).ConfigureAwait(false);
}
return changed;
@@ -868,7 +868,7 @@ namespace MediaBrowser.Controller.Entities
}
//not found - load from repo
- return Kernel.Instance.ItemRepository.RetrieveItem(id);
+ return LibraryManager.RetrieveItem(id);
}
/// <summary>
diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs
index ce8bf679e..d34fb75a7 100644
--- a/MediaBrowser.Controller/Entities/Folder.cs
+++ b/MediaBrowser.Controller/Entities/Folder.cs
@@ -602,14 +602,14 @@ namespace MediaBrowser.Controller.Entities
_children.Add(item);
}
- saveTasks.Add(Kernel.Instance.ItemRepository.SaveItem(item, CancellationToken.None));
+ saveTasks.Add(LibraryManager.SaveItem(item, CancellationToken.None));
}
await Task.WhenAll(saveTasks).ConfigureAwait(false);
//and save children in repo...
Logger.Debug("*** Saving " + newChildren.Count + " children for " + Name);
- await Kernel.Instance.ItemRepository.SaveChildren(Id, newChildren, CancellationToken.None).ConfigureAwait(false);
+ await LibraryManager.SaveChildren(Id, newChildren, CancellationToken.None).ConfigureAwait(false);
}
if (changedArgs.HasChange)
@@ -726,7 +726,7 @@ namespace MediaBrowser.Controller.Entities
/// <returns>IEnumerable{BaseItem}.</returns>
protected virtual IEnumerable<BaseItem> GetCachedChildren()
{
- return Kernel.Instance.ItemRepository.RetrieveChildren(this).Select(i => i is IByReferenceItem ? LibraryManager.GetOrAddByReferenceItem(i) : i);
+ return LibraryManager.RetrieveChildren(this).Select(i => i is IByReferenceItem ? LibraryManager.GetOrAddByReferenceItem(i) : i);
}
/// <summary>
diff --git a/MediaBrowser.Controller/Entities/Movies/Movie.cs b/MediaBrowser.Controller/Entities/Movies/Movie.cs
index a9dfde7f9..ac12abcef 100644
--- a/MediaBrowser.Controller/Entities/Movies/Movie.cs
+++ b/MediaBrowser.Controller/Entities/Movies/Movie.cs
@@ -161,7 +161,7 @@ namespace MediaBrowser.Controller.Entities.Movies
return LibraryManager.ResolvePaths<Video>(files, null).Select(video =>
{
// Try to retrieve it from the db. If we don't find it, use the resolved version
- var dbItem = Kernel.Instance.ItemRepository.RetrieveItem(video.Id) as Video;
+ var dbItem = LibraryManager.RetrieveItem(video.Id) as Video;
if (dbItem != null)
{
diff --git a/MediaBrowser.Controller/Kernel.cs b/MediaBrowser.Controller/Kernel.cs
index 36ebcd802..3e1c21a50 100644
--- a/MediaBrowser.Controller/Kernel.cs
+++ b/MediaBrowser.Controller/Kernel.cs
@@ -2,13 +2,9 @@
using MediaBrowser.Controller.Drawing;
using MediaBrowser.Controller.Localization;
using MediaBrowser.Controller.MediaInfo;
-using MediaBrowser.Controller.Persistence;
using MediaBrowser.Controller.Providers;
using MediaBrowser.Controller.Weather;
-using System;
using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
namespace MediaBrowser.Controller
{
@@ -76,42 +72,6 @@ namespace MediaBrowser.Controller
/// <value>The image enhancers.</value>
public IEnumerable<IImageEnhancer> ImageEnhancers { get; set; }
- /// <summary>
- /// Gets the list of available user repositories
- /// </summary>
- /// <value>The user repositories.</value>
- public IEnumerable<IUserRepository> UserRepositories { get; set; }
-
- /// <summary>
- /// Gets the active user repository
- /// </summary>
- /// <value>The user repository.</value>
- public IUserRepository UserRepository { get; set; }
-
- /// <summary>
- /// Gets the list of available item repositories
- /// </summary>
- /// <value>The item repositories.</value>
- public IEnumerable<IItemRepository> ItemRepositories { get; set; }
-
- /// <summary>
- /// Gets the active item repository
- /// </summary>
- /// <value>The item repository.</value>
- public IItemRepository ItemRepository { get; set; }
-
- /// <summary>
- /// Gets the list of available item repositories
- /// </summary>
- /// <value>The user data repositories.</value>
- public IEnumerable<IUserDataRepository> UserDataRepositories { get; set; }
-
- /// <summary>
- /// Gets the active user data repository
- /// </summary>
- /// <value>The user data repository.</value>
- public IUserDataRepository UserDataRepository { get; set; }
-
private readonly IServerConfigurationManager _configurationManager;
/// <summary>
@@ -124,42 +84,5 @@ namespace MediaBrowser.Controller
_configurationManager = configurationManager;
}
-
- /// <summary>
- /// Called when [composable parts loaded].
- /// </summary>
- /// <returns>Task.</returns>
- public Task LoadRepositories(IServerConfigurationManager configurationManager)
- {
- // Get the current item repository
- ItemRepository = GetRepository(ItemRepositories, configurationManager.Configuration.ItemRepository);
- var itemRepoTask = ItemRepository.Initialize();
-
- // Get the current user repository
- UserRepository = GetRepository(UserRepositories, configurationManager.Configuration.UserRepository);
- var userRepoTask = UserRepository.Initialize();
-
- // Get the current item repository
- UserDataRepository = GetRepository(UserDataRepositories, configurationManager.Configuration.UserDataRepository);
- var userDataRepoTask = UserDataRepository.Initialize();
-
- return Task.WhenAll(itemRepoTask, userRepoTask, userDataRepoTask);
- }
-
- /// <summary>
- /// Gets a repository by name from a list, and returns the default if not found
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="repositories">The repositories.</param>
- /// <param name="name">The name.</param>
- /// <returns>``0.</returns>
- private T GetRepository<T>(IEnumerable<T> repositories, string name)
- where T : class, IRepository
- {
- var enumerable = repositories as T[] ?? repositories.ToArray();
-
- return enumerable.FirstOrDefault(r => string.Equals(r.Name, name, StringComparison.OrdinalIgnoreCase)) ??
- enumerable.FirstOrDefault();
- }
}
}
diff --git a/MediaBrowser.Controller/Library/ILibraryManager.cs b/MediaBrowser.Controller/Library/ILibraryManager.cs
index 36d39d530..a9b8f607d 100644
--- a/MediaBrowser.Controller/Library/ILibraryManager.cs
+++ b/MediaBrowser.Controller/Library/ILibraryManager.cs
@@ -1,5 +1,6 @@
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.IO;
+using MediaBrowser.Controller.Persistence;
using MediaBrowser.Controller.Resolvers;
using MediaBrowser.Controller.Sorting;
using MediaBrowser.Model.Entities;
@@ -143,8 +144,11 @@ namespace MediaBrowser.Controller.Library
/// <param name="resolvers">The resolvers.</param>
/// <param name="introProviders">The intro providers.</param>
/// <param name="itemComparers">The item comparers.</param>
- void AddParts(IEnumerable<IResolverIgnoreRule> rules, IEnumerable<IVirtualFolderCreator> pluginFolders,
- IEnumerable<IItemResolver> resolvers, IEnumerable<IIntroProvider> introProviders, IEnumerable<IBaseItemComparer> itemComparers);
+ void AddParts(IEnumerable<IResolverIgnoreRule> rules,
+ IEnumerable<IVirtualFolderCreator> pluginFolders,
+ IEnumerable<IItemResolver> resolvers,
+ IEnumerable<IIntroProvider> introProviders,
+ IEnumerable<IBaseItemComparer> itemComparers);
/// <summary>
/// Sorts the specified items.
@@ -170,5 +174,36 @@ namespace MediaBrowser.Controller.Library
/// <param name="userRootPath">The user root path.</param>
/// <returns>UserRootFolder.</returns>
UserRootFolder GetUserRootFolder(string userRootPath);
+
+ /// <summary>
+ /// Saves the item.
+ /// </summary>
+ /// <param name="item">The item.</param>
+ /// <param name="cancellationToken">The cancellation token.</param>
+ /// <returns>Task.</returns>
+ Task SaveItem(BaseItem item, CancellationToken cancellationToken);
+
+ /// <summary>
+ /// Retrieves the item.
+ /// </summary>
+ /// <param name="id">The id.</param>
+ /// <returns>Task{BaseItem}.</returns>
+ BaseItem RetrieveItem(Guid id);
+
+ /// <summary>
+ /// Saves the children.
+ /// </summary>
+ /// <param name="id">The id.</param>
+ /// <param name="children">The children.</param>
+ /// <param name="cancellationToken">The cancellation token.</param>
+ /// <returns>Task.</returns>
+ Task SaveChildren(Guid id, IEnumerable<BaseItem> children, CancellationToken cancellationToken);
+
+ /// <summary>
+ /// Retrieves the children.
+ /// </summary>
+ /// <param name="parent">The parent.</param>
+ /// <returns>IEnumerable{BaseItem}.</returns>
+ IEnumerable<BaseItem> RetrieveChildren(Folder parent);
}
} \ No newline at end of file
diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj
index d3a9b0a3f..558a9d8e3 100644
--- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj
+++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj
@@ -58,7 +58,6 @@
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
- <Reference Include="System.Data" />
<Reference Include="System.Drawing" />
<Reference Include="System.Net" />
<Reference Include="System.Runtime.Serialization" />
diff --git a/MediaBrowser.Controller/MediaInfo/FFMpegManager.cs b/MediaBrowser.Controller/MediaInfo/FFMpegManager.cs
index f262c6c68..eb8f600f5 100644
--- a/MediaBrowser.Controller/MediaInfo/FFMpegManager.cs
+++ b/MediaBrowser.Controller/MediaInfo/FFMpegManager.cs
@@ -1,6 +1,7 @@
using MediaBrowser.Common.IO;
using MediaBrowser.Common.MediaInfo;
using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Providers.MediaInfo;
using MediaBrowser.Model.Entities;
using System;
@@ -34,31 +35,23 @@ namespace MediaBrowser.Controller.MediaInfo
/// <value>The subtitle cache.</value>
internal FileSystemRepository SubtitleCache { get; set; }
- /// <summary>
- /// The _logger
- /// </summary>
- private readonly Kernel _kernel;
-
+ private readonly ILibraryManager _libraryManager;
+
private readonly IServerApplicationPaths _appPaths;
private readonly IMediaEncoder _encoder;
/// <summary>
/// Initializes a new instance of the <see cref="FFMpegManager" /> class.
/// </summary>
- /// <param name="kernel">The kernel.</param>
/// <param name="appPaths">The app paths.</param>
/// <param name="encoder">The encoder.</param>
+ /// <param name="libraryManager">The library manager.</param>
/// <exception cref="System.ArgumentNullException">zipClient</exception>
- public FFMpegManager(Kernel kernel, IServerApplicationPaths appPaths, IMediaEncoder encoder)
+ public FFMpegManager(IServerApplicationPaths appPaths, IMediaEncoder encoder, ILibraryManager libraryManager)
{
- if (kernel == null)
- {
- throw new ArgumentNullException("kernel");
- }
-
- _kernel = kernel;
_appPaths = appPaths;
_encoder = encoder;
+ _libraryManager = libraryManager;
VideoImageCache = new FileSystemRepository(VideoImagesDataPath);
AudioImageCache = new FileSystemRepository(AudioImagesDataPath);
@@ -216,7 +209,7 @@ namespace MediaBrowser.Controller.MediaInfo
if (saveItem && changesMade)
{
- await _kernel.ItemRepository.SaveItem(video, CancellationToken.None).ConfigureAwait(false);
+ await _libraryManager.SaveItem(video, CancellationToken.None).ConfigureAwait(false);
}
}
diff --git a/MediaBrowser.Controller/Providers/MediaInfo/FFProbeVideoInfoProvider.cs b/MediaBrowser.Controller/Providers/MediaInfo/FFProbeVideoInfoProvider.cs
index 74c641374..2fc140f2e 100644
--- a/MediaBrowser.Controller/Providers/MediaInfo/FFProbeVideoInfoProvider.cs
+++ b/MediaBrowser.Controller/Providers/MediaInfo/FFProbeVideoInfoProvider.cs
@@ -166,7 +166,28 @@ namespace MediaBrowser.Controller.Providers.MediaInfo
// Try to eliminate menus and intros by skipping all files at the front of the list that are less than the minimum size
// Once we reach a file that is at least the minimum, return all subsequent ones
- video.PlayableStreamFileNames = Directory.EnumerateFiles(root, "*.vob", SearchOption.AllDirectories).SkipWhile(f => new FileInfo(f).Length < minPlayableSize).Select(Path.GetFileName).ToList();
+ var files = Directory.EnumerateFiles(root, "*.vob", SearchOption.AllDirectories).SkipWhile(f => new FileInfo(f).Length < minPlayableSize).ToList();
+
+ // Assuming they're named "vts_05_01", take all files whose second part matches that of the first file
+ if (files.Count > 0)
+ {
+ var parts = Path.GetFileNameWithoutExtension(files[0]).Split('_');
+
+ if (parts.Length == 3)
+ {
+ var title = parts[1];
+
+ files = files.TakeWhile(f =>
+ {
+ var fileParts = Path.GetFileNameWithoutExtension(f).Split('_');
+
+ return fileParts.Length == 3 && string.Equals(title, fileParts[1], StringComparison.OrdinalIgnoreCase);
+
+ }).ToList();
+ }
+ }
+
+ video.PlayableStreamFileNames = files.Select(Path.GetFileName).ToList();
}
/// <summary>