diff options
| author | Techywarrior <techywarrior@gmail.com> | 2013-04-08 13:47:25 -0700 |
|---|---|---|
| committer | Techywarrior <techywarrior@gmail.com> | 2013-04-08 13:47:25 -0700 |
| commit | b1cc7ccaff8073a5d50287f6db6f78bdd1f4835d (patch) | |
| tree | a5d33f354eb51e826d6be7e264e3809ce658b521 /MediaBrowser.Controller | |
| parent | a771a812daf7fa8a61153af74d153e8ea891d4a6 (diff) | |
| parent | 57f082051d15da7450fe41f293e0131c8320db33 (diff) | |
Merge branch 'master' of https://github.com/MediaBrowser/MediaBrowser
Diffstat (limited to 'MediaBrowser.Controller')
| -rw-r--r-- | MediaBrowser.Controller/Entities/BaseItem.cs | 6 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/Folder.cs | 6 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/Movies/Movie.cs | 2 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Kernel.cs | 77 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Library/ILibraryManager.cs | 39 | ||||
| -rw-r--r-- | MediaBrowser.Controller/MediaBrowser.Controller.csproj | 1 | ||||
| -rw-r--r-- | MediaBrowser.Controller/MediaInfo/FFMpegManager.cs | 21 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Providers/MediaInfo/FFProbeVideoInfoProvider.cs | 23 |
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> |
