aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller
diff options
context:
space:
mode:
authorLukePulverenti <luke.pulverenti@gmail.com>2013-02-23 10:32:54 -0500
committerLukePulverenti <luke.pulverenti@gmail.com>2013-02-23 10:32:54 -0500
commit33ed929b526acbda696f00f5966917ebd6a9ded2 (patch)
tree18e75812ce71274a3e02f800536e8c144f4e5c45 /MediaBrowser.Controller
parent02634588710f65ce952d0229d7da6b9c9d341492 (diff)
parente30b96217333cadb78dcc0a47545afd145c683a7 (diff)
Merge branch 'master' of https://github.com/MediaBrowser/MediaBrowser
Conflicts: MediaBrowser.ServerApplication/CorePlugins/MediaBrowser.Api.dll MediaBrowser.ServerApplication/CorePlugins/MediaBrowser.ApiInteraction.Javascript.dll MediaBrowser.ServerApplication/CorePlugins/MediaBrowser.Server.Sqlite.dll MediaBrowser.ServerApplication/CorePlugins/MediaBrowser.Server.WorldWeatherOnline.dll MediaBrowser.ServerApplication/CorePlugins/MediaBrowser.WebDashboard.dll
Diffstat (limited to 'MediaBrowser.Controller')
-rw-r--r--MediaBrowser.Controller/Drawing/ImageManager.cs4
-rw-r--r--MediaBrowser.Controller/Entities/IVirtualFolderCreator.cs15
-rw-r--r--MediaBrowser.Controller/Entities/Movies/Movie.cs1
-rw-r--r--MediaBrowser.Controller/Entities/TV/Season.cs1
-rw-r--r--MediaBrowser.Controller/Entities/User.cs1
-rw-r--r--MediaBrowser.Controller/IO/DirectoryWatchers.cs16
-rw-r--r--MediaBrowser.Controller/IO/FileSystem.cs336
-rw-r--r--MediaBrowser.Controller/IO/FileSystemManager.cs8
-rw-r--r--MediaBrowser.Controller/Kernel.cs134
-rw-r--r--MediaBrowser.Controller/Library/ItemResolveArgs.cs1
-rw-r--r--MediaBrowser.Controller/Library/LibraryManager.cs4
-rw-r--r--MediaBrowser.Controller/Localization/BaseStrings.cs5
-rw-r--r--MediaBrowser.Controller/Localization/LocalizedStringData.cs51
-rw-r--r--MediaBrowser.Controller/Localization/LocalizedStrings.cs3
-rw-r--r--MediaBrowser.Controller/MediaBrowser.Controller.csproj11
-rw-r--r--MediaBrowser.Controller/MediaInfo/FFMpegManager.cs90
-rw-r--r--MediaBrowser.Controller/Providers/BaseImageEnhancer.cs99
-rw-r--r--MediaBrowser.Controller/Providers/FolderProviderFromXml.cs2
-rw-r--r--MediaBrowser.Controller/Providers/IImageEnhancer.cs55
-rw-r--r--MediaBrowser.Controller/Providers/ImageFromMediaLocationProvider.cs2
-rw-r--r--MediaBrowser.Controller/Providers/ImagesByNameProvider.cs8
-rw-r--r--MediaBrowser.Controller/Providers/MediaInfo/FFMpegAudioImageProvider.cs2
-rw-r--r--MediaBrowser.Controller/Providers/MediaInfo/FFMpegVideoImageProvider.cs20
-rw-r--r--MediaBrowser.Controller/Providers/MediaInfo/FFProbeAudioInfoProvider.cs2
-rw-r--r--MediaBrowser.Controller/Providers/MediaInfo/FFProbeVideoInfoProvider.cs18
-rw-r--r--MediaBrowser.Controller/Providers/Movies/FanArtMovieProvider.cs2
-rw-r--r--MediaBrowser.Controller/Providers/Movies/MovieDbProvider.cs2
-rw-r--r--MediaBrowser.Controller/Providers/Movies/MovieProviderFromJson.cs2
-rw-r--r--MediaBrowser.Controller/Providers/Movies/MovieProviderFromXml.cs2
-rw-r--r--MediaBrowser.Controller/Providers/Movies/PersonProviderFromJson.cs2
-rw-r--r--MediaBrowser.Controller/Providers/Movies/TmdbPersonProvider.cs2
-rw-r--r--MediaBrowser.Controller/Providers/SortNameProvider.cs2
-rw-r--r--MediaBrowser.Controller/Providers/TV/EpisodeImageFromMediaLocationProvider.cs2
-rw-r--r--MediaBrowser.Controller/Providers/TV/EpisodeProviderFromXml.cs2
-rw-r--r--MediaBrowser.Controller/Providers/TV/FanArtTVProvider.cs2
-rw-r--r--MediaBrowser.Controller/Providers/TV/RemoteEpisodeProvider.cs2
-rw-r--r--MediaBrowser.Controller/Providers/TV/RemoteSeasonProvider.cs2
-rw-r--r--MediaBrowser.Controller/Providers/TV/RemoteSeriesProvider.cs2
-rw-r--r--MediaBrowser.Controller/Providers/TV/SeriesProviderFromXml.cs2
-rw-r--r--MediaBrowser.Controller/Resolvers/Audio/AudioResolver.cs16
-rw-r--r--MediaBrowser.Controller/Resolvers/Audio/MusicAlbumResolver.cs16
-rw-r--r--MediaBrowser.Controller/Resolvers/Audio/MusicArtistResolver.cs14
-rw-r--r--MediaBrowser.Controller/Resolvers/CoreResolutionIgnoreRule.cs11
-rw-r--r--MediaBrowser.Controller/Resolvers/EntityResolutionHelper.cs1
-rw-r--r--MediaBrowser.Controller/Resolvers/FolderResolver.cs2
-rw-r--r--MediaBrowser.Controller/Resolvers/IResolutionIgnoreRule.cs (renamed from MediaBrowser.Controller/Resolvers/BaseResolutionIgnoreRule.cs)4
-rw-r--r--MediaBrowser.Controller/Resolvers/LocalTrailerResolver.cs2
-rw-r--r--MediaBrowser.Controller/Resolvers/Movies/BoxSetResolver.cs2
-rw-r--r--MediaBrowser.Controller/Resolvers/Movies/MovieResolver.cs2
-rw-r--r--MediaBrowser.Controller/Resolvers/TV/EpisodeResolver.cs19
-rw-r--r--MediaBrowser.Controller/Resolvers/TV/SeasonResolver.cs15
-rw-r--r--MediaBrowser.Controller/Resolvers/TV/SeriesResolver.cs2
-rw-r--r--MediaBrowser.Controller/Resolvers/VideoResolver.cs2
-rw-r--r--MediaBrowser.Controller/ScheduledTasks/ChapterImagesTask.cs17
-rw-r--r--MediaBrowser.Controller/ScheduledTasks/ImageCleanupTask.cs17
-rw-r--r--MediaBrowser.Controller/ScheduledTasks/PeopleValidationTask.cs13
-rw-r--r--MediaBrowser.Controller/ScheduledTasks/PluginUpdateTask.cs14
-rw-r--r--MediaBrowser.Controller/ScheduledTasks/RefreshMediaLibraryTask.cs15
58 files changed, 710 insertions, 391 deletions
diff --git a/MediaBrowser.Controller/Drawing/ImageManager.cs b/MediaBrowser.Controller/Drawing/ImageManager.cs
index 16fd4a5b8..a0ba9d550 100644
--- a/MediaBrowser.Controller/Drawing/ImageManager.cs
+++ b/MediaBrowser.Controller/Drawing/ImageManager.cs
@@ -541,7 +541,7 @@ namespace MediaBrowser.Controller.Drawing
/// <param name="imageType">Type of the image.</param>
/// <returns>Guid.</returns>
/// <exception cref="System.ArgumentNullException">item</exception>
- public Guid GetImageCacheTag(string originalImagePath, DateTime dateModified, IEnumerable<BaseImageEnhancer> imageEnhancers, BaseItem item, ImageType imageType)
+ public Guid GetImageCacheTag(string originalImagePath, DateTime dateModified, IEnumerable<IImageEnhancer> imageEnhancers, BaseItem item, ImageType imageType)
{
if (item == null)
{
@@ -574,7 +574,7 @@ namespace MediaBrowser.Controller.Drawing
/// <param name="imageType">Type of the image.</param>
/// <param name="imageIndex">Index of the image.</param>
/// <returns>Task{EnhancedImage}.</returns>
- private async Task<Image> ExecuteImageEnhancers(IEnumerable<BaseImageEnhancer> imageEnhancers, Image originalImage, BaseItem item, ImageType imageType, int imageIndex)
+ private async Task<Image> ExecuteImageEnhancers(IEnumerable<IImageEnhancer> imageEnhancers, Image originalImage, BaseItem item, ImageType imageType, int imageIndex)
{
var result = originalImage;
diff --git a/MediaBrowser.Controller/Entities/IVirtualFolderCreator.cs b/MediaBrowser.Controller/Entities/IVirtualFolderCreator.cs
new file mode 100644
index 000000000..57e9e8d5d
--- /dev/null
+++ b/MediaBrowser.Controller/Entities/IVirtualFolderCreator.cs
@@ -0,0 +1,15 @@
+
+namespace MediaBrowser.Controller.Entities
+{
+ /// <summary>
+ /// Interface IVirtualFolderCreator
+ /// </summary>
+ public interface IVirtualFolderCreator
+ {
+ /// <summary>
+ /// Gets the folder.
+ /// </summary>
+ /// <returns>Folder.</returns>
+ BasePluginFolder GetFolder();
+ }
+}
diff --git a/MediaBrowser.Controller/Entities/Movies/Movie.cs b/MediaBrowser.Controller/Entities/Movies/Movie.cs
index 6a76e2125..5b7661dcf 100644
--- a/MediaBrowser.Controller/Entities/Movies/Movie.cs
+++ b/MediaBrowser.Controller/Entities/Movies/Movie.cs
@@ -1,6 +1,7 @@
using MediaBrowser.Common.Extensions;
using MediaBrowser.Common.IO;
using MediaBrowser.Common.Win32;
+using MediaBrowser.Controller.IO;
using MediaBrowser.Model.Entities;
using System;
using System.Collections.Generic;
diff --git a/MediaBrowser.Controller/Entities/TV/Season.cs b/MediaBrowser.Controller/Entities/TV/Season.cs
index 140c90814..c80c59eaf 100644
--- a/MediaBrowser.Controller/Entities/TV/Season.cs
+++ b/MediaBrowser.Controller/Entities/TV/Season.cs
@@ -2,6 +2,7 @@
using MediaBrowser.Common.Extensions;
using MediaBrowser.Common.IO;
using MediaBrowser.Common.Win32;
+using MediaBrowser.Controller.IO;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Localization;
using MediaBrowser.Model.Entities;
diff --git a/MediaBrowser.Controller/Entities/User.cs b/MediaBrowser.Controller/Entities/User.cs
index f27e8c689..426e7f18e 100644
--- a/MediaBrowser.Controller/Entities/User.cs
+++ b/MediaBrowser.Controller/Entities/User.cs
@@ -1,6 +1,7 @@
using MediaBrowser.Common.Extensions;
using MediaBrowser.Common.IO;
using MediaBrowser.Common.Serialization;
+using MediaBrowser.Controller.IO;
using MediaBrowser.Model.Configuration;
using MediaBrowser.Model.Tasks;
using System;
diff --git a/MediaBrowser.Controller/IO/DirectoryWatchers.cs b/MediaBrowser.Controller/IO/DirectoryWatchers.cs
index 62e1a6a36..06ce95ec9 100644
--- a/MediaBrowser.Controller/IO/DirectoryWatchers.cs
+++ b/MediaBrowser.Controller/IO/DirectoryWatchers.cs
@@ -1,4 +1,5 @@
using MediaBrowser.Common.IO;
+using MediaBrowser.Common.ScheduledTasks;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.ScheduledTasks;
@@ -67,15 +68,26 @@ namespace MediaBrowser.Controller.IO
private ILogger Logger { get; set; }
/// <summary>
+ /// Gets or sets the task manager.
+ /// </summary>
+ /// <value>The task manager.</value>
+ private ITaskManager TaskManager { get; set; }
+
+ /// <summary>
/// Initializes a new instance of the <see cref="DirectoryWatchers" /> class.
/// </summary>
- public DirectoryWatchers(ILogger logger)
+ public DirectoryWatchers(ILogger logger, ITaskManager taskManager)
{
if (logger == null)
{
throw new ArgumentNullException("logger");
}
+ if (taskManager == null)
+ {
+ throw new ArgumentNullException("taskManager");
+ }
+ TaskManager = taskManager;
Logger = logger;
}
@@ -421,7 +433,7 @@ namespace MediaBrowser.Controller.IO
// If the root folder changed, run the library task so the user can see it
if (itemsToRefresh.Any(i => i is AggregateFolder))
{
- Kernel.Instance.TaskManager.CancelIfRunningAndQueue<RefreshMediaLibraryTask>();
+ TaskManager.CancelIfRunningAndQueue<RefreshMediaLibraryTask>();
return;
}
diff --git a/MediaBrowser.Controller/IO/FileSystem.cs b/MediaBrowser.Controller/IO/FileSystem.cs
new file mode 100644
index 000000000..c7b7c660b
--- /dev/null
+++ b/MediaBrowser.Controller/IO/FileSystem.cs
@@ -0,0 +1,336 @@
+using MediaBrowser.Common.Win32;
+using System;
+using System.Collections.Generic;
+using System.Collections.Specialized;
+using System.IO;
+using System.Runtime.InteropServices;
+using System.Text;
+
+namespace MediaBrowser.Controller.IO
+{
+ /// <summary>
+ /// Class FileSystem
+ /// </summary>
+ public static class FileSystem
+ {
+ /// <summary>
+ /// Gets information about a path
+ /// </summary>
+ /// <param name="path">The path.</param>
+ /// <returns>System.Nullable{WIN32_FIND_DATA}.</returns>
+ /// <exception cref="System.ArgumentNullException">path</exception>
+ /// <exception cref="System.IO.IOException">GetFileData failed for + path</exception>
+ public static WIN32_FIND_DATA? GetFileData(string path)
+ {
+ if (string.IsNullOrEmpty(path))
+ {
+ throw new ArgumentNullException("path");
+ }
+
+ WIN32_FIND_DATA data;
+ var handle = NativeMethods.FindFirstFileEx(path, FINDEX_INFO_LEVELS.FindExInfoBasic, out data,
+ FINDEX_SEARCH_OPS.FindExSearchNameMatch, IntPtr.Zero, FindFirstFileExFlags.NONE);
+
+ var getFilename = false;
+
+ if (handle == NativeMethods.INVALID_HANDLE_VALUE && !Path.HasExtension(path))
+ {
+ if (!path.EndsWith("*", StringComparison.OrdinalIgnoreCase))
+ {
+ NativeMethods.FindClose(handle);
+
+ handle = NativeMethods.FindFirstFileEx(Path.Combine(path, "*"), FINDEX_INFO_LEVELS.FindExInfoBasic, out data,
+ FINDEX_SEARCH_OPS.FindExSearchNameMatch, IntPtr.Zero, FindFirstFileExFlags.NONE);
+
+ getFilename = true;
+ }
+ }
+
+ if (handle == IntPtr.Zero)
+ {
+ throw new IOException("GetFileData failed for " + path);
+ }
+
+ NativeMethods.FindClose(handle);
+
+ // According to MSDN documentation, this will default to 1601 for paths that don't exist.
+ if (data.CreationTimeUtc.Year == 1601)
+ {
+ return null;
+ }
+
+ if (getFilename)
+ {
+ data.cFileName = Path.GetFileName(path);
+ }
+
+ data.Path = path;
+ return data;
+ }
+
+ /// <summary>
+ /// Gets all files within a folder
+ /// </summary>
+ /// <param name="path">The path.</param>
+ /// <param name="searchPattern">The search pattern.</param>
+ /// <returns>IEnumerable{WIN32_FIND_DATA}.</returns>
+ public static IEnumerable<WIN32_FIND_DATA> GetFiles(string path, string searchPattern = "*")
+ {
+ return GetFileSystemEntries(path, searchPattern, includeDirectories: false);
+ }
+
+ /// <summary>
+ /// Gets all sub-directories within a folder
+ /// </summary>
+ /// <param name="path">The path.</param>
+ /// <returns>IEnumerable{WIN32_FIND_DATA}.</returns>
+ public static IEnumerable<WIN32_FIND_DATA> GetDirectories(string path)
+ {
+ return GetFileSystemEntries(path, includeFiles: false);
+ }
+
+ /// <summary>
+ /// Gets all file system entries within a foler
+ /// </summary>
+ /// <param name="path">The path.</param>
+ /// <param name="searchPattern">The search pattern.</param>
+ /// <param name="includeFiles">if set to <c>true</c> [include files].</param>
+ /// <param name="includeDirectories">if set to <c>true</c> [include directories].</param>
+ /// <returns>IEnumerable{WIN32_FIND_DATA}.</returns>
+ /// <exception cref="System.ArgumentNullException">path</exception>
+ /// <exception cref="System.IO.IOException">GetFileSystemEntries failed</exception>
+ public static IEnumerable<WIN32_FIND_DATA> GetFileSystemEntries(string path, string searchPattern = "*", bool includeFiles = true, bool includeDirectories = true)
+ {
+ if (string.IsNullOrEmpty(path))
+ {
+ throw new ArgumentNullException("path");
+ }
+
+ var lpFileName = Path.Combine(path, searchPattern);
+
+ WIN32_FIND_DATA lpFindFileData;
+ var handle = NativeMethods.FindFirstFileEx(lpFileName, FINDEX_INFO_LEVELS.FindExInfoBasic, out lpFindFileData,
+ FINDEX_SEARCH_OPS.FindExSearchNameMatch, IntPtr.Zero, FindFirstFileExFlags.FIND_FIRST_EX_LARGE_FETCH);
+
+ if (handle == IntPtr.Zero)
+ {
+ var hr = Marshal.GetLastWin32Error();
+ if (hr != 2 && hr != 0x12)
+ {
+ throw new IOException("GetFileSystemEntries failed");
+ }
+ yield break;
+ }
+
+ if (IncludeInFindFileOutput(lpFindFileData.cFileName, lpFindFileData.dwFileAttributes, includeFiles, includeDirectories))
+ {
+ lpFindFileData.Path = Path.Combine(path, lpFindFileData.cFileName);
+
+ yield return lpFindFileData;
+ }
+
+ while (NativeMethods.FindNextFile(handle, out lpFindFileData) != IntPtr.Zero)
+ {
+ if (IncludeInFindFileOutput(lpFindFileData.cFileName, lpFindFileData.dwFileAttributes, includeFiles, includeDirectories))
+ {
+ lpFindFileData.Path = Path.Combine(path, lpFindFileData.cFileName);
+ yield return lpFindFileData;
+ }
+ }
+
+ NativeMethods.FindClose(handle);
+ }
+
+ /// <summary>
+ /// Includes the in find file output.
+ /// </summary>
+ /// <param name="cFileName">Name of the c file.</param>
+ /// <param name="attributes">The attributes.</param>
+ /// <param name="includeFiles">if set to <c>true</c> [include files].</param>
+ /// <param name="includeDirectories">if set to <c>true</c> [include directories].</param>
+ /// <returns><c>true</c> if XXXX, <c>false</c> otherwise</returns>
+ public static bool IncludeInFindFileOutput(string cFileName, FileAttributes attributes, bool includeFiles, bool includeDirectories)
+ {
+ if (cFileName.Equals(".", StringComparison.OrdinalIgnoreCase))
+ {
+ return false;
+ }
+ if (cFileName.Equals("..", StringComparison.OrdinalIgnoreCase))
+ {
+ return false;
+ }
+
+ if (!includeFiles && !attributes.HasFlag(FileAttributes.Directory))
+ {
+ return false;
+ }
+
+ if (!includeDirectories && attributes.HasFlag(FileAttributes.Directory))
+ {
+ return false;
+ }
+
+ return true;
+ }
+
+ /// <summary>
+ /// The space char
+ /// </summary>
+ private const char SpaceChar = ' ';
+ /// <summary>
+ /// The invalid file name chars
+ /// </summary>
+ private static readonly char[] InvalidFileNameChars = Path.GetInvalidFileNameChars();
+
+ /// <summary>
+ /// Takes a filename and removes invalid characters
+ /// </summary>
+ /// <param name="filename">The filename.</param>
+ /// <returns>System.String.</returns>
+ /// <exception cref="System.ArgumentNullException">filename</exception>
+ public static string GetValidFilename(string filename)
+ {
+ if (string.IsNullOrEmpty(filename))
+ {
+ throw new ArgumentNullException("filename");
+ }
+
+ foreach (var c in InvalidFileNameChars)
+ {
+ filename = filename.Replace(c, SpaceChar);
+ }
+
+ return filename;
+ }
+
+ /// <summary>
+ /// Resolves the shortcut.
+ /// </summary>
+ /// <param name="filename">The filename.</param>
+ /// <returns>System.String.</returns>
+ /// <exception cref="System.ArgumentNullException">filename</exception>
+ public static string ResolveShortcut(string filename)
+ {
+ if (string.IsNullOrEmpty(filename))
+ {
+ throw new ArgumentNullException("filename");
+ }
+
+ var link = new ShellLink();
+ ((IPersistFile)link).Load(filename, NativeMethods.STGM_READ);
+ // TODO: if I can get hold of the hwnd call resolve first. This handles moved and renamed files.
+ // ((IShellLinkW)link).Resolve(hwnd, 0)
+ var sb = new StringBuilder(NativeMethods.MAX_PATH);
+ WIN32_FIND_DATA data;
+ ((IShellLinkW)link).GetPath(sb, sb.Capacity, out data, 0);
+ return sb.ToString();
+ }
+
+ /// <summary>
+ /// Creates a shortcut file pointing to a specified path
+ /// </summary>
+ /// <param name="shortcutPath">The shortcut path.</param>
+ /// <param name="target">The target.</param>
+ /// <exception cref="System.ArgumentNullException">shortcutPath</exception>
+ public static void CreateShortcut(string shortcutPath, string target)
+ {
+ if (string.IsNullOrEmpty(shortcutPath))
+ {
+ throw new ArgumentNullException("shortcutPath");
+ }
+
+ if (string.IsNullOrEmpty(target))
+ {
+ throw new ArgumentNullException("target");
+ }
+
+ var link = new ShellLink();
+
+ ((IShellLinkW)link).SetPath(target);
+
+ ((IPersistFile)link).Save(shortcutPath, true);
+ }
+
+ /// <summary>
+ /// Determines whether the specified filename is shortcut.
+ /// </summary>
+ /// <param name="filename">The filename.</param>
+ /// <returns><c>true</c> if the specified filename is shortcut; otherwise, <c>false</c>.</returns>
+ /// <exception cref="System.ArgumentNullException">filename</exception>
+ public static bool IsShortcut(string filename)
+ {
+ if (string.IsNullOrEmpty(filename))
+ {
+ throw new ArgumentNullException("filename");
+ }
+
+ return string.Equals(Path.GetExtension(filename), ".lnk", StringComparison.OrdinalIgnoreCase);
+ }
+
+ /// <summary>
+ /// Copies all.
+ /// </summary>
+ /// <param name="source">The source.</param>
+ /// <param name="target">The target.</param>
+ /// <exception cref="System.ArgumentNullException">source</exception>
+ /// <exception cref="System.ArgumentException">The source and target directories are the same</exception>
+ public static void CopyAll(string source, string target)
+ {
+ if (string.IsNullOrEmpty(source))
+ {
+ throw new ArgumentNullException("source");
+ }
+ if (string.IsNullOrEmpty(target))
+ {
+ throw new ArgumentNullException("target");
+ }
+
+ if (source.Equals(target, StringComparison.OrdinalIgnoreCase))
+ {
+ throw new ArgumentException("The source and target directories are the same");
+ }
+
+ // Check if the target directory exists, if not, create it.
+ if (!Directory.Exists(target))
+ {
+ Directory.CreateDirectory(target);
+ }
+
+ foreach (var file in Directory.EnumerateFiles(source))
+ {
+ File.Copy(file, Path.Combine(target, Path.GetFileName(file)), true);
+ }
+
+ // Copy each subdirectory using recursion.
+ foreach (var dir in Directory.EnumerateDirectories(source))
+ {
+ CopyAll(dir, Path.Combine(target, Path.GetFileName(dir)));
+ }
+ }
+
+ /// <summary>
+ /// Parses the ini file.
+ /// </summary>
+ /// <param name="path">The path.</param>
+ /// <returns>NameValueCollection.</returns>
+ public static NameValueCollection ParseIniFile(string path)
+ {
+ var values = new NameValueCollection();
+
+ foreach (var line in File.ReadAllLines(path))
+ {
+ var data = line.Split('=');
+
+ if (data.Length < 2) continue;
+
+ var key = data[0];
+
+ var value = data.Length == 2 ? data[1] : string.Join(string.Empty, data, 1, data.Length - 1);
+
+ values[key] = value;
+ }
+
+ return values;
+ }
+ }
+}
diff --git a/MediaBrowser.Controller/IO/FileSystemManager.cs b/MediaBrowser.Controller/IO/FileSystemManager.cs
index 9b54bb9d8..611b402d8 100644
--- a/MediaBrowser.Controller/IO/FileSystemManager.cs
+++ b/MediaBrowser.Controller/IO/FileSystemManager.cs
@@ -1,5 +1,6 @@
using MediaBrowser.Common.IO;
using MediaBrowser.Common.Kernel;
+using MediaBrowser.Common.ScheduledTasks;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Model.Logging;
using System;
@@ -26,17 +27,18 @@ namespace MediaBrowser.Controller.IO
/// The _logger
/// </summary>
private readonly ILogger _logger;
-
+
/// <summary>
/// Initializes a new instance of the <see cref="FileSystemManager" /> class.
/// </summary>
/// <param name="kernel">The kernel.</param>
/// <param name="logger">The logger.</param>
- public FileSystemManager(Kernel kernel, ILogger logger)
+ /// <param name="taskManager">The task manager.</param>
+ public FileSystemManager(Kernel kernel, ILogger logger, ITaskManager taskManager)
: base(kernel)
{
_logger = logger;
- DirectoryWatchers = new DirectoryWatchers(logger);
+ DirectoryWatchers = new DirectoryWatchers(logger, taskManager);
}
/// <summary>
diff --git a/MediaBrowser.Controller/Kernel.cs b/MediaBrowser.Controller/Kernel.cs
index 952160b2b..21cfb5ddb 100644
--- a/MediaBrowser.Controller/Kernel.cs
+++ b/MediaBrowser.Controller/Kernel.cs
@@ -1,5 +1,4 @@
-using MediaBrowser.Common.IO;
-using MediaBrowser.Common.Kernel;
+using MediaBrowser.Common.Kernel;
using MediaBrowser.Common.Plugins;
using MediaBrowser.Controller.Drawing;
using MediaBrowser.Controller.Entities;
@@ -16,14 +15,10 @@ using MediaBrowser.Controller.ScheduledTasks;
using MediaBrowser.Controller.Updates;
using MediaBrowser.Controller.Weather;
using MediaBrowser.Model.Configuration;
-using MediaBrowser.Model.IO;
using MediaBrowser.Model.Logging;
-using MediaBrowser.Model.MediaInfo;
using MediaBrowser.Model.System;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
-using System.ComponentModel.Composition.Hosting;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
@@ -179,31 +174,33 @@ namespace MediaBrowser.Controller
}
/// <summary>
+ /// Gets the list of Localized string files
+ /// </summary>
+ /// <value>The string files.</value>
+ public IEnumerable<LocalizedStringData> StringFiles { get; private set; }
+
+ /// <summary>
/// Gets the list of plugin configuration pages
/// </summary>
/// <value>The configuration pages.</value>
- [ImportMany(typeof(IPluginConfigurationPage))]
public IEnumerable<IPluginConfigurationPage> PluginConfigurationPages { get; private set; }
/// <summary>
/// Gets the intro providers.
/// </summary>
/// <value>The intro providers.</value>
- [ImportMany(typeof(IIntroProvider))]
public IEnumerable<IIntroProvider> IntroProviders { get; private set; }
/// <summary>
/// Gets the list of currently registered weather prvoiders
/// </summary>
/// <value>The weather providers.</value>
- [ImportMany(typeof(IWeatherProvider))]
public IEnumerable<IWeatherProvider> WeatherProviders { get; private set; }
/// <summary>
/// Gets the list of currently registered metadata prvoiders
/// </summary>
/// <value>The metadata providers enumerable.</value>
- [ImportMany(typeof(BaseMetadataProvider))]
public BaseMetadataProvider[] MetadataProviders { get; private set; }
/// <summary>
@@ -211,28 +208,24 @@ namespace MediaBrowser.Controller
/// Image processors are specialized metadata providers that run after the normal ones
/// </summary>
/// <value>The image enhancers.</value>
- [ImportMany(typeof(BaseImageEnhancer))]
- public BaseImageEnhancer[] ImageEnhancers { get; private set; }
+ public IEnumerable<IImageEnhancer> ImageEnhancers { get; private set; }
/// <summary>
/// Gets the list of currently registered entity resolvers
/// </summary>
/// <value>The entity resolvers enumerable.</value>
- [ImportMany(typeof(IBaseItemResolver))]
- internal IBaseItemResolver[] EntityResolvers { get; private set; }
+ internal IEnumerable<IBaseItemResolver> EntityResolvers { get; private set; }
/// <summary>
/// Gets the list of BasePluginFolders added by plugins
/// </summary>
/// <value>The plugin folders.</value>
- [ImportMany(typeof(BasePluginFolder))]
- internal IEnumerable<BasePluginFolder> PluginFolders { get; private set; }
+ internal IEnumerable<IVirtualFolderCreator> PluginFolderCreators { get; private set; }
/// <summary>
/// Gets the list of available user repositories
/// </summary>
/// <value>The user repositories.</value>
- [ImportMany(typeof(IUserRepository))]
private IEnumerable<IUserRepository> UserRepositories { get; set; }
/// <summary>
@@ -251,7 +244,6 @@ namespace MediaBrowser.Controller
/// Gets the list of available item repositories
/// </summary>
/// <value>The item repositories.</value>
- [ImportMany(typeof(IItemRepository))]
private IEnumerable<IItemRepository> ItemRepositories { get; set; }
/// <summary>
@@ -264,22 +256,19 @@ namespace MediaBrowser.Controller
/// Gets the list of available item repositories
/// </summary>
/// <value>The user data repositories.</value>
- [ImportMany(typeof(IUserDataRepository))]
private IEnumerable<IUserDataRepository> UserDataRepositories { get; set; }
/// <summary>
/// Gets the list of available DisplayPreferencesRepositories
/// </summary>
/// <value>The display preferences repositories.</value>
- [ImportMany(typeof(IDisplayPreferencesRepository))]
private IEnumerable<IDisplayPreferencesRepository> DisplayPreferencesRepositories { get; set; }
/// <summary>
/// Gets the list of entity resolution ignore rules
/// </summary>
/// <value>The entity resolution ignore rules.</value>
- [ImportMany(typeof(BaseResolutionIgnoreRule))]
- internal IEnumerable<BaseResolutionIgnoreRule> EntityResolutionIgnoreRules { get; private set; }
+ internal IEnumerable<IResolutionIgnoreRule> EntityResolutionIgnoreRules { get; private set; }
/// <summary>
/// Gets the active user data repository
@@ -303,47 +292,15 @@ namespace MediaBrowser.Controller
}
/// <summary>
- /// Gets or sets the zip client.
- /// </summary>
- /// <value>The zip client.</value>
- private IZipClient ZipClient { get; set; }
-
- /// <summary>
- /// Gets or sets the bluray examiner.
- /// </summary>
- /// <value>The bluray examiner.</value>
- private IBlurayExaminer BlurayExaminer { get; set; }
-
- /// <summary>
/// Creates a kernel based on a Data path, which is akin to our current programdata path
/// </summary>
/// <param name="appHost">The app host.</param>
- /// <param name="isoManager">The iso manager.</param>
- /// <param name="zipClient">The zip client.</param>
- /// <param name="blurayExaminer">The bluray examiner.</param>
/// <param name="logger">The logger.</param>
/// <exception cref="System.ArgumentNullException">isoManager</exception>
- public Kernel(IApplicationHost appHost, IIsoManager isoManager, IZipClient zipClient, IBlurayExaminer blurayExaminer, ILogger logger)
- : base(appHost, isoManager, logger)
+ public Kernel(IApplicationHost appHost, ILogger logger)
+ : base(appHost, logger)
{
- if (isoManager == null)
- {
- throw new ArgumentNullException("isoManager");
- }
-
- if (zipClient == null)
- {
- throw new ArgumentNullException("zipClient");
- }
-
- if (blurayExaminer == null)
- {
- throw new ArgumentNullException("blurayExaminer");
- }
-
Instance = this;
- ZipClient = zipClient;
- BlurayExaminer = blurayExaminer;
// For now there's no real way to inject this properly
BaseItem.Logger = logger;
@@ -356,13 +313,43 @@ namespace MediaBrowser.Controller
/// <summary>
/// Composes the exported values.
/// </summary>
- /// <param name="container">The container.</param>
- protected override void ComposeExportedValues(CompositionContainer container)
+ protected override void RegisterExportedValues()
{
- base.ComposeExportedValues(container);
+ ApplicationHost.Register(this);
+
+ base.RegisterExportedValues();
+ }
- container.ComposeExportedValue("kernel", this);
- container.ComposeExportedValue("blurayExaminer", BlurayExaminer);
+ /// <summary>
+ /// Composes the parts with ioc container.
+ /// </summary>
+ /// <param name="allTypes">All types.</param>
+ protected override void FindParts(Type[] allTypes)
+ {
+ InstallationManager = (InstallationManager)ApplicationHost.CreateInstance(typeof(InstallationManager));
+ FFMpegManager = (FFMpegManager)ApplicationHost.CreateInstance(typeof(FFMpegManager));
+ LibraryManager = (LibraryManager)ApplicationHost.CreateInstance(typeof(LibraryManager));
+ UserManager = (UserManager)ApplicationHost.CreateInstance(typeof(UserManager));
+ ImageManager = (ImageManager)ApplicationHost.CreateInstance(typeof(ImageManager));
+ ProviderManager = (ProviderManager)ApplicationHost.CreateInstance(typeof(ProviderManager));
+ UserDataManager = (UserDataManager)ApplicationHost.CreateInstance(typeof(UserDataManager));
+ PluginSecurityManager = (PluginSecurityManager)ApplicationHost.CreateInstance(typeof(PluginSecurityManager));
+
+ base.FindParts(allTypes);
+
+ EntityResolutionIgnoreRules = GetExports<IResolutionIgnoreRule>(allTypes);
+ UserDataRepositories = GetExports<IUserDataRepository>(allTypes);
+ UserRepositories = GetExports<IUserRepository>(allTypes);
+ DisplayPreferencesRepositories = GetExports<IDisplayPreferencesRepository>(allTypes);
+ ItemRepositories = GetExports<IItemRepository>(allTypes);
+ WeatherProviders = GetExports<IWeatherProvider>(allTypes);
+ IntroProviders = GetExports<IIntroProvider>(allTypes);
+ PluginConfigurationPages = GetExports<IPluginConfigurationPage>(allTypes);
+ ImageEnhancers = GetExports<IImageEnhancer>(allTypes).OrderBy(e => e.Priority).ToArray();
+ PluginFolderCreators = GetExports<IVirtualFolderCreator>(allTypes);
+ StringFiles = GetExports<LocalizedStringData>(allTypes);
+ EntityResolvers = GetExports<IBaseItemResolver>(allTypes).OrderBy(e => e.Priority).ToArray();
+ MetadataProviders = GetExports<BaseMetadataProvider>(allTypes).OrderBy(e => e.Priority).ToArray();
}
/// <summary>
@@ -371,24 +358,14 @@ namespace MediaBrowser.Controller
/// <returns>Task.</returns>
protected override async Task ReloadInternal()
{
- Logger.Info("Extracting tools");
-
// Reset these so that they can be lazy loaded again
Users = null;
RootFolder = null;
- ReloadResourcePools();
- InstallationManager = new InstallationManager(this, ZipClient, Logger);
- LibraryManager = new LibraryManager(this, Logger);
- UserManager = new UserManager(this, Logger);
- FFMpegManager = new FFMpegManager(this, ZipClient, Logger);
- ImageManager = new ImageManager(this, Logger);
- ProviderManager = new ProviderManager(this, Logger);
- UserDataManager = new UserDataManager(this, Logger);
- PluginSecurityManager = new PluginSecurityManager(this);
-
await base.ReloadInternal().ConfigureAwait(false);
+ ReloadResourcePools();
+
ReloadFileSystemManager();
await UserManager.RefreshUsersMetadata(CancellationToken.None).ConfigureAwait(false);
@@ -456,15 +433,6 @@ namespace MediaBrowser.Controller
DisplayPreferencesRepository = GetRepository(DisplayPreferencesRepositories, Configuration.DisplayPreferencesRepository);
var displayPreferencesRepoTask = DisplayPreferencesRepository.Initialize();
- // Sort the resolvers by priority
- EntityResolvers = EntityResolvers.OrderBy(e => e.Priority).ToArray();
-
- // Sort the providers by priority
- MetadataProviders = MetadataProviders.OrderBy(e => e.Priority).ToArray();
-
- // Sort the image processors by priority
- ImageEnhancers = ImageEnhancers.OrderBy(e => e.Priority).ToArray();
-
await Task.WhenAll(itemRepoTask, userRepoTask, userDataRepoTask, displayPreferencesRepoTask).ConfigureAwait(false);
}
@@ -503,7 +471,7 @@ namespace MediaBrowser.Controller
{
DisposeFileSystemManager();
- FileSystemManager = new FileSystemManager(this, Logger);
+ FileSystemManager = new FileSystemManager(this, Logger, TaskManager);
FileSystemManager.StartWatchers();
}
diff --git a/MediaBrowser.Controller/Library/ItemResolveArgs.cs b/MediaBrowser.Controller/Library/ItemResolveArgs.cs
index c95300f74..4d58af437 100644
--- a/MediaBrowser.Controller/Library/ItemResolveArgs.cs
+++ b/MediaBrowser.Controller/Library/ItemResolveArgs.cs
@@ -5,6 +5,7 @@ using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
+using MediaBrowser.Controller.IO;
namespace MediaBrowser.Controller.Library
{
diff --git a/MediaBrowser.Controller/Library/LibraryManager.cs b/MediaBrowser.Controller/Library/LibraryManager.cs
index 4087f9ef8..dfaef12cb 100644
--- a/MediaBrowser.Controller/Library/LibraryManager.cs
+++ b/MediaBrowser.Controller/Library/LibraryManager.cs
@@ -186,9 +186,9 @@ namespace MediaBrowser.Controller.Library
var rootFolder = Kernel.ItemRepository.RetrieveItem(rootFolderPath.GetMBId(typeof(AggregateFolder))) as AggregateFolder ?? (AggregateFolder)GetItem(rootFolderPath);
// Add in the plug-in folders
- foreach (var child in Kernel.PluginFolders)
+ foreach (var child in Kernel.PluginFolderCreators)
{
- rootFolder.AddVirtualChild(child);
+ rootFolder.AddVirtualChild(child.GetFolder());
}
return rootFolder;
diff --git a/MediaBrowser.Controller/Localization/BaseStrings.cs b/MediaBrowser.Controller/Localization/BaseStrings.cs
index c76df7c7c..22486d90d 100644
--- a/MediaBrowser.Controller/Localization/BaseStrings.cs
+++ b/MediaBrowser.Controller/Localization/BaseStrings.cs
@@ -1,9 +1,6 @@
-using MediaBrowser.Common.Localization;
-using System.ComponentModel.Composition;
-
+
namespace MediaBrowser.Controller.Localization
{
- [Export(typeof(LocalizedStringData))]
public class BaseStrings : LocalizedStringData
{
public BaseStrings()
diff --git a/MediaBrowser.Controller/Localization/LocalizedStringData.cs b/MediaBrowser.Controller/Localization/LocalizedStringData.cs
new file mode 100644
index 000000000..71200b8c8
--- /dev/null
+++ b/MediaBrowser.Controller/Localization/LocalizedStringData.cs
@@ -0,0 +1,51 @@
+using System.IO;
+using System.Xml.Serialization;
+
+namespace MediaBrowser.Controller.Localization
+{
+ /// <summary>
+ /// Class LocalizedStringData
+ /// </summary>
+ public class LocalizedStringData
+ {
+ /// <summary>
+ /// The this version
+ /// </summary>
+ [XmlIgnore]
+ public string ThisVersion = "1.0000";
+ /// <summary>
+ /// The prefix
+ /// </summary>
+ [XmlIgnore]
+ public string Prefix = "";
+ /// <summary>
+ /// The file name
+ /// </summary>
+ public string FileName; //this is public so it will serialize and we know where to save ourselves
+ /// <summary>
+ /// The version
+ /// </summary>
+ public string Version = ""; //this will get saved so we can check it against us for changes
+
+ /// <summary>
+ /// Saves this instance.
+ /// </summary>
+ public void Save()
+ {
+ Save(FileName);
+ }
+
+ /// <summary>
+ /// Saves the specified file.
+ /// </summary>
+ /// <param name="file">The file.</param>
+ public void Save(string file)
+ {
+ var xs = new XmlSerializer(GetType());
+ using (var fs = new FileStream(file, FileMode.Create, FileAccess.Write, FileShare.None))
+ {
+ xs.Serialize(fs, this);
+ }
+ }
+ }
+}
diff --git a/MediaBrowser.Controller/Localization/LocalizedStrings.cs b/MediaBrowser.Controller/Localization/LocalizedStrings.cs
index 01b259591..6405be5f8 100644
--- a/MediaBrowser.Controller/Localization/LocalizedStrings.cs
+++ b/MediaBrowser.Controller/Localization/LocalizedStrings.cs
@@ -1,5 +1,4 @@
-using MediaBrowser.Common.Localization;
-using MediaBrowser.Model.Logging;
+using MediaBrowser.Model.Logging;
using System;
using System.Collections.Concurrent;
using System.Globalization;
diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj
index 3978e6e39..213c30bac 100644
--- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj
+++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj
@@ -64,7 +64,6 @@
<HintPath>..\packages\protobuf-net.2.0.0.621\lib\net40\protobuf-net.dll</HintPath>
</Reference>
<Reference Include="System" />
- <Reference Include="System.ComponentModel.Composition" />
<Reference Include="System.Core" />
<Reference Include="System.Data" />
<Reference Include="System.Drawing" />
@@ -91,6 +90,7 @@
<Compile Include="Entities\Genre.cs" />
<Compile Include="Entities\ICollectionFolder.cs" />
<Compile Include="Entities\IndexFolder.cs" />
+ <Compile Include="Entities\IVirtualFolderCreator.cs" />
<Compile Include="Entities\Movies\BoxSet.cs" />
<Compile Include="Entities\Movies\Movie.cs" />
<Compile Include="Entities\Person.cs" />
@@ -107,6 +107,7 @@
<Compile Include="Entities\CollectionFolder.cs" />
<Compile Include="Entities\Year.cs" />
<Compile Include="Extensions\XmlExtensions.cs" />
+ <Compile Include="IO\FileSystem.cs" />
<Compile Include="IO\FileSystemManager.cs" />
<Compile Include="IO\NetworkShares.cs" />
<Compile Include="Library\ChildrenChangedEventArgs.cs" />
@@ -117,6 +118,7 @@
<Compile Include="Localization\AURatingsDictionary.cs" />
<Compile Include="Localization\BaseStrings.cs" />
<Compile Include="Localization\GBRatingsDictionary.cs" />
+ <Compile Include="Localization\LocalizedStringData.cs" />
<Compile Include="Localization\LocalizedStrings.cs" />
<Compile Include="Localization\NLRatingsDictionary.cs" />
<Compile Include="Localization\Ratings.cs" />
@@ -134,7 +136,7 @@
<Compile Include="Plugins\IPluginConfigurationPage.cs" />
<Compile Include="Plugins\PluginSecurityManager.cs" />
<Compile Include="Providers\FanartBaseProvider.cs" />
- <Compile Include="Providers\BaseImageEnhancer.cs" />
+ <Compile Include="Providers\IImageEnhancer.cs" />
<Compile Include="Providers\ImagesByNameProvider.cs" />
<Compile Include="Providers\MediaInfo\BaseFFMpegImageProvider.cs" />
<Compile Include="Providers\MediaInfo\BaseFFMpegProvider.cs" />
@@ -165,7 +167,7 @@
<Compile Include="Providers\MediaInfo\FFMpegVideoImageProvider.cs" />
<Compile Include="Resolvers\Audio\MusicAlbumResolver.cs" />
<Compile Include="Resolvers\Audio\MusicArtistResolver.cs" />
- <Compile Include="Resolvers\BaseResolutionIgnoreRule.cs" />
+ <Compile Include="Resolvers\IResolutionIgnoreRule.cs" />
<Compile Include="Resolvers\CoreResolutionIgnoreRule.cs" />
<Compile Include="Resolvers\EntityResolutionHelper.cs" />
<Compile Include="Resolvers\LocalTrailerResolver.cs" />
@@ -223,8 +225,7 @@
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
- <PostBuildEvent>
- </PostBuildEvent>
+ <PostBuildEvent>xcopy "$(TargetPath)" "$(SolutionDir)\Nuget\dlls\" /y /d /r /i</PostBuildEvent>
</PropertyGroup>
<PropertyGroup>
<PreBuildEvent>
diff --git a/MediaBrowser.Controller/MediaInfo/FFMpegManager.cs b/MediaBrowser.Controller/MediaInfo/FFMpegManager.cs
index 9bc1ebaa5..7ef70ea42 100644
--- a/MediaBrowser.Controller/MediaInfo/FFMpegManager.cs
+++ b/MediaBrowser.Controller/MediaInfo/FFMpegManager.cs
@@ -4,9 +4,9 @@ using MediaBrowser.Common.Kernel;
using MediaBrowser.Common.Serialization;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Audio;
-using MediaBrowser.Controller.Library;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.IO;
+using MediaBrowser.Model.Logging;
using System;
using System.Collections.Generic;
using System.ComponentModel;
@@ -17,7 +17,6 @@ using System.Reflection;
using System.Runtime.InteropServices;
using System.Threading;
using System.Threading.Tasks;
-using MediaBrowser.Model.Logging;
namespace MediaBrowser.Controller.MediaInfo
{
@@ -27,22 +26,6 @@ namespace MediaBrowser.Controller.MediaInfo
public class FFMpegManager : BaseManager<Kernel>
{
/// <summary>
- /// Holds the list of new items to generate chapter image for when the NewItemTimer expires
- /// </summary>
- private readonly List<Video> _newlyAddedItems = new List<Video>();
-
- /// <summary>
- /// The amount of time to wait before generating chapter images
- /// </summary>
- private const int NewItemDelay = 300000;
-
- /// <summary>
- /// The current new item timer
- /// </summary>
- /// <value>The new item timer.</value>
- private Timer NewItemTimer { get; set; }
-
- /// <summary>
/// Gets or sets the video image cache.
/// </summary>
/// <value>The video image cache.</value>
@@ -96,74 +79,10 @@ namespace MediaBrowser.Controller.MediaInfo
AudioImageCache = new FileSystemRepository(AudioImagesDataPath);
SubtitleCache = new FileSystemRepository(SubtitleCachePath);
- Kernel.LibraryManager.LibraryChanged += LibraryManager_LibraryChanged;
-
Task.Run(() => VersionedDirectoryPath = GetVersionedDirectoryPath());
}
/// <summary>
- /// Handles the LibraryChanged event of the LibraryManager control.
- /// </summary>
- /// <param name="sender">The source of the event.</param>
- /// <param name="e">The <see cref="ChildrenChangedEventArgs" /> instance containing the event data.</param>
- void LibraryManager_LibraryChanged(object sender, ChildrenChangedEventArgs e)
- {
- var videos = e.ItemsAdded.OfType<Video>().ToList();
-
- // Use a timer to prevent lots of these notifications from showing in a short period of time
- if (videos.Count > 0)
- {
- lock (_newlyAddedItems)
- {
- _newlyAddedItems.AddRange(videos);
-
- if (NewItemTimer == null)
- {
- NewItemTimer = new Timer(NewItemTimerCallback, null, NewItemDelay, Timeout.Infinite);
- }
- else
- {
- NewItemTimer.Change(NewItemDelay, Timeout.Infinite);
- }
- }
- }
- }
-
- /// <summary>
- /// Called when the new item timer expires
- /// </summary>
- /// <param name="state">The state.</param>
- private async void NewItemTimerCallback(object state)
- {
- List<Video> newItems;
-
- // Lock the list and release all resources
- lock (_newlyAddedItems)
- {
- newItems = _newlyAddedItems.ToList();
- _newlyAddedItems.Clear();
-
- NewItemTimer.Dispose();
- NewItemTimer = null;
- }
-
- // Limit the number of videos we generate images for
- // The idea is to catch new items that are added here and there
- // Mass image generation can be left to the scheduled task
- foreach (var video in newItems.Where(c => c.Chapters != null).Take(3))
- {
- try
- {
- await PopulateChapterImages(video, CancellationToken.None, true, true).ConfigureAwait(false);
- }
- catch (Exception ex)
- {
- _logger.ErrorException("Error creating chapter images for {0}", ex, video.Name);
- }
- }
- }
-
- /// <summary>
/// Releases unmanaged and - optionally - managed resources.
/// </summary>
/// <param name="dispose"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
@@ -171,15 +90,8 @@ namespace MediaBrowser.Controller.MediaInfo
{
if (dispose)
{
- if (NewItemTimer != null)
- {
- NewItemTimer.Dispose();
- }
-
SetErrorMode(ErrorModes.SYSTEM_DEFAULT);
- Kernel.LibraryManager.LibraryChanged -= LibraryManager_LibraryChanged;
-
AudioImageCache.Dispose();
VideoImageCache.Dispose();
}
diff --git a/MediaBrowser.Controller/Providers/BaseImageEnhancer.cs b/MediaBrowser.Controller/Providers/BaseImageEnhancer.cs
deleted file mode 100644
index aeceeaf5f..000000000
--- a/MediaBrowser.Controller/Providers/BaseImageEnhancer.cs
+++ /dev/null
@@ -1,99 +0,0 @@
-using MediaBrowser.Controller.Entities;
-using MediaBrowser.Model.Drawing;
-using MediaBrowser.Model.Entities;
-using System;
-using System.Drawing;
-using System.Threading.Tasks;
-
-namespace MediaBrowser.Controller.Providers
-{
- /// <summary>
- /// Class BaseImageEnhancer
- /// </summary>
- public abstract class BaseImageEnhancer : IDisposable
- {
- /// <summary>
- /// Return true only if the given image for the given item will be enhanced by this enhancer.
- /// </summary>
- /// <param name="item">The item.</param>
- /// <param name="imageType">Type of the image.</param>
- /// <returns><c>true</c> if this enhancer will enhance the supplied image for the supplied item, <c>false</c> otherwise</returns>
- public abstract bool Supports(BaseItem item, ImageType imageType);
-
- /// <summary>
- /// Gets the priority or order in which this enhancer should be run.
- /// </summary>
- /// <value>The priority.</value>
- public abstract MetadataProviderPriority Priority { get; }
-
- /// <summary>
- /// Return the date of the last configuration change affecting the provided baseitem and image type
- /// </summary>
- /// <param name="item">The item.</param>
- /// <param name="imageType">Type of the image.</param>
- /// <returns>Date of last config change</returns>
- public virtual DateTime LastConfigurationChange(BaseItem item, ImageType imageType)
- {
- return DateTime.MinValue;
- }
-
- /// <summary>
- /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
- /// </summary>
- public void Dispose()
- {
- Dispose(true);
- GC.SuppressFinalize(this);
- }
-
- /// <summary>
- /// Releases unmanaged and - optionally - managed resources.
- /// </summary>
- /// <param name="dispose"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
- protected virtual void Dispose(bool dispose)
- {
- }
-
- /// <summary>
- /// Gets the size of the enhanced image.
- /// </summary>
- /// <param name="item">The item.</param>
- /// <param name="imageType">Type of the image.</param>
- /// <param name="imageIndex">Index of the image.</param>
- /// <param name="originalImageSize">Size of the original image.</param>
- /// <returns>ImageSize.</returns>
- public virtual ImageSize GetEnhancedImageSize(BaseItem item, ImageType imageType, int imageIndex, ImageSize originalImageSize)
- {
- return originalImageSize;
- }
-
- /// <summary>
- /// Enhances the supplied image and returns it
- /// </summary>
- /// <param name="item">The item.</param>
- /// <param name="originalImage">The original image.</param>
- /// <param name="imageType">Type of the image.</param>
- /// <param name="imageIndex">Index of the image.</param>
- /// <returns>Task{System.Drawing.Image}.</returns>
- protected abstract Task<Image> EnhanceImageAsyncInternal(BaseItem item, Image originalImage, ImageType imageType, int imageIndex);
-
- /// <summary>
- /// Enhances the image async.
- /// </summary>
- /// <param name="item">The item.</param>
- /// <param name="originalImage">The original image.</param>
- /// <param name="imageType">Type of the image.</param>
- /// <param name="imageIndex">Index of the image.</param>
- /// <returns>Task{Image}.</returns>
- /// <exception cref="System.ArgumentNullException"></exception>
- public Task<Image> EnhanceImageAsync(BaseItem item, Image originalImage, ImageType imageType, int imageIndex)
- {
- if (item == null || originalImage == null)
- {
- throw new ArgumentNullException();
- }
-
- return EnhanceImageAsyncInternal(item, originalImage, imageType, imageIndex);
- }
- }
-}
diff --git a/MediaBrowser.Controller/Providers/FolderProviderFromXml.cs b/MediaBrowser.Controller/Providers/FolderProviderFromXml.cs
index ab0f37b96..16b120ebd 100644
--- a/MediaBrowser.Controller/Providers/FolderProviderFromXml.cs
+++ b/MediaBrowser.Controller/Providers/FolderProviderFromXml.cs
@@ -1,7 +1,6 @@
using MediaBrowser.Controller.Entities;
using MediaBrowser.Model.Entities;
using System;
-using System.ComponentModel.Composition;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
@@ -11,7 +10,6 @@ namespace MediaBrowser.Controller.Providers
/// <summary>
/// Provides metadata for Folders and all subclasses by parsing folder.xml
/// </summary>
- [Export(typeof(BaseMetadataProvider))]
public class FolderProviderFromXml : BaseMetadataProvider
{
/// <summary>
diff --git a/MediaBrowser.Controller/Providers/IImageEnhancer.cs b/MediaBrowser.Controller/Providers/IImageEnhancer.cs
new file mode 100644
index 000000000..24296b664
--- /dev/null
+++ b/MediaBrowser.Controller/Providers/IImageEnhancer.cs
@@ -0,0 +1,55 @@
+using MediaBrowser.Controller.Entities;
+using MediaBrowser.Model.Drawing;
+using MediaBrowser.Model.Entities;
+using System;
+using System.Drawing;
+using System.Threading.Tasks;
+
+namespace MediaBrowser.Controller.Providers
+{
+ public interface IImageEnhancer
+ {
+ /// <summary>
+ /// Return true only if the given image for the given item will be enhanced by this enhancer.
+ /// </summary>
+ /// <param name="item">The item.</param>
+ /// <param name="imageType">Type of the image.</param>
+ /// <returns><c>true</c> if this enhancer will enhance the supplied image for the supplied item, <c>false</c> otherwise</returns>
+ bool Supports(BaseItem item, ImageType imageType);
+
+ /// <summary>
+ /// Gets the priority or order in which this enhancer should be run.
+ /// </summary>
+ /// <value>The priority.</value>
+ MetadataProviderPriority Priority { get; }
+
+ /// <summary>
+ /// Return the date of the last configuration change affecting the provided baseitem and image type
+ /// </summary>
+ /// <param name="item">The item.</param>
+ /// <param name="imageType">Type of the image.</param>
+ /// <returns>Date of last config change</returns>
+ DateTime LastConfigurationChange(BaseItem item, ImageType imageType);
+
+ /// <summary>
+ /// Gets the size of the enhanced image.
+ /// </summary>
+ /// <param name="item">The item.</param>
+ /// <param name="imageType">Type of the image.</param>
+ /// <param name="imageIndex">Index of the image.</param>
+ /// <param name="originalImageSize">Size of the original image.</param>
+ /// <returns>ImageSize.</returns>
+ ImageSize GetEnhancedImageSize(BaseItem item, ImageType imageType, int imageIndex, ImageSize originalImageSize);
+
+ /// <summary>
+ /// Enhances the image async.
+ /// </summary>
+ /// <param name="item">The item.</param>
+ /// <param name="originalImage">The original image.</param>
+ /// <param name="imageType">Type of the image.</param>
+ /// <param name="imageIndex">Index of the image.</param>
+ /// <returns>Task{Image}.</returns>
+ /// <exception cref="System.ArgumentNullException"></exception>
+ Task<Image> EnhanceImageAsync(BaseItem item, Image originalImage, ImageType imageType, int imageIndex);
+ }
+} \ No newline at end of file
diff --git a/MediaBrowser.Controller/Providers/ImageFromMediaLocationProvider.cs b/MediaBrowser.Controller/Providers/ImageFromMediaLocationProvider.cs
index 985876406..4c3250ff4 100644
--- a/MediaBrowser.Controller/Providers/ImageFromMediaLocationProvider.cs
+++ b/MediaBrowser.Controller/Providers/ImageFromMediaLocationProvider.cs
@@ -3,7 +3,6 @@ using MediaBrowser.Controller.Entities;
using MediaBrowser.Model.Entities;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.IO;
using System.Linq;
using System.Threading;
@@ -14,7 +13,6 @@ namespace MediaBrowser.Controller.Providers
/// <summary>
/// Provides images for all types by looking for standard images - folder, backdrop, logo, etc.
/// </summary>
- [Export(typeof(BaseMetadataProvider))]
public class ImageFromMediaLocationProvider : BaseMetadataProvider
{
/// <summary>
diff --git a/MediaBrowser.Controller/Providers/ImagesByNameProvider.cs b/MediaBrowser.Controller/Providers/ImagesByNameProvider.cs
index 114176e2c..fcc31a75e 100644
--- a/MediaBrowser.Controller/Providers/ImagesByNameProvider.cs
+++ b/MediaBrowser.Controller/Providers/ImagesByNameProvider.cs
@@ -1,9 +1,8 @@
-using System.Globalization;
-using MediaBrowser.Common.IO;
-using MediaBrowser.Common.Win32;
+using MediaBrowser.Common.Win32;
using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.IO;
using System;
-using System.ComponentModel.Composition;
+using System.Globalization;
using System.IO;
using System.Linq;
@@ -12,7 +11,6 @@ namespace MediaBrowser.Controller.Providers
/// <summary>
/// Provides images for generic types by looking for standard images in the IBN
/// </summary>
- [Export(typeof(BaseMetadataProvider))]
public class ImagesByNameProvider : ImageFromMediaLocationProvider
{
/// <summary>
diff --git a/MediaBrowser.Controller/Providers/MediaInfo/FFMpegAudioImageProvider.cs b/MediaBrowser.Controller/Providers/MediaInfo/FFMpegAudioImageProvider.cs
index 523192d4e..907c692b8 100644
--- a/MediaBrowser.Controller/Providers/MediaInfo/FFMpegAudioImageProvider.cs
+++ b/MediaBrowser.Controller/Providers/MediaInfo/FFMpegAudioImageProvider.cs
@@ -2,7 +2,6 @@
using MediaBrowser.Controller.Entities.Audio;
using MediaBrowser.Model.Entities;
using System;
-using System.ComponentModel.Composition;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
@@ -12,7 +11,6 @@ namespace MediaBrowser.Controller.Providers.MediaInfo
/// <summary>
/// Uses ffmpeg to create video images
/// </summary>
- [Export(typeof(BaseMetadataProvider))]
public class FFMpegAudioImageProvider : BaseFFMpegImageProvider<Audio>
{
diff --git a/MediaBrowser.Controller/Providers/MediaInfo/FFMpegVideoImageProvider.cs b/MediaBrowser.Controller/Providers/MediaInfo/FFMpegVideoImageProvider.cs
index 2f617b5b1..636454cd0 100644
--- a/MediaBrowser.Controller/Providers/MediaInfo/FFMpegVideoImageProvider.cs
+++ b/MediaBrowser.Controller/Providers/MediaInfo/FFMpegVideoImageProvider.cs
@@ -2,7 +2,6 @@
using MediaBrowser.Controller.Entities;
using MediaBrowser.Model.Entities;
using System;
-using System.ComponentModel.Composition;
using System.Threading;
using System.Threading.Tasks;
@@ -11,10 +10,23 @@ namespace MediaBrowser.Controller.Providers.MediaInfo
/// <summary>
/// Uses ffmpeg to create video images
/// </summary>
- [Export(typeof(BaseMetadataProvider))]
public class FFMpegVideoImageProvider : BaseFFMpegImageProvider<Video>
{
/// <summary>
+ /// The _iso manager
+ /// </summary>
+ private readonly IIsoManager _isoManager;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="FFMpegVideoImageProvider" /> class.
+ /// </summary>
+ /// <param name="isoManager">The iso manager.</param>
+ public FFMpegVideoImageProvider(IIsoManager isoManager)
+ {
+ _isoManager = isoManager;
+ }
+
+ /// <summary>
/// Supportses the specified item.
/// </summary>
/// <param name="item">The item.</param>
@@ -30,7 +42,7 @@ namespace MediaBrowser.Controller.Providers.MediaInfo
if (video != null)
{
- if (video.VideoType == VideoType.Iso && video.IsoType.HasValue && Kernel.Instance.IsoManager.CanMount(item.Path))
+ if (video.VideoType == VideoType.Iso && video.IsoType.HasValue && _isoManager.CanMount(item.Path))
{
return true;
}
@@ -82,7 +94,7 @@ namespace MediaBrowser.Controller.Providers.MediaInfo
{
if (item.VideoType == VideoType.Iso)
{
- return Kernel.Instance.IsoManager.Mount(item.Path, cancellationToken);
+ return _isoManager.Mount(item.Path, cancellationToken);
}
return NullMountTaskResult;
diff --git a/MediaBrowser.Controller/Providers/MediaInfo/FFProbeAudioInfoProvider.cs b/MediaBrowser.Controller/Providers/MediaInfo/FFProbeAudioInfoProvider.cs
index 49c829fff..01711d771 100644
--- a/MediaBrowser.Controller/Providers/MediaInfo/FFProbeAudioInfoProvider.cs
+++ b/MediaBrowser.Controller/Providers/MediaInfo/FFProbeAudioInfoProvider.cs
@@ -5,7 +5,6 @@ using MediaBrowser.Controller.MediaInfo;
using MediaBrowser.Model.Entities;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
@@ -15,7 +14,6 @@ namespace MediaBrowser.Controller.Providers.MediaInfo
/// <summary>
/// Extracts audio information using ffprobe
/// </summary>
- [Export(typeof(BaseMetadataProvider))]
public class FFProbeAudioInfoProvider : BaseFFProbeProvider<Audio>
{
/// <summary>
diff --git a/MediaBrowser.Controller/Providers/MediaInfo/FFProbeVideoInfoProvider.cs b/MediaBrowser.Controller/Providers/MediaInfo/FFProbeVideoInfoProvider.cs
index 2df495b23..443d28b67 100644
--- a/MediaBrowser.Controller/Providers/MediaInfo/FFProbeVideoInfoProvider.cs
+++ b/MediaBrowser.Controller/Providers/MediaInfo/FFProbeVideoInfoProvider.cs
@@ -6,7 +6,6 @@ using MediaBrowser.Model.Entities;
using MediaBrowser.Model.MediaInfo;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.IO;
using System.Linq;
using System.Threading;
@@ -17,7 +16,6 @@ namespace MediaBrowser.Controller.Providers.MediaInfo
/// <summary>
/// Extracts video information using ffprobe
/// </summary>
- [Export(typeof(BaseMetadataProvider))]
public class FFProbeVideoInfoProvider : BaseFFProbeProvider<Video>
{
/// <summary>
@@ -32,13 +30,18 @@ namespace MediaBrowser.Controller.Providers.MediaInfo
/// <value>The bluray examiner.</value>
private IBlurayExaminer BlurayExaminer { get; set; }
+ /// <summary>
+ /// The _iso manager
+ /// </summary>
+ private readonly IIsoManager _isoManager;
+
/// <summary>
/// Initializes a new instance of the <see cref="FFProbeVideoInfoProvider" /> class.
/// </summary>
+ /// <param name="isoManager">The iso manager.</param>
/// <param name="blurayExaminer">The bluray examiner.</param>
/// <exception cref="System.ArgumentNullException">blurayExaminer</exception>
- [ImportingConstructor]
- public FFProbeVideoInfoProvider([Import("blurayExaminer")] IBlurayExaminer blurayExaminer)
+ public FFProbeVideoInfoProvider(IIsoManager isoManager, IBlurayExaminer blurayExaminer)
: base()
{
if (blurayExaminer == null)
@@ -47,6 +50,7 @@ namespace MediaBrowser.Controller.Providers.MediaInfo
}
BlurayExaminer = blurayExaminer;
+ _isoManager = isoManager;
BdInfoCache = new FileSystemRepository(Path.Combine(Kernel.Instance.ApplicationPaths.CachePath, "bdinfo"));
}
@@ -76,7 +80,7 @@ namespace MediaBrowser.Controller.Providers.MediaInfo
{
if (video.VideoType == VideoType.Iso)
{
- return Kernel.Instance.IsoManager.CanMount(item.Path);
+ return _isoManager.CanMount(item.Path);
}
return video.VideoType == VideoType.VideoFile || video.VideoType == VideoType.Dvd || video.VideoType == VideoType.BluRay;
@@ -101,7 +105,7 @@ namespace MediaBrowser.Controller.Providers.MediaInfo
{
PopulateDvdStreamFiles(item, mount);
}
-
+
base.OnPreFetch(item, mount);
}
@@ -115,7 +119,7 @@ namespace MediaBrowser.Controller.Providers.MediaInfo
{
if (item.VideoType == VideoType.Iso)
{
- return Kernel.Instance.IsoManager.Mount(item.Path, cancellationToken);
+ return _isoManager.Mount(item.Path, cancellationToken);
}
return base.MountIsoIfNeeded(item, cancellationToken);
diff --git a/MediaBrowser.Controller/Providers/Movies/FanArtMovieProvider.cs b/MediaBrowser.Controller/Providers/Movies/FanArtMovieProvider.cs
index 38e547523..e833e4931 100644
--- a/MediaBrowser.Controller/Providers/Movies/FanArtMovieProvider.cs
+++ b/MediaBrowser.Controller/Providers/Movies/FanArtMovieProvider.cs
@@ -4,7 +4,6 @@ using MediaBrowser.Controller.Entities.Movies;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Net;
using System;
-using System.ComponentModel.Composition;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
@@ -15,7 +14,6 @@ namespace MediaBrowser.Controller.Providers.Movies
/// <summary>
/// Class FanArtMovieProvider
/// </summary>
- [Export(typeof(BaseMetadataProvider))]
class FanArtMovieProvider : FanartBaseProvider
{
/// <summary>
diff --git a/MediaBrowser.Controller/Providers/Movies/MovieDbProvider.cs b/MediaBrowser.Controller/Providers/Movies/MovieDbProvider.cs
index 2319e5cfa..72f8a3fc7 100644
--- a/MediaBrowser.Controller/Providers/Movies/MovieDbProvider.cs
+++ b/MediaBrowser.Controller/Providers/Movies/MovieDbProvider.cs
@@ -7,7 +7,6 @@ using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Net;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.Globalization;
using System.IO;
using System.Linq;
@@ -29,7 +28,6 @@ namespace MediaBrowser.Controller.Providers.Movies
/// <summary>
/// Class MovieDbProvider
/// </summary>
- [Export(typeof(BaseMetadataProvider))]
public class MovieDbProvider : BaseMetadataProvider
{
/// <summary>
diff --git a/MediaBrowser.Controller/Providers/Movies/MovieProviderFromJson.cs b/MediaBrowser.Controller/Providers/Movies/MovieProviderFromJson.cs
index ad5f6626b..45079ddda 100644
--- a/MediaBrowser.Controller/Providers/Movies/MovieProviderFromJson.cs
+++ b/MediaBrowser.Controller/Providers/Movies/MovieProviderFromJson.cs
@@ -1,7 +1,6 @@
using MediaBrowser.Common.Serialization;
using MediaBrowser.Controller.Entities;
using System;
-using System.ComponentModel.Composition;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
@@ -11,7 +10,6 @@ namespace MediaBrowser.Controller.Providers.Movies
/// <summary>
/// Class MovieProviderFromJson
/// </summary>
- [Export(typeof(BaseMetadataProvider))]
public class MovieProviderFromJson : MovieDbProvider
{
/// <summary>
diff --git a/MediaBrowser.Controller/Providers/Movies/MovieProviderFromXml.cs b/MediaBrowser.Controller/Providers/Movies/MovieProviderFromXml.cs
index b180fa580..274930bc8 100644
--- a/MediaBrowser.Controller/Providers/Movies/MovieProviderFromXml.cs
+++ b/MediaBrowser.Controller/Providers/Movies/MovieProviderFromXml.cs
@@ -1,7 +1,6 @@
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Movies;
using System;
-using System.ComponentModel.Composition;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
@@ -11,7 +10,6 @@ namespace MediaBrowser.Controller.Providers.Movies
/// <summary>
/// Class MovieProviderFromXml
/// </summary>
- [Export(typeof(BaseMetadataProvider))]
public class MovieProviderFromXml : BaseMetadataProvider
{
/// <summary>
diff --git a/MediaBrowser.Controller/Providers/Movies/PersonProviderFromJson.cs b/MediaBrowser.Controller/Providers/Movies/PersonProviderFromJson.cs
index 19a707be3..b4b4933e2 100644
--- a/MediaBrowser.Controller/Providers/Movies/PersonProviderFromJson.cs
+++ b/MediaBrowser.Controller/Providers/Movies/PersonProviderFromJson.cs
@@ -1,7 +1,6 @@
using MediaBrowser.Common.Serialization;
using MediaBrowser.Controller.Entities;
using System;
-using System.ComponentModel.Composition;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
@@ -11,7 +10,6 @@ namespace MediaBrowser.Controller.Providers.Movies
/// <summary>
/// Class PersonProviderFromJson
/// </summary>
- [Export(typeof(BaseMetadataProvider))]
class PersonProviderFromJson : TmdbPersonProvider
{
/// <summary>
diff --git a/MediaBrowser.Controller/Providers/Movies/TmdbPersonProvider.cs b/MediaBrowser.Controller/Providers/Movies/TmdbPersonProvider.cs
index 4cdfc5894..7b5d62fb0 100644
--- a/MediaBrowser.Controller/Providers/Movies/TmdbPersonProvider.cs
+++ b/MediaBrowser.Controller/Providers/Movies/TmdbPersonProvider.cs
@@ -4,7 +4,6 @@ using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Net;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.Globalization;
using System.IO;
using System.Linq;
@@ -17,7 +16,6 @@ namespace MediaBrowser.Controller.Providers.Movies
/// <summary>
/// Class TmdbPersonProvider
/// </summary>
- [Export(typeof(BaseMetadataProvider))]
public class TmdbPersonProvider : BaseMetadataProvider
{
/// <summary>
diff --git a/MediaBrowser.Controller/Providers/SortNameProvider.cs b/MediaBrowser.Controller/Providers/SortNameProvider.cs
index 071732f3e..933b0c78c 100644
--- a/MediaBrowser.Controller/Providers/SortNameProvider.cs
+++ b/MediaBrowser.Controller/Providers/SortNameProvider.cs
@@ -1,7 +1,6 @@
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Audio;
using MediaBrowser.Controller.Entities.TV;
-using System.ComponentModel.Composition;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
@@ -11,7 +10,6 @@ namespace MediaBrowser.Controller.Providers
/// <summary>
/// Class SortNameProvider
/// </summary>
- [Export(typeof(BaseMetadataProvider))]
public class SortNameProvider : BaseMetadataProvider
{
/// <summary>
diff --git a/MediaBrowser.Controller/Providers/TV/EpisodeImageFromMediaLocationProvider.cs b/MediaBrowser.Controller/Providers/TV/EpisodeImageFromMediaLocationProvider.cs
index a493ce746..c6210f74c 100644
--- a/MediaBrowser.Controller/Providers/TV/EpisodeImageFromMediaLocationProvider.cs
+++ b/MediaBrowser.Controller/Providers/TV/EpisodeImageFromMediaLocationProvider.cs
@@ -2,7 +2,6 @@
using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Model.Entities;
using System;
-using System.ComponentModel.Composition;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
@@ -12,7 +11,6 @@ namespace MediaBrowser.Controller.Providers.TV
/// <summary>
/// Class EpisodeImageFromMediaLocationProvider
/// </summary>
- [Export(typeof(BaseMetadataProvider))]
public class EpisodeImageFromMediaLocationProvider : BaseMetadataProvider
{
/// <summary>
diff --git a/MediaBrowser.Controller/Providers/TV/EpisodeProviderFromXml.cs b/MediaBrowser.Controller/Providers/TV/EpisodeProviderFromXml.cs
index 08d0988eb..7a96e368c 100644
--- a/MediaBrowser.Controller/Providers/TV/EpisodeProviderFromXml.cs
+++ b/MediaBrowser.Controller/Providers/TV/EpisodeProviderFromXml.cs
@@ -2,7 +2,6 @@
using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Model.Entities;
using System;
-using System.ComponentModel.Composition;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
@@ -12,7 +11,6 @@ namespace MediaBrowser.Controller.Providers.TV
/// <summary>
/// Class EpisodeProviderFromXml
/// </summary>
- [Export(typeof(BaseMetadataProvider))]
public class EpisodeProviderFromXml : BaseMetadataProvider
{
/// <summary>
diff --git a/MediaBrowser.Controller/Providers/TV/FanArtTVProvider.cs b/MediaBrowser.Controller/Providers/TV/FanArtTVProvider.cs
index 2640e0482..05ab172a8 100644
--- a/MediaBrowser.Controller/Providers/TV/FanArtTVProvider.cs
+++ b/MediaBrowser.Controller/Providers/TV/FanArtTVProvider.cs
@@ -4,7 +4,6 @@ using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Net;
using System;
-using System.ComponentModel.Composition;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
@@ -12,7 +11,6 @@ using System.Xml;
namespace MediaBrowser.Controller.Providers.TV
{
- [Export(typeof(BaseMetadataProvider))]
class FanArtTVProvider : FanartBaseProvider
{
protected string FanArtBaseUrl = "http://api.fanart.tv/webservice/series/{0}/{1}/xml/all/1/1";
diff --git a/MediaBrowser.Controller/Providers/TV/RemoteEpisodeProvider.cs b/MediaBrowser.Controller/Providers/TV/RemoteEpisodeProvider.cs
index d1d931a62..b06598114 100644
--- a/MediaBrowser.Controller/Providers/TV/RemoteEpisodeProvider.cs
+++ b/MediaBrowser.Controller/Providers/TV/RemoteEpisodeProvider.cs
@@ -5,7 +5,6 @@ using MediaBrowser.Controller.Resolvers.TV;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Net;
using System;
-using System.ComponentModel.Composition;
using System.IO;
using System.Linq;
using System.Threading;
@@ -18,7 +17,6 @@ namespace MediaBrowser.Controller.Providers.TV
/// <summary>
/// Class RemoteEpisodeProvider
/// </summary>
- [Export(typeof(BaseMetadataProvider))]
class RemoteEpisodeProvider : BaseMetadataProvider
{
diff --git a/MediaBrowser.Controller/Providers/TV/RemoteSeasonProvider.cs b/MediaBrowser.Controller/Providers/TV/RemoteSeasonProvider.cs
index 277b6d891..3e7f6b1a2 100644
--- a/MediaBrowser.Controller/Providers/TV/RemoteSeasonProvider.cs
+++ b/MediaBrowser.Controller/Providers/TV/RemoteSeasonProvider.cs
@@ -5,7 +5,6 @@ using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Net;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
@@ -16,7 +15,6 @@ namespace MediaBrowser.Controller.Providers.TV
/// <summary>
/// Class RemoteSeasonProvider
/// </summary>
- [Export(typeof(BaseMetadataProvider))]
class RemoteSeasonProvider : BaseMetadataProvider
{
diff --git a/MediaBrowser.Controller/Providers/TV/RemoteSeriesProvider.cs b/MediaBrowser.Controller/Providers/TV/RemoteSeriesProvider.cs
index 985aa0262..b8941dbba 100644
--- a/MediaBrowser.Controller/Providers/TV/RemoteSeriesProvider.cs
+++ b/MediaBrowser.Controller/Providers/TV/RemoteSeriesProvider.cs
@@ -7,7 +7,6 @@ using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Net;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.IO;
using System.Net;
using System.Text;
@@ -20,7 +19,6 @@ namespace MediaBrowser.Controller.Providers.TV
/// <summary>
/// Class RemoteSeriesProvider
/// </summary>
- [Export(typeof(BaseMetadataProvider))]
class RemoteSeriesProvider : BaseMetadataProvider
{
diff --git a/MediaBrowser.Controller/Providers/TV/SeriesProviderFromXml.cs b/MediaBrowser.Controller/Providers/TV/SeriesProviderFromXml.cs
index c92841fb6..aa2cde28d 100644
--- a/MediaBrowser.Controller/Providers/TV/SeriesProviderFromXml.cs
+++ b/MediaBrowser.Controller/Providers/TV/SeriesProviderFromXml.cs
@@ -2,7 +2,6 @@
using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Model.Entities;
using System;
-using System.ComponentModel.Composition;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
@@ -12,7 +11,6 @@ namespace MediaBrowser.Controller.Providers.TV
/// <summary>
/// Class SeriesProviderFromXml
/// </summary>
- [Export(typeof(BaseMetadataProvider))]
public class SeriesProviderFromXml : BaseMetadataProvider
{
/// <summary>
diff --git a/MediaBrowser.Controller/Resolvers/Audio/AudioResolver.cs b/MediaBrowser.Controller/Resolvers/Audio/AudioResolver.cs
index f827bf047..6e1bbfbfe 100644
--- a/MediaBrowser.Controller/Resolvers/Audio/AudioResolver.cs
+++ b/MediaBrowser.Controller/Resolvers/Audio/AudioResolver.cs
@@ -1,16 +1,26 @@
using MediaBrowser.Controller.Library;
-using System.ComponentModel.Composition;
namespace MediaBrowser.Controller.Resolvers.Audio
{
- [Export(typeof(IBaseItemResolver))]
+ /// <summary>
+ /// Class AudioResolver
+ /// </summary>
public class AudioResolver : BaseItemResolver<Entities.Audio.Audio>
{
+ /// <summary>
+ /// Gets the priority.
+ /// </summary>
+ /// <value>The priority.</value>
public override ResolverPriority Priority
{
get { return ResolverPriority.Last; }
}
-
+
+ /// <summary>
+ /// Resolves the specified args.
+ /// </summary>
+ /// <param name="args">The args.</param>
+ /// <returns>Entities.Audio.Audio.</returns>
protected override Entities.Audio.Audio Resolve(ItemResolveArgs args)
{
// Return audio if the path is a file and has a matching extension
diff --git a/MediaBrowser.Controller/Resolvers/Audio/MusicAlbumResolver.cs b/MediaBrowser.Controller/Resolvers/Audio/MusicAlbumResolver.cs
index 8b2e49f31..d8d2c326d 100644
--- a/MediaBrowser.Controller/Resolvers/Audio/MusicAlbumResolver.cs
+++ b/MediaBrowser.Controller/Resolvers/Audio/MusicAlbumResolver.cs
@@ -1,17 +1,27 @@
using MediaBrowser.Controller.Entities.Audio;
using MediaBrowser.Controller.Library;
-using System.ComponentModel.Composition;
namespace MediaBrowser.Controller.Resolvers.Audio
{
- [Export(typeof(IBaseItemResolver))]
+ /// <summary>
+ /// Class MusicAlbumResolver
+ /// </summary>
public class MusicAlbumResolver : BaseItemResolver<MusicAlbum>
{
+ /// <summary>
+ /// Gets the priority.
+ /// </summary>
+ /// <value>The priority.</value>
public override ResolverPriority Priority
{
get { return ResolverPriority.Third; } // we need to be ahead of the generic folder resolver but behind the movie one
}
-
+
+ /// <summary>
+ /// Resolves the specified args.
+ /// </summary>
+ /// <param name="args">The args.</param>
+ /// <returns>MusicAlbum.</returns>
protected override MusicAlbum Resolve(ItemResolveArgs args)
{
if (!args.IsDirectory) return null;
diff --git a/MediaBrowser.Controller/Resolvers/Audio/MusicArtistResolver.cs b/MediaBrowser.Controller/Resolvers/Audio/MusicArtistResolver.cs
index 8060e8d33..45f96d3ab 100644
--- a/MediaBrowser.Controller/Resolvers/Audio/MusicArtistResolver.cs
+++ b/MediaBrowser.Controller/Resolvers/Audio/MusicArtistResolver.cs
@@ -1,18 +1,28 @@
using MediaBrowser.Controller.Entities.Audio;
using MediaBrowser.Controller.Library;
-using System.ComponentModel.Composition;
using System.Linq;
namespace MediaBrowser.Controller.Resolvers.Audio
{
- [Export(typeof(IBaseItemResolver))]
+ /// <summary>
+ /// Class MusicArtistResolver
+ /// </summary>
public class MusicArtistResolver : BaseItemResolver<MusicArtist>
{
+ /// <summary>
+ /// Gets the priority.
+ /// </summary>
+ /// <value>The priority.</value>
public override ResolverPriority Priority
{
get { return ResolverPriority.Third; } // we need to be ahead of the generic folder resolver but behind the movie one
}
+ /// <summary>
+ /// Resolves the specified args.
+ /// </summary>
+ /// <param name="args">The args.</param>
+ /// <returns>MusicArtist.</returns>
protected override MusicArtist Resolve(ItemResolveArgs args)
{
if (!args.IsDirectory) return null;
diff --git a/MediaBrowser.Controller/Resolvers/CoreResolutionIgnoreRule.cs b/MediaBrowser.Controller/Resolvers/CoreResolutionIgnoreRule.cs
index 2d69f8def..770b673a5 100644
--- a/MediaBrowser.Controller/Resolvers/CoreResolutionIgnoreRule.cs
+++ b/MediaBrowser.Controller/Resolvers/CoreResolutionIgnoreRule.cs
@@ -1,7 +1,6 @@
using MediaBrowser.Controller.Library;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.Linq;
namespace MediaBrowser.Controller.Resolvers
@@ -9,8 +8,7 @@ namespace MediaBrowser.Controller.Resolvers
/// <summary>
/// Provides the core resolver ignore rules
/// </summary>
- [Export(typeof(BaseResolutionIgnoreRule))]
- public class CoreResolutionIgnoreRule : BaseResolutionIgnoreRule
+ public class CoreResolutionIgnoreRule : IResolutionIgnoreRule
{
/// <summary>
/// Any folder named in this list will be ignored - can be added to at runtime for extensibility
@@ -27,7 +25,12 @@ namespace MediaBrowser.Controller.Resolvers
"extrafanart"
};
- public override bool ShouldIgnore(ItemResolveArgs args)
+ /// <summary>
+ /// Shoulds the ignore.
+ /// </summary>
+ /// <param name="args">The args.</param>
+ /// <returns><c>true</c> if XXXX, <c>false</c> otherwise</returns>
+ public bool ShouldIgnore(ItemResolveArgs args)
{
// Ignore hidden files and folders
if (args.IsHidden)
diff --git a/MediaBrowser.Controller/Resolvers/EntityResolutionHelper.cs b/MediaBrowser.Controller/Resolvers/EntityResolutionHelper.cs
index 75e130526..f406cb185 100644
--- a/MediaBrowser.Controller/Resolvers/EntityResolutionHelper.cs
+++ b/MediaBrowser.Controller/Resolvers/EntityResolutionHelper.cs
@@ -1,6 +1,7 @@
using MediaBrowser.Common.IO;
using MediaBrowser.Common.Win32;
using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.IO;
using MediaBrowser.Controller.Library;
using System;
using System.Collections.Generic;
diff --git a/MediaBrowser.Controller/Resolvers/FolderResolver.cs b/MediaBrowser.Controller/Resolvers/FolderResolver.cs
index e37c18692..c356b8c84 100644
--- a/MediaBrowser.Controller/Resolvers/FolderResolver.cs
+++ b/MediaBrowser.Controller/Resolvers/FolderResolver.cs
@@ -1,13 +1,11 @@
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library;
-using System.ComponentModel.Composition;
namespace MediaBrowser.Controller.Resolvers
{
/// <summary>
/// Class FolderResolver
/// </summary>
- [Export(typeof(IBaseItemResolver))]
public class FolderResolver : BaseFolderResolver<Folder>
{
/// <summary>
diff --git a/MediaBrowser.Controller/Resolvers/BaseResolutionIgnoreRule.cs b/MediaBrowser.Controller/Resolvers/IResolutionIgnoreRule.cs
index 45effc4da..661688f3c 100644
--- a/MediaBrowser.Controller/Resolvers/BaseResolutionIgnoreRule.cs
+++ b/MediaBrowser.Controller/Resolvers/IResolutionIgnoreRule.cs
@@ -5,8 +5,8 @@ namespace MediaBrowser.Controller.Resolvers
/// <summary>
/// Provides a base "rule" that anyone can use to have paths ignored by the resolver
/// </summary>
- public abstract class BaseResolutionIgnoreRule
+ public interface IResolutionIgnoreRule
{
- public abstract bool ShouldIgnore(ItemResolveArgs args);
+ bool ShouldIgnore(ItemResolveArgs args);
}
}
diff --git a/MediaBrowser.Controller/Resolvers/LocalTrailerResolver.cs b/MediaBrowser.Controller/Resolvers/LocalTrailerResolver.cs
index c26b0ce37..a61e010b3 100644
--- a/MediaBrowser.Controller/Resolvers/LocalTrailerResolver.cs
+++ b/MediaBrowser.Controller/Resolvers/LocalTrailerResolver.cs
@@ -1,7 +1,6 @@
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Library;
using System;
-using System.ComponentModel.Composition;
using System.IO;
namespace MediaBrowser.Controller.Resolvers
@@ -9,7 +8,6 @@ namespace MediaBrowser.Controller.Resolvers
/// <summary>
/// Class LocalTrailerResolver
/// </summary>
- [Export(typeof(IBaseItemResolver))]
public class LocalTrailerResolver : BaseVideoResolver<Trailer>
{
/// <summary>
diff --git a/MediaBrowser.Controller/Resolvers/Movies/BoxSetResolver.cs b/MediaBrowser.Controller/Resolvers/Movies/BoxSetResolver.cs
index ccca0cfab..2eee2a98b 100644
--- a/MediaBrowser.Controller/Resolvers/Movies/BoxSetResolver.cs
+++ b/MediaBrowser.Controller/Resolvers/Movies/BoxSetResolver.cs
@@ -1,7 +1,6 @@
using MediaBrowser.Controller.Entities.Movies;
using MediaBrowser.Controller.Library;
using System;
-using System.ComponentModel.Composition;
using System.IO;
namespace MediaBrowser.Controller.Resolvers.Movies
@@ -9,7 +8,6 @@ namespace MediaBrowser.Controller.Resolvers.Movies
/// <summary>
/// Class BoxSetResolver
/// </summary>
- [Export(typeof(IBaseItemResolver))]
public class BoxSetResolver : BaseFolderResolver<BoxSet>
{
/// <summary>
diff --git a/MediaBrowser.Controller/Resolvers/Movies/MovieResolver.cs b/MediaBrowser.Controller/Resolvers/Movies/MovieResolver.cs
index 14f635747..9443221a3 100644
--- a/MediaBrowser.Controller/Resolvers/Movies/MovieResolver.cs
+++ b/MediaBrowser.Controller/Resolvers/Movies/MovieResolver.cs
@@ -6,7 +6,6 @@ using MediaBrowser.Controller.Providers.Movies;
using MediaBrowser.Model.Entities;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.IO;
namespace MediaBrowser.Controller.Resolvers.Movies
@@ -14,7 +13,6 @@ namespace MediaBrowser.Controller.Resolvers.Movies
/// <summary>
/// Class MovieResolver
/// </summary>
- [Export(typeof(IBaseItemResolver))]
public class MovieResolver : BaseVideoResolver<Movie>
{
/// <summary>
diff --git a/MediaBrowser.Controller/Resolvers/TV/EpisodeResolver.cs b/MediaBrowser.Controller/Resolvers/TV/EpisodeResolver.cs
index f2f3ce122..d1789bcbb 100644
--- a/MediaBrowser.Controller/Resolvers/TV/EpisodeResolver.cs
+++ b/MediaBrowser.Controller/Resolvers/TV/EpisodeResolver.cs
@@ -1,14 +1,20 @@
-using System;
-using MediaBrowser.Controller.Entities.TV;
+using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Library;
-using System.ComponentModel.Composition;
using MediaBrowser.Model.Entities;
+using System;
namespace MediaBrowser.Controller.Resolvers.TV
{
- [Export(typeof(IBaseItemResolver))]
+ /// <summary>
+ /// Class EpisodeResolver
+ /// </summary>
public class EpisodeResolver : BaseVideoResolver<Episode>
{
+ /// <summary>
+ /// Resolves the specified args.
+ /// </summary>
+ /// <param name="args">The args.</param>
+ /// <returns>Episode.</returns>
protected override Episode Resolve(ItemResolveArgs args)
{
// If the parent is a Season or Series, then this is an Episode if the VideoResolver returns something
@@ -40,6 +46,11 @@ namespace MediaBrowser.Controller.Resolvers.TV
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(Episode item, ItemResolveArgs args)
{
base.SetInitialItemValues(item, args);
diff --git a/MediaBrowser.Controller/Resolvers/TV/SeasonResolver.cs b/MediaBrowser.Controller/Resolvers/TV/SeasonResolver.cs
index 6569c85bc..9ea474207 100644
--- a/MediaBrowser.Controller/Resolvers/TV/SeasonResolver.cs
+++ b/MediaBrowser.Controller/Resolvers/TV/SeasonResolver.cs
@@ -1,13 +1,19 @@
using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Library;
using System;
-using System.ComponentModel.Composition;
namespace MediaBrowser.Controller.Resolvers.TV
{
- [Export(typeof(IBaseItemResolver))]
+ /// <summary>
+ /// Class SeasonResolver
+ /// </summary>
public class SeasonResolver : BaseFolderResolver<Season>
{
+ /// <summary>
+ /// Resolves the specified args.
+ /// </summary>
+ /// <param name="args">The args.</param>
+ /// <returns>Season.</returns>
protected override Season Resolve(ItemResolveArgs args)
{
if (args.Parent is Series && args.IsDirectory)
@@ -21,6 +27,11 @@ namespace MediaBrowser.Controller.Resolvers.TV
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(Season item, ItemResolveArgs args)
{
base.SetInitialItemValues(item, args);
diff --git a/MediaBrowser.Controller/Resolvers/TV/SeriesResolver.cs b/MediaBrowser.Controller/Resolvers/TV/SeriesResolver.cs
index 7c0bc3df1..c973cfe87 100644
--- a/MediaBrowser.Controller/Resolvers/TV/SeriesResolver.cs
+++ b/MediaBrowser.Controller/Resolvers/TV/SeriesResolver.cs
@@ -3,7 +3,6 @@ using MediaBrowser.Controller.Entities.TV;
using MediaBrowser.Controller.Library;
using MediaBrowser.Model.Entities;
using System;
-using System.ComponentModel.Composition;
using System.IO;
namespace MediaBrowser.Controller.Resolvers.TV
@@ -11,7 +10,6 @@ namespace MediaBrowser.Controller.Resolvers.TV
/// <summary>
/// Class SeriesResolver
/// </summary>
- [Export(typeof(IBaseItemResolver))]
public class SeriesResolver : BaseFolderResolver<Series>
{
/// <summary>
diff --git a/MediaBrowser.Controller/Resolvers/VideoResolver.cs b/MediaBrowser.Controller/Resolvers/VideoResolver.cs
index bfb364349..5f2f8d954 100644
--- a/MediaBrowser.Controller/Resolvers/VideoResolver.cs
+++ b/MediaBrowser.Controller/Resolvers/VideoResolver.cs
@@ -2,7 +2,6 @@
using MediaBrowser.Controller.Library;
using MediaBrowser.Model.Entities;
using System;
-using System.ComponentModel.Composition;
using System.IO;
namespace MediaBrowser.Controller.Resolvers
@@ -10,7 +9,6 @@ namespace MediaBrowser.Controller.Resolvers
/// <summary>
/// Resolves a Path into a Video
/// </summary>
- [Export(typeof(IBaseItemResolver))]
public class VideoResolver : BaseVideoResolver<Video>
{
/// <summary>
diff --git a/MediaBrowser.Controller/ScheduledTasks/ChapterImagesTask.cs b/MediaBrowser.Controller/ScheduledTasks/ChapterImagesTask.cs
index d3d30ed77..1a64bb853 100644
--- a/MediaBrowser.Controller/ScheduledTasks/ChapterImagesTask.cs
+++ b/MediaBrowser.Controller/ScheduledTasks/ChapterImagesTask.cs
@@ -1,19 +1,30 @@
using MediaBrowser.Common.ScheduledTasks;
using MediaBrowser.Controller.Entities;
-using MediaBrowser.Model.Tasks;
+using MediaBrowser.Model.Logging;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
namespace MediaBrowser.Controller.ScheduledTasks
{
- [Export(typeof(IScheduledTask))]
+ /// <summary>
+ /// Class ChapterImagesTask
+ /// </summary>
class ChapterImagesTask : BaseScheduledTask<Kernel>
{
/// <summary>
+ /// Initializes a new instance of the <see cref="ChapterImagesTask" /> class.
+ /// </summary>
+ /// <param name="kernel">The kernel.</param>
+ /// <param name="logger"></param>
+ public ChapterImagesTask(Kernel kernel, ITaskManager taskManager, ILogger logger)
+ : base(kernel, taskManager, logger)
+ {
+ }
+
+ /// <summary>
/// Creates the triggers that define when the task will run
/// </summary>
/// <returns>IEnumerable{BaseTaskTrigger}.</returns>
diff --git a/MediaBrowser.Controller/ScheduledTasks/ImageCleanupTask.cs b/MediaBrowser.Controller/ScheduledTasks/ImageCleanupTask.cs
index 57fc280de..8dd0895c9 100644
--- a/MediaBrowser.Controller/ScheduledTasks/ImageCleanupTask.cs
+++ b/MediaBrowser.Controller/ScheduledTasks/ImageCleanupTask.cs
@@ -1,11 +1,9 @@
-using MediaBrowser.Common.Extensions;
-using MediaBrowser.Common.ScheduledTasks;
+using MediaBrowser.Common.ScheduledTasks;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Movies;
-using MediaBrowser.Model.Tasks;
+using MediaBrowser.Model.Logging;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.IO;
using System.Linq;
using System.Threading;
@@ -16,10 +14,19 @@ namespace MediaBrowser.Controller.ScheduledTasks
/// <summary>
/// Class ImageCleanupTask
/// </summary>
- [Export(typeof(IScheduledTask))]
public class ImageCleanupTask : BaseScheduledTask<Kernel>
{
/// <summary>
+ /// Initializes a new instance of the <see cref="ImageCleanupTask" /> class.
+ /// </summary>
+ /// <param name="kernel">The kernel.</param>
+ /// <param name="logger"></param>
+ public ImageCleanupTask(Kernel kernel, ITaskManager taskManager, ILogger logger)
+ : base(kernel, taskManager, logger)
+ {
+ }
+
+ /// <summary>
/// Creates the triggers that define when the task will run
/// </summary>
/// <returns>IEnumerable{BaseTaskTrigger}.</returns>
diff --git a/MediaBrowser.Controller/ScheduledTasks/PeopleValidationTask.cs b/MediaBrowser.Controller/ScheduledTasks/PeopleValidationTask.cs
index 2a91f0716..ee55ff2e9 100644
--- a/MediaBrowser.Controller/ScheduledTasks/PeopleValidationTask.cs
+++ b/MediaBrowser.Controller/ScheduledTasks/PeopleValidationTask.cs
@@ -1,7 +1,7 @@
using MediaBrowser.Common.ScheduledTasks;
+using MediaBrowser.Model.Logging;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.Threading;
using System.Threading.Tasks;
@@ -10,10 +10,19 @@ namespace MediaBrowser.Controller.ScheduledTasks
/// <summary>
/// Class PeopleValidationTask
/// </summary>
- [Export(typeof(IScheduledTask))]
public class PeopleValidationTask : BaseScheduledTask<Kernel>
{
/// <summary>
+ /// Initializes a new instance of the <see cref="PeopleValidationTask" /> class.
+ /// </summary>
+ /// <param name="kernel">The kernel.</param>
+ /// <param name="logger"></param>
+ public PeopleValidationTask(Kernel kernel, ITaskManager taskManager, ILogger logger)
+ : base(kernel, taskManager, logger)
+ {
+ }
+
+ /// <summary>
/// Creates the triggers that define when the task will run
/// </summary>
/// <returns>IEnumerable{BaseTaskTrigger}.</returns>
diff --git a/MediaBrowser.Controller/ScheduledTasks/PluginUpdateTask.cs b/MediaBrowser.Controller/ScheduledTasks/PluginUpdateTask.cs
index 3d79193d5..854c3b82f 100644
--- a/MediaBrowser.Controller/ScheduledTasks/PluginUpdateTask.cs
+++ b/MediaBrowser.Controller/ScheduledTasks/PluginUpdateTask.cs
@@ -1,9 +1,8 @@
using MediaBrowser.Common.ScheduledTasks;
+using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Net;
-using MediaBrowser.Model.Tasks;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.IO;
using System.Linq;
using System.Threading;
@@ -14,10 +13,19 @@ namespace MediaBrowser.Controller.ScheduledTasks
/// <summary>
/// Plugin Update Task
/// </summary>
- [Export(typeof(IScheduledTask))]
public class PluginUpdateTask : BaseScheduledTask<Kernel>
{
/// <summary>
+ /// Initializes a new instance of the <see cref="PluginUpdateTask" /> class.
+ /// </summary>
+ /// <param name="kernel">The kernel.</param>
+ /// <param name="logger"></param>
+ public PluginUpdateTask(Kernel kernel, ITaskManager taskManager, ILogger logger)
+ : base(kernel, taskManager, logger)
+ {
+ }
+
+ /// <summary>
/// Creates the triggers that define when the task will run
/// </summary>
/// <returns>IEnumerable{BaseTaskTrigger}.</returns>
diff --git a/MediaBrowser.Controller/ScheduledTasks/RefreshMediaLibraryTask.cs b/MediaBrowser.Controller/ScheduledTasks/RefreshMediaLibraryTask.cs
index f0fcb8aba..76e60f2ef 100644
--- a/MediaBrowser.Controller/ScheduledTasks/RefreshMediaLibraryTask.cs
+++ b/MediaBrowser.Controller/ScheduledTasks/RefreshMediaLibraryTask.cs
@@ -1,8 +1,8 @@
using MediaBrowser.Common.ScheduledTasks;
+using MediaBrowser.Model.Logging;
using MediaBrowser.Model.Tasks;
using System;
using System.Collections.Generic;
-using System.ComponentModel.Composition;
using System.Threading;
using System.Threading.Tasks;
@@ -11,10 +11,19 @@ namespace MediaBrowser.Controller.ScheduledTasks
/// <summary>
/// Class RefreshMediaLibraryTask
/// </summary>
- [Export(typeof(IScheduledTask))]
public class RefreshMediaLibraryTask : BaseScheduledTask<Kernel>
{
/// <summary>
+ /// Initializes a new instance of the <see cref="RefreshMediaLibraryTask" /> class.
+ /// </summary>
+ /// <param name="kernel">The kernel.</param>
+ /// <param name="logger"></param>
+ public RefreshMediaLibraryTask(Kernel kernel, ITaskManager taskManager, ILogger logger)
+ : base(kernel, taskManager, logger)
+ {
+ }
+
+ /// <summary>
/// Gets the default triggers.
/// </summary>
/// <returns>IEnumerable{BaseTaskTrigger}.</returns>
@@ -22,7 +31,7 @@ namespace MediaBrowser.Controller.ScheduledTasks
{
return new BaseTaskTrigger[] {
- new StartupTrigger(Kernel),
+ new StartupTrigger(),
new SystemEventTrigger{ SystemEvent = SystemEvent.WakeFromSleep},