Преглед изворни кода

Merge branch 'master' of https://github.com/MediaBrowser/MediaBrowser

Eric Reed пре 12 година
родитељ
комит
cff5cd9503
29 измењених фајлова са 176 додато и 78 уклоњено
  1. 1 0
      MediaBrowser.Controller/Entities/BaseItem.cs
  2. 1 0
      MediaBrowser.Controller/Entities/Folder.cs
  3. 1 0
      MediaBrowser.Controller/Library/ILibraryManager.cs
  4. 1 0
      MediaBrowser.Controller/Library/TVUtils.cs
  5. 6 4
      MediaBrowser.Controller/MediaBrowser.Controller.csproj
  6. 61 0
      MediaBrowser.Controller/Resolvers/BaseItemResolver.cs
  7. 56 0
      MediaBrowser.Controller/Resolvers/BaseVideoResolver.cs
  8. 2 1
      MediaBrowser.Controller/Resolvers/EntityResolutionHelper.cs
  9. 2 1
      MediaBrowser.Controller/Resolvers/IItemResolver.cs
  10. 3 1
      MediaBrowser.Controller/Resolvers/IResolverIgnoreRule.cs
  11. 1 1
      MediaBrowser.Controller/Resolvers/ResolverPriority.cs
  12. 1 0
      MediaBrowser.Server.Implementations/Library/CoreResolutionIgnoreRule.cs
  13. 1 0
      MediaBrowser.Server.Implementations/Library/LibraryManager.cs
  14. 1 0
      MediaBrowser.Server.Implementations/Library/ResolverHelper.cs
  15. 1 0
      MediaBrowser.Server.Implementations/Library/Resolvers/Audio/AudioResolver.cs
  16. 1 0
      MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicAlbumResolver.cs
  17. 1 0
      MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicArtistResolver.cs
  18. 1 0
      MediaBrowser.Server.Implementations/Library/Resolvers/BaseItemResolver.cs
  19. 1 0
      MediaBrowser.Server.Implementations/Library/Resolvers/FolderResolver.cs
  20. 2 1
      MediaBrowser.Server.Implementations/Library/Resolvers/LocalTrailerResolver.cs
  21. 2 1
      MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs
  22. 2 1
      MediaBrowser.Server.Implementations/Library/Resolvers/TV/EpisodeResolver.cs
  23. 1 0
      MediaBrowser.Server.Implementations/Library/Resolvers/TV/SeriesResolver.cs
  24. 2 51
      MediaBrowser.Server.Implementations/Library/Resolvers/VideoResolver.cs
  25. 1 0
      MediaBrowser.ServerApplication/ApplicationHost.cs
  26. 18 11
      MediaBrowser.ServerApplication/NewItemNotifier.cs
  27. 2 2
      Nuget/MediaBrowser.Common.Internal.nuspec
  28. 1 1
      Nuget/MediaBrowser.Common.nuspec
  29. 2 2
      Nuget/MediaBrowser.Server.Core.nuspec

+ 1 - 0
MediaBrowser.Controller/Entities/BaseItem.cs

@@ -3,6 +3,7 @@ using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Localization;
 using MediaBrowser.Controller.Localization;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Controller.Providers;
+using MediaBrowser.Controller.Resolvers;
 using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.Logging;
 using MediaBrowser.Model.Logging;
 using System;
 using System;

+ 1 - 0
MediaBrowser.Controller/Entities/Folder.cs

@@ -2,6 +2,7 @@
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Localization;
 using MediaBrowser.Controller.Localization;
+using MediaBrowser.Controller.Resolvers;
 using MediaBrowser.Controller.Sorting;
 using MediaBrowser.Controller.Sorting;
 using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.Entities;
 using System;
 using System;

+ 1 - 0
MediaBrowser.Controller/Library/ILibraryManager.cs

@@ -1,5 +1,6 @@
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.IO;
+using MediaBrowser.Controller.Resolvers;
 using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.Entities;
 using System;
 using System;
 using System.Collections.Generic;
 using System.Collections.Generic;

+ 1 - 0
MediaBrowser.Controller/Library/TVUtils.cs

@@ -3,6 +3,7 @@ using System;
 using System.Collections.Generic;
 using System.Collections.Generic;
 using System.Linq;
 using System.Linq;
 using System.Text.RegularExpressions;
 using System.Text.RegularExpressions;
