diff options
Diffstat (limited to 'MediaBrowser.Controller')
| -rw-r--r-- | MediaBrowser.Controller/Entities/BaseItem.cs | 1 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Entities/Folder.cs | 1 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Library/ILibraryManager.cs | 1 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Library/TVUtils.cs | 1 | ||||
| -rw-r--r-- | MediaBrowser.Controller/MediaBrowser.Controller.csproj | 10 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Resolvers/BaseItemResolver.cs | 61 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Resolvers/BaseVideoResolver.cs | 56 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Resolvers/EntityResolutionHelper.cs (renamed from MediaBrowser.Controller/Library/EntityResolutionHelper.cs) | 3 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Resolvers/IItemResolver.cs (renamed from MediaBrowser.Controller/Library/IItemResolver.cs) | 3 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Resolvers/IResolverIgnoreRule.cs (renamed from MediaBrowser.Controller/Library/IResolverIgnoreRule.cs) | 4 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Resolvers/ResolverPriority.cs (renamed from MediaBrowser.Controller/Library/ResolverPriority.cs) | 2 |
11 files changed, 135 insertions, 8 deletions
diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs index 1d360098c..47c129dea 100644 --- a/MediaBrowser.Controller/Entities/BaseItem.cs +++ b/MediaBrowser.Controller/Entities/BaseItem.cs @@ -3,6 +3,7 @@ using MediaBrowser.Controller.IO; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Localization; using MediaBrowser.Controller.Providers; +using MediaBrowser.Controller.Resolvers; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Logging; using System; diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs index 4e12a8686..c6f479029 100644 --- a/MediaBrowser.Controller/Entities/Folder.cs +++ b/MediaBrowser.Controller/Entities/Folder.cs @@ -2,6 +2,7 @@ using MediaBrowser.Controller.IO; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.Localization; +using MediaBrowser.Controller.Resolvers; using MediaBrowser.Controller.Sorting; using MediaBrowser.Model.Entities; using System; diff --git a/MediaBrowser.Controller/Library/ILibraryManager.cs b/MediaBrowser.Controller/Library/ILibraryManager.cs index 7ba60e921..3f1930209 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.Resolvers; using MediaBrowser.Model.Entities; using System; using System.Collections.Generic; diff --git a/MediaBrowser.Controller/Library/TVUtils.cs b/MediaBrowser.Controller/Library/TVUtils.cs index e0ef188b8..d6a922ff4 100644 --- a/MediaBrowser.Controller/Library/TVUtils.cs +++ b/MediaBrowser.Controller/Library/TVUtils.cs @@ -3,6 +3,7 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; +using MediaBrowser.Controller.Resolvers; namespace MediaBrowser.Controller.Library { diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj index 80c44d50c..319289f94 100644 --- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj +++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj @@ -110,7 +110,9 @@ <Compile Include="IServerApplicationPaths.cs" /> <Compile Include="Library\ChildrenChangedEventArgs.cs" /> <Compile Include="Library\DtoBuilder.cs" /> - <Compile Include="Library\IItemResolver.cs" /> + <Compile Include="Resolvers\BaseItemResolver.cs" /> + <Compile Include="Resolvers\BaseVideoResolver.cs" /> + <Compile Include="Resolvers\IItemResolver.cs" /> <Compile Include="Library\ILibraryManager.cs" /> <Compile Include="Library\IUserManager.cs" /> <Compile Include="Library\Profiler.cs" /> @@ -165,9 +167,9 @@ <Compile Include="Providers\TV\SeriesProviderFromXml.cs" /> <Compile Include="Providers\TV\SeriesXmlParser.cs" /> <Compile Include="Providers\MediaInfo\FFMpegVideoImageProvider.cs" /> - <Compile Include="Library\IResolverIgnoreRule.cs" /> - <Compile Include="Library\EntityResolutionHelper.cs" /> - <Compile Include="Library\ResolverPriority.cs" /> + <Compile Include="Resolvers\IResolverIgnoreRule.cs" /> + <Compile Include="Resolvers\EntityResolutionHelper.cs" /> + <Compile Include="Resolvers\ResolverPriority.cs" /> <Compile Include="Library\TVUtils.cs" /> <Compile Include="ScheduledTasks\PeopleValidationTask.cs" /> <Compile Include="ScheduledTasks\RefreshMediaLibraryTask.cs" /> diff --git a/MediaBrowser.Controller/Resolvers/BaseItemResolver.cs b/MediaBrowser.Controller/Resolvers/BaseItemResolver.cs new file mode 100644 index 000000000..fc5157d5f --- /dev/null +++ b/MediaBrowser.Controller/Resolvers/BaseItemResolver.cs @@ -0,0 +1,61 @@ +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Library; + +namespace MediaBrowser.Controller.Resolvers +{ + /// <summary> + /// Class ItemResolver + /// </summary> + /// <typeparam name="T"></typeparam> + public abstract class ItemResolver<T> : IItemResolver + where T : BaseItem, new() + { + /// <summary> + /// Resolves the specified args. + /// </summary> + /// <param name="args">The args.</param> + /// <returns>`0.</returns> + protected virtual T Resolve(ItemResolveArgs args) + { + return null; + } + + /// <summary> + /// Gets the priority. + /// </summary> + /// <value>The priority.</value> + public virtual ResolverPriority Priority + { + get + { + return ResolverPriority.First; + } + } + + /// <summary> + /// Sets initial values on the newly resolved item + /// </summary> + /// <param name="item">The item.</param> + /// <param name="args">The args.</param> + protected virtual void SetInitialItemValues(T item, ItemResolveArgs args) + { + } + + /// <summary> + /// Resolves the path. + /// </summary> + /// <param name="args">The args.</param> + /// <returns>BaseItem.</returns> + BaseItem IItemResolver.ResolvePath(ItemResolveArgs args) + { + var item = Resolve(args); + + if (item != null) + { + SetInitialItemValues(item, args); + } + + return item; + } + } +} diff --git a/MediaBrowser.Controller/Resolvers/BaseVideoResolver.cs b/MediaBrowser.Controller/Resolvers/BaseVideoResolver.cs new file mode 100644 index 000000000..c2536cd60 --- /dev/null +++ b/MediaBrowser.Controller/Resolvers/BaseVideoResolver.cs @@ -0,0 +1,56 @@ +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Library; +using MediaBrowser.Model.Entities; +using System; +using System.IO; + +namespace MediaBrowser.Controller.Resolvers +{ + /// <summary> + /// Resolves a Path into a Video or Video subclass + /// </summary> + /// <typeparam name="T"></typeparam> + public abstract class BaseVideoResolver<T> : ItemResolver<T> + where T : Video, new() + { + /// <summary> + /// Resolves the specified args. + /// </summary> + /// <param name="args">The args.</param> + /// <returns>`0.</returns> + protected override T Resolve(ItemResolveArgs args) + { + // If the path is a file check for a matching extensions + if (!args.IsDirectory) + { + if (EntityResolutionHelper.IsVideoFile(args.Path)) + { + var extension = Path.GetExtension(args.Path); + + var type = string.Equals(extension, ".iso", StringComparison.OrdinalIgnoreCase) || string.Equals(extension, ".img", StringComparison.OrdinalIgnoreCase) ? + VideoType.Iso : VideoType.VideoFile; + + return new T + { + VideoType = type, + Path = args.Path + }; + } + } + + return null; + } + + /// <summary> + /// Sets the initial item values. + /// </summary> + /// <param name="item">The item.</param> + /// <param name="args">The args.</param> + protected override void SetInitialItemValues(T item, ItemResolveArgs args) + { + base.SetInitialItemValues(item, args); + + item.VideoFormat = item.Path.IndexOf("[3d]", StringComparison.OrdinalIgnoreCase) != -1 ? VideoFormat.Digital3D : item.Path.IndexOf("[sbs3d]", StringComparison.OrdinalIgnoreCase) != -1 ? VideoFormat.Sbs3D : VideoFormat.Standard; + } + } +} diff --git a/MediaBrowser.Controller/Library/EntityResolutionHelper.cs b/MediaBrowser.Controller/Resolvers/EntityResolutionHelper.cs index 07e0b5a11..dda2af0cf 100644 --- a/MediaBrowser.Controller/Library/EntityResolutionHelper.cs +++ b/MediaBrowser.Controller/Resolvers/EntityResolutionHelper.cs @@ -4,8 +4,9 @@ using System; using System.Collections.Generic; using System.IO; using System.Linq; +using MediaBrowser.Controller.Library; -namespace MediaBrowser.Controller.Library +namespace MediaBrowser.Controller.Resolvers { /// <summary> /// Class EntityResolutionHelper diff --git a/MediaBrowser.Controller/Library/IItemResolver.cs b/MediaBrowser.Controller/Resolvers/IItemResolver.cs index 721b787d3..780d5d013 100644 --- a/MediaBrowser.Controller/Library/IItemResolver.cs +++ b/MediaBrowser.Controller/Resolvers/IItemResolver.cs @@ -1,6 +1,7 @@ using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Library; -namespace MediaBrowser.Controller.Library +namespace MediaBrowser.Controller.Resolvers { /// <summary> /// Interface IItemResolver diff --git a/MediaBrowser.Controller/Library/IResolverIgnoreRule.cs b/MediaBrowser.Controller/Resolvers/IResolverIgnoreRule.cs index c9c602089..e85535548 100644 --- a/MediaBrowser.Controller/Library/IResolverIgnoreRule.cs +++ b/MediaBrowser.Controller/Resolvers/IResolverIgnoreRule.cs @@ -1,4 +1,6 @@ -namespace MediaBrowser.Controller.Library +using MediaBrowser.Controller.Library; + +namespace MediaBrowser.Controller.Resolvers { /// <summary> /// Provides a base "rule" that anyone can use to have paths ignored by the resolver diff --git a/MediaBrowser.Controller/Library/ResolverPriority.cs b/MediaBrowser.Controller/Resolvers/ResolverPriority.cs index 1f266f371..63a107fda 100644 --- a/MediaBrowser.Controller/Library/ResolverPriority.cs +++ b/MediaBrowser.Controller/Resolvers/ResolverPriority.cs @@ -1,5 +1,5 @@ -namespace MediaBrowser.Controller.Library +namespace MediaBrowser.Controller.Resolvers { /// <summary> /// Enum ResolverPriority |