+using MediaBrowser.Controller.Resolvers;
 
 
 namespace MediaBrowser.Controller.Library
 namespace MediaBrowser.Controller.Library
 {
 {

+ 6 - 4
MediaBrowser.Controller/MediaBrowser.Controller.csproj

@@ -110,7 +110,9 @@
     <Compile Include="IServerApplicationPaths.cs" />
     <Compile Include="IServerApplicationPaths.cs" />
     <Compile Include="Library\ChildrenChangedEventArgs.cs" />
     <Compile Include="Library\ChildrenChangedEventArgs.cs" />
     <Compile Include="Library\DtoBuilder.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\ILibraryManager.cs" />
     <Compile Include="Library\IUserManager.cs" />
     <Compile Include="Library\IUserManager.cs" />
     <Compile Include="Library\Profiler.cs" />
     <Compile Include="Library\Profiler.cs" />
@@ -165,9 +167,9 @@
     <Compile Include="Providers\TV\SeriesProviderFromXml.cs" />
     <Compile Include="Providers\TV\SeriesProviderFromXml.cs" />
     <Compile Include="Providers\TV\SeriesXmlParser.cs" />
     <Compile Include="Providers\TV\SeriesXmlParser.cs" />
     <Compile Include="Providers\MediaInfo\FFMpegVideoImageProvider.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="Library\TVUtils.cs" />
     <Compile Include="ScheduledTasks\PeopleValidationTask.cs" />
     <Compile Include="ScheduledTasks\PeopleValidationTask.cs" />
     <Compile Include="ScheduledTasks\RefreshMediaLibraryTask.cs" />
     <Compile Include="ScheduledTasks\RefreshMediaLibraryTask.cs" />

+ 61 - 0
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;
+        }
+    }
+}

+ 56 - 0
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;
+        }
+    }
+}

+ 2 - 1
MediaBrowser.Controller/Library/EntityResolutionHelper.cs → MediaBrowser.Controller/Resolvers/EntityResolutionHelper.cs

@@ -4,8 +4,9 @@ using System;
 using System.Collections.Generic;
 using System.Collections.Generic;
 using System.IO;
 using System.IO;
 using System.Linq;
 using System.Linq;
+using MediaBrowser.Controller.Library;
 
 
-namespace MediaBrowser.Controller.Library
+namespace MediaBrowser.Controller.Resolvers
 {
 {
     /// <summary>
     /// <summary>
     /// Class EntityResolutionHelper
     /// Class EntityResolutionHelper

+ 2 - 1
MediaBrowser.Controller/Library/IItemResolver.cs → MediaBrowser.Controller/Resolvers/IItemResolver.cs

@@ -1,6 +1,7 @@
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Entities;
+using MediaBrowser.Controller.Library;
 
 
-namespace MediaBrowser.Controller.Library
+namespace MediaBrowser.Controller.Resolvers
 {
 {
     /// <summary>
     /// <summary>
     /// Interface IItemResolver
     /// Interface IItemResolver

+ 3 - 1
MediaBrowser.Controller/Library/IResolverIgnoreRule.cs → MediaBrowser.Controller/Resolvers/IResolverIgnoreRule.cs

@@ -1,4 +1,6 @@
-namespace MediaBrowser.Controller.Library
+using MediaBrowser.Controller.Library;
+
+namespace MediaBrowser.Controller.Resolvers
 {
 {
     /// <summary>
     /// <summary>
     /// Provides a base "rule" that anyone can use to have paths ignored by the resolver
     /// Provides a base "rule" that anyone can use to have paths ignored by the resolver

+ 1 - 1
MediaBrowser.Controller/Library/ResolverPriority.cs → MediaBrowser.Controller/Resolvers/ResolverPriority.cs

@@ -1,5 +1,5 @@
 
 
-namespace MediaBrowser.Controller.Library
+namespace MediaBrowser.Controller.Resolvers
 {
 {
     /// <summary>
     /// <summary>
     /// Enum ResolverPriority
     /// Enum ResolverPriority

+ 1 - 0
MediaBrowser.Server.Implementations/Library/CoreResolutionIgnoreRule.cs

@@ -2,6 +2,7 @@
 using System;
 using System;
 using System.Collections.Generic;
 using System.Collections.Generic;
 using System.Linq;
 using System.Linq;
+using MediaBrowser.Controller.Resolvers;
 
 
 namespace MediaBrowser.Server.Implementations.Library
 namespace MediaBrowser.Server.Implementations.Library
 {
 {

+ 1 - 0
MediaBrowser.Server.Implementations/Library/LibraryManager.cs

@@ -6,6 +6,7 @@ using MediaBrowser.Controller;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Resolvers;
 using MediaBrowser.Controller.ScheduledTasks;
 using MediaBrowser.Controller.ScheduledTasks;
 using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.Logging;
 using MediaBrowser.Model.Logging;

+ 1 - 0
MediaBrowser.Server.Implementations/Library/ResolverHelper.cs

@@ -3,6 +3,7 @@ using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Library;
 using System.IO;
 using System.IO;
 using System.Text.RegularExpressions;
 using System.Text.RegularExpressions;
+using MediaBrowser.Controller.Resolvers;
 
 
 namespace MediaBrowser.Server.Implementations.Library
 namespace MediaBrowser.Server.Implementations.Library
 {
 {

+ 1 - 0
MediaBrowser.Server.Implementations/Library/Resolvers/Audio/AudioResolver.cs

@@ -3,6 +3,7 @@ using MediaBrowser.Controller.Library;
 using System;
 using System;
 using System.IO;
 using System.IO;
 using System.Linq;
 using System.Linq;
+using MediaBrowser.Controller.Resolvers;
 
 
 namespace MediaBrowser.Server.Implementations.Library.Resolvers.Audio
 namespace MediaBrowser.Server.Implementations.Library.Resolvers.Audio
 {
 {

+ 1 - 0
MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicAlbumResolver.cs

@@ -2,6 +2,7 @@
 using MediaBrowser.Controller.Entities.Audio;
 using MediaBrowser.Controller.Entities.Audio;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.IO;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Resolvers;
 
 
 namespace MediaBrowser.Server.Implementations.Library.Resolvers.Audio
 namespace MediaBrowser.Server.Implementations.Library.Resolvers.Audio
 {
 {

+ 1 - 0
MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicArtistResolver.cs

@@ -1,6 +1,7 @@
 using MediaBrowser.Controller.Entities.Audio;
 using MediaBrowser.Controller.Entities.Audio;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Library;
 using System.Linq;
 using System.Linq;
+using MediaBrowser.Controller.Resolvers;
 
 
 namespace MediaBrowser.Server.Implementations.Library.Resolvers.Audio
 namespace MediaBrowser.Server.Implementations.Library.Resolvers.Audio
 {
 {

+ 1 - 0
MediaBrowser.Server.Implementations/Library/Resolvers/BaseItemResolver.cs

@@ -1,5 +1,6 @@
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Resolvers;
 
 
 namespace MediaBrowser.Server.Implementations.Library.Resolvers
 namespace MediaBrowser.Server.Implementations.Library.Resolvers
 {
 {

+ 1 - 0
MediaBrowser.Server.Implementations/Library/Resolvers/FolderResolver.cs

@@ -1,5 +1,6 @@
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Resolvers;
 
 
 namespace MediaBrowser.Server.Implementations.Library.Resolvers
 namespace MediaBrowser.Server.Implementations.Library.Resolvers
 {
 {

+ 2 - 1
MediaBrowser.Server.Implementations/Library/Resolvers/LocalTrailerResolver.cs

@@ -2,13 +2,14 @@
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Library;
 using System;
 using System;
 using System.IO;
 using System.IO;
+using MediaBrowser.Controller.Resolvers;
 
 
 namespace MediaBrowser.Server.Implementations.Library.Resolvers
 namespace MediaBrowser.Server.Implementations.Library.Resolvers
 {
 {
     /// <summary>
     /// <summary>
     /// Class LocalTrailerResolver
     /// Class LocalTrailerResolver
     /// </summary>
     /// </summary>
-    public class LocalTrailerResolver : VideoResolver<Trailer>
+    public class LocalTrailerResolver : BaseVideoResolver<Trailer>
     {
     {
         /// <summary>
         /// <summary>
         /// Resolves the specified args.
         /// Resolves the specified args.

+ 2 - 1
MediaBrowser.Server.Implementations/Library/Resolvers/Movies/MovieResolver.cs

@@ -3,6 +3,7 @@ using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Entities.Movies;
 using MediaBrowser.Controller.Entities.Movies;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Providers.Movies;
 using MediaBrowser.Controller.Providers.Movies;
+using MediaBrowser.Controller.Resolvers;
 using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.Entities;
 using System;
 using System;
 using System.Collections.Generic;
 using System.Collections.Generic;
@@ -13,7 +14,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Movies
     /// <summary>
     /// <summary>
     /// Class MovieResolver
     /// Class MovieResolver
     /// </summary>
     /// </summary>
-    public class MovieResolver : VideoResolver<Movie>
+    public class MovieResolver : BaseVideoResolver<Movie>
     {
     {
         /// <summary>
         /// <summary>
         /// Gets the priority.
         /// Gets the priority.

+ 2 - 1
MediaBrowser.Server.Implementations/Library/Resolvers/TV/EpisodeResolver.cs

@@ -1,5 +1,6 @@
 using MediaBrowser.Controller.Entities.TV;
 using MediaBrowser.Controller.Entities.TV;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Resolvers;
 using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.Entities;
 using System;
 using System;
 
 
@@ -8,7 +9,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.TV
     /// <summary>
     /// <summary>
     /// Class EpisodeResolver
     /// Class EpisodeResolver
     /// </summary>
     /// </summary>
-    public class EpisodeResolver : VideoResolver<Episode>
+    public class EpisodeResolver : BaseVideoResolver<Episode>
     {
     {
         /// <summary>
         /// <summary>
         /// Resolves the specified args.
         /// Resolves the specified args.

+ 1 - 0
MediaBrowser.Server.Implementations/Library/Resolvers/TV/SeriesResolver.cs

@@ -1,6 +1,7 @@
 using MediaBrowser.Common.Extensions;
 using MediaBrowser.Common.Extensions;
 using MediaBrowser.Controller.Entities.TV;
 using MediaBrowser.Controller.Entities.TV;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Resolvers;
 using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.Entities;
 using System;
 using System;
 using System.IO;
 using System.IO;

+ 2 - 51
MediaBrowser.Server.Implementations/Library/Resolvers/VideoResolver.cs

@@ -1,15 +1,12 @@
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Entities;
-using MediaBrowser.Controller.Library;
-using MediaBrowser.Model.Entities;
-using System;
-using System.IO;
+using MediaBrowser.Controller.Resolvers;
 
 
 namespace MediaBrowser.Server.Implementations.Library.Resolvers
 namespace MediaBrowser.Server.Implementations.Library.Resolvers
 {
 {
     /// <summary>
     /// <summary>
     /// Resolves a Path into a Video
     /// Resolves a Path into a Video
     /// </summary>
     /// </summary>
-    public class VideoResolver : VideoResolver<Video>
+    public class VideoResolver : BaseVideoResolver<Video>
     {
     {
         /// <summary>
         /// <summary>
         /// Gets the priority.
         /// Gets the priority.
@@ -21,51 +18,5 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers
         }
         }
     }
     }
 
 
-    /// <summary>
-    /// Resolves a Path into a Video or Video subclass
-    /// </summary>
-    /// <typeparam name="T"></typeparam>
-    public abstract class VideoResolver<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;
-        }
-    }
 }
 }

+ 1 - 0
MediaBrowser.ServerApplication/ApplicationHost.cs

@@ -15,6 +15,7 @@ using MediaBrowser.Common.Updates;
 using MediaBrowser.Controller;
 using MediaBrowser.Controller;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Resolvers;
 using MediaBrowser.Controller.Updates;
 using MediaBrowser.Controller.Updates;
 using MediaBrowser.IsoMounter;
 using MediaBrowser.IsoMounter;
 using MediaBrowser.Model.IO;
 using MediaBrowser.Model.IO;

+ 18 - 11
MediaBrowser.ServerApplication/NewItemNotifier.cs

@@ -1,4 +1,5 @@
-using MediaBrowser.Controller.Entities;
+using System.Windows;
+using MediaBrowser.Controller.Entities;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Plugins;
 using MediaBrowser.Controller.Plugins;
 using MediaBrowser.Model.Logging;
 using MediaBrowser.Model.Logging;
@@ -110,23 +111,29 @@ namespace MediaBrowser.ServerApplication
             // Show the notification
             // Show the notification
             if (newItems.Count == 1)
             if (newItems.Count == 1)
             {
             {
-                var window = (MainWindow) App.Current.MainWindow;
-
-                window.Dispatcher.InvokeAsync(() => window.MbTaskbarIcon.ShowCustomBalloon(new ItemUpdateNotification(_logger)
+                Application.Current.Dispatcher.InvokeAsync(() =>
                 {
                 {
-                    DataContext = newItems[0]
+                    var window = (MainWindow)Application.Current.MainWindow;
+
+                    window.Dispatcher.InvokeAsync(() => window.MbTaskbarIcon.ShowCustomBalloon(new ItemUpdateNotification(_logger)
+                    {
+                        DataContext = newItems[0]
 
 
-                }, PopupAnimation.Slide, 6000));
+                    }, PopupAnimation.Slide, 6000));
+                });
             }
             }
             else if (newItems.Count > 1)
             else if (newItems.Count > 1)
             {
             {
-                var window = (MainWindow)App.Current.MainWindow;
-
-                window.Dispatcher.InvokeAsync(() => window.MbTaskbarIcon.ShowCustomBalloon(new MultiItemUpdateNotification(_logger)
+                Application.Current.Dispatcher.InvokeAsync(() =>
                 {
                 {
-                    DataContext = newItems
+                    var window = (MainWindow)Application.Current.MainWindow;
+
+                    window.Dispatcher.InvokeAsync(() => window.MbTaskbarIcon.ShowCustomBalloon(new MultiItemUpdateNotification(_logger)
+                    {
+                        DataContext = newItems
 
 
-                }, PopupAnimation.Slide, 6000));
+                    }, PopupAnimation.Slide, 6000));
+                });
             }
             }
         }
         }
 
 

+ 2 - 2
Nuget/MediaBrowser.Common.Internal.nuspec

@@ -2,7 +2,7 @@
 <package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
 <package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
     <metadata>
     <metadata>
         <id>MediaBrowser.Common.Internal</id>
         <id>MediaBrowser.Common.Internal</id>
-        <version>3.0.25</version>
+        <version>3.0.26</version>
         <title>MediaBrowser.Common.Internal</title>
         <title>MediaBrowser.Common.Internal</title>
         <authors>Luke</authors>
         <authors>Luke</authors>
         <owners>ebr,Luke,scottisafool</owners>
         <owners>ebr,Luke,scottisafool</owners>
@@ -12,7 +12,7 @@
         <description>Contains common components shared by Media Browser Theatre and Media Browser Server. Not intended for plugin developer consumption.</description>
         <description>Contains common components shared by Media Browser Theatre and Media Browser Server. Not intended for plugin developer consumption.</description>
         <copyright>Copyright © Media Browser 2013</copyright>
         <copyright>Copyright © Media Browser 2013</copyright>
         <dependencies>
         <dependencies>
-            <dependency id="MediaBrowser.Common" version="3.0.25" />
+            <dependency id="MediaBrowser.Common" version="3.0.26" />
             <dependency id="NLog" version="2.0.0.2000" />
             <dependency id="NLog" version="2.0.0.2000" />
             <dependency id="ServiceStack" version="3.9.37" />
             <dependency id="ServiceStack" version="3.9.37" />
             <dependency id="ServiceStack.Api.Swagger" version="3.9.35" />
             <dependency id="ServiceStack.Api.Swagger" version="3.9.35" />

+ 1 - 1
Nuget/MediaBrowser.Common.nuspec

@@ -2,7 +2,7 @@
 <package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
 <package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
     <metadata>
     <metadata>
         <id>MediaBrowser.Common</id>
         <id>MediaBrowser.Common</id>
-        <version>3.0.25</version>
+        <version>3.0.26</version>
         <title>MediaBrowser.Common</title>
         <title>MediaBrowser.Common</title>
         <authors>Media Browser Team</authors>
         <authors>Media Browser Team</authors>
         <owners>ebr,Luke,scottisafool</owners>
         <owners>ebr,Luke,scottisafool</owners>

+ 2 - 2
Nuget/MediaBrowser.Server.Core.nuspec

@@ -2,7 +2,7 @@
 <package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
 <package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
     <metadata>
     <metadata>
         <id>MediaBrowser.Server.Core</id>
         <id>MediaBrowser.Server.Core</id>
-        <version>3.0.25</version>
+        <version>3.0.26</version>
         <title>Media Browser.Server.Core</title>
         <title>Media Browser.Server.Core</title>
         <authors>Media Browser Team</authors>
         <authors>Media Browser Team</authors>
         <owners>ebr,Luke,scottisafool</owners>
         <owners>ebr,Luke,scottisafool</owners>
@@ -12,7 +12,7 @@
         <description>Contains core components required to build plugins for Media Browser Server.</description>
         <description>Contains core components required to build plugins for Media Browser Server.</description>
         <copyright>Copyright © Media Browser 2013</copyright>
         <copyright>Copyright © Media Browser 2013</copyright>
         <dependencies>
         <dependencies>
-            <dependency id="MediaBrowser.Common" version="3.0.25" />
+            <dependency id="MediaBrowser.Common" version="3.0.26" />
         </dependencies>
         </dependencies>
     </metadata>
     </metadata>
     <files>
     <files>