Browse Source

fixes #697 - Support xbmc offline discs

Luke Pulverenti 11 years ago
parent
commit
6efb78b8b2
27 changed files with 154 additions and 45 deletions
  1. 2 2
      MediaBrowser.Api/GamesService.cs
  2. 18 0
      MediaBrowser.Api/UserLibrary/ItemsService.cs
  3. 4 4
      MediaBrowser.Common.Implementations/MediaBrowser.Common.Implementations.csproj
  4. 1 1
      MediaBrowser.Common.Implementations/packages.config
  5. 1 13
      MediaBrowser.Controller/Entities/BaseItem.cs
  6. 21 1
      MediaBrowser.Controller/Entities/Folder.cs
  7. 4 4
      MediaBrowser.Controller/Entities/Game.cs
  8. 6 0
      MediaBrowser.Controller/Entities/IHasMetadata.cs
  9. 12 0
      MediaBrowser.Controller/Entities/ISupportsPlaceHolders.cs
  10. 3 1
      MediaBrowser.Controller/Entities/Video.cs
  11. 5 2
      MediaBrowser.Controller/Library/TVUtils.cs
  12. 1 0
      MediaBrowser.Controller/MediaBrowser.Controller.csproj
  13. 5 2
      MediaBrowser.Controller/Resolvers/BaseVideoResolver.cs
  14. 18 0
      MediaBrowser.Controller/Resolvers/EntityResolutionHelper.cs
  15. 6 0
      MediaBrowser.Model/Dto/BaseItemDto.cs
  16. 2 0
      MediaBrowser.Model/Providers/RemoteSearchResult.cs
  17. 6 7
      MediaBrowser.Providers/Games/GameMetadataService.cs
  18. 14 0
      MediaBrowser.Providers/Manager/MetadataService.cs
  19. 6 1
      MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs
  20. 1 1
      MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs
  21. 6 0
      MediaBrowser.Server.Implementations/Dto/DtoService.cs
  22. 1 1
      MediaBrowser.Server.Implementations/Library/LibraryManager.cs
  23. 1 0
      MediaBrowser.Server.Implementations/Library/Resolvers/Audio/MusicAlbumResolver.cs
  24. 5 0
      MediaBrowser.Server.Implementations/MediaEncoder/EncodingManager.cs
  25. 2 2
      Nuget/MediaBrowser.Common.Internal.nuspec
  26. 1 1
      Nuget/MediaBrowser.Common.nuspec
  27. 2 2
      Nuget/MediaBrowser.Server.Core.nuspec

+ 2 - 2
MediaBrowser.Api/GamesService.cs

@@ -155,11 +155,11 @@ namespace MediaBrowser.Api
 
             var games = items.OfType<Game>().ToList();
 
-            summary.ClientInstalledGameCount = games.Count(i => !i.IsInstalledOnClient);
+            summary.ClientInstalledGameCount = games.Count(i => !i.IsPlaceHolder);
 
             summary.GameCount = games.Count;
 
-            summary.GameFileExtensions = games.Where(i => !i.IsInstalledOnClient).Select(i => Path.GetExtension(i.Path))
+            summary.GameFileExtensions = games.Where(i => !i.IsPlaceHolder).Select(i => Path.GetExtension(i.Path))
                 .Distinct(StringComparer.OrdinalIgnoreCase)
                 .ToList();
 

+ 18 - 0
MediaBrowser.Api/UserLibrary/ItemsService.cs

@@ -220,6 +220,12 @@ namespace MediaBrowser.Api.UserLibrary
 
         [ApiMember(Name = "IsInBoxSet", Description = "Optional filter by items that are in boxsets, or not.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")]
         public bool? IsInBoxSet { get; set; }
+
+        [ApiMember(Name = "IsLocked", Description = "Optional filter by items that are locked.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
+        public bool? IsLocked { get; set; }
+
+        [ApiMember(Name = "HasSubtitles", Description = "Optional filter by items that are unidentified by internet metadata providers.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
+        public bool? IsUnidentified { get; set; }
     }
 
     /// <summary>
@@ -1019,6 +1025,18 @@ namespace MediaBrowser.Api.UserLibrary
                 items = items.Where(i => i.IsPlayed(user) == val);
             }
 
+            if (request.IsUnidentified.HasValue)
+            {
+                var val = request.IsUnidentified.Value;
+                items = items.Where(i => i.IsUnidentified == val);
+            }
+
+            if (request.IsLocked.HasValue)
+            {
+                var val = request.IsLocked.Value;
+                items = items.Where(i => i.IsLocked == val);
+            }
+
             if (request.ParentIndexNumber.HasValue)
             {
                 var filterValue = request.ParentIndexNumber.Value;

+ 4 - 4
MediaBrowser.Common.Implementations/MediaBrowser.Common.Implementations.csproj

@@ -48,13 +48,13 @@
     <RunPostBuildEvent>Always</RunPostBuildEvent>
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="SimpleInjector, Version=2.4.1.0, Culture=neutral, PublicKeyToken=984cb50dea722e99, processorArchitecture=MSIL">
+    <Reference Include="SimpleInjector, Version=2.5.0.0, Culture=neutral, PublicKeyToken=984cb50dea722e99, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\SimpleInjector.2.4.1\lib\net45\SimpleInjector.dll</HintPath>
+      <HintPath>..\packages\SimpleInjector.2.5.0\lib\net45\SimpleInjector.dll</HintPath>
     </Reference>
-    <Reference Include="SimpleInjector.Diagnostics, Version=2.4.1.0, Culture=neutral, PublicKeyToken=984cb50dea722e99, processorArchitecture=MSIL">
+    <Reference Include="SimpleInjector.Diagnostics, Version=2.5.0.0, Culture=neutral, PublicKeyToken=984cb50dea722e99, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\packages\SimpleInjector.2.4.1\lib\net45\SimpleInjector.Diagnostics.dll</HintPath>
+      <HintPath>..\packages\SimpleInjector.2.5.0\lib\net45\SimpleInjector.Diagnostics.dll</HintPath>
     </Reference>
     <Reference Include="System" />
     <Reference Include="System.Configuration" />

+ 1 - 1
MediaBrowser.Common.Implementations/packages.config

@@ -2,5 +2,5 @@
 <packages>
   <package id="NLog" version="2.1.0" targetFramework="net45" />
   <package id="sharpcompress" version="0.10.2" targetFramework="net45" />
-  <package id="SimpleInjector" version="2.4.1" targetFramework="net45" />
+  <package id="SimpleInjector" version="2.5.0" targetFramework="net45" />
 </packages>

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

@@ -229,19 +229,7 @@ namespace MediaBrowser.Controller.Entities
             }
         }
 
-        [IgnoreDataMember]
-        public bool IsUnidentified
-        {
-            get
-            {
-                if (ProviderIds.Any())
-                {
-                    return false;
-                }
-
-                return false;
-            }
-        }
+        public bool IsUnidentified { get; set; }
 
         /// <summary>
         /// Gets or sets the locked fields.

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

@@ -352,6 +352,26 @@ namespace MediaBrowser.Controller.Entities
             return dictionary;
         }
 
+        private bool IsValidFromResolver(BaseItem current, BaseItem newItem)
+        {
+            var currentAsPlaceHolder = current as ISupportsPlaceHolders;
+
+            if (currentAsPlaceHolder != null)
+            {
+                var newHasPlaceHolder = newItem as ISupportsPlaceHolders;
+
+                if (newHasPlaceHolder != null)
+                {
+                    if (currentAsPlaceHolder.IsPlaceHolder != newHasPlaceHolder.IsPlaceHolder)
+                    {
+                        return false;
+                    }
+                }
+            }
+
+            return current.IsInMixedFolder == newItem.IsInMixedFolder;
+        }
+
         /// <summary>
         /// Validates the children internal.
         /// </summary>
@@ -401,7 +421,7 @@ namespace MediaBrowser.Controller.Entities
                 {
                     BaseItem currentChild;
 
-                    if (currentChildren.TryGetValue(child.Id, out currentChild) && child.IsInMixedFolder == currentChild.IsInMixedFolder)
+                    if (currentChildren.TryGetValue(child.Id, out currentChild) && IsValidFromResolver(currentChild, child))
                     {
                         var currentChildLocationType = currentChild.LocationType;
                         if (currentChildLocationType != LocationType.Remote &&

+ 4 - 4
MediaBrowser.Controller/Entities/Game.cs

@@ -7,7 +7,7 @@ using System.Linq;
 
 namespace MediaBrowser.Controller.Entities
 {
-    public class Game : BaseItem, IHasSoundtracks, IHasTrailers, IHasThemeMedia, IHasTags, IHasScreenshots, IHasPreferredMetadataLanguage, IHasLookupInfo<GameInfo>
+    public class Game : BaseItem, IHasSoundtracks, IHasTrailers, IHasThemeMedia, IHasTags, IHasScreenshots, ISupportsPlaceHolders, IHasPreferredMetadataLanguage, IHasLookupInfo<GameInfo>
     {
         public List<Guid> SoundtrackIds { get; set; }
 
@@ -63,10 +63,10 @@ namespace MediaBrowser.Controller.Entities
         public int? PlayersSupported { get; set; }
 
         /// <summary>
-        /// Gets or sets a value indicating whether this instance is installed on client.
+        /// Gets a value indicating whether this instance is place holder.
         /// </summary>
-        /// <value><c>true</c> if this instance is installed on client; otherwise, <c>false</c>.</value>
-        public bool IsInstalledOnClient { get; set; }
+        /// <value><c>true</c> if this instance is place holder; otherwise, <c>false</c>.</value>
+        public bool IsPlaceHolder { get; set; }
 
         /// <summary>
         /// Gets or sets the game system.

+ 6 - 0
MediaBrowser.Controller/Entities/IHasMetadata.cs

@@ -49,5 +49,11 @@ namespace MediaBrowser.Controller.Entities
         /// </summary>
         /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
         bool BeforeMetadataRefresh();
+
+        /// <summary>
+        /// Gets or sets a value indicating whether this instance is unidentified.
+        /// </summary>
+        /// <value><c>true</c> if this instance is unidentified; otherwise, <c>false</c>.</value>
+        bool IsUnidentified { get; set; }
     }
 }

+ 12 - 0
MediaBrowser.Controller/Entities/ISupportsPlaceHolders.cs

@@ -0,0 +1,12 @@
+
+namespace MediaBrowser.Controller.Entities
+{
+    public interface ISupportsPlaceHolders
+    {
+        /// <summary>
+        /// Gets a value indicating whether this instance is place holder.
+        /// </summary>
+        /// <value><c>true</c> if this instance is place holder; otherwise, <c>false</c>.</value>
+        bool IsPlaceHolder { get; }
+    }
+}

+ 3 - 1
MediaBrowser.Controller/Entities/Video.cs

@@ -16,7 +16,7 @@ namespace MediaBrowser.Controller.Entities
     /// <summary>
     /// Class Video
     /// </summary>
-    public class Video : BaseItem, IHasMediaStreams, IHasAspectRatio, IHasTags
+    public class Video : BaseItem, IHasMediaStreams, IHasAspectRatio, IHasTags, ISupportsPlaceHolders
     {
         public bool IsMultiPart { get; set; }
 
@@ -42,6 +42,8 @@ namespace MediaBrowser.Controller.Entities
         /// <value><c>true</c> if this instance has subtitles; otherwise, <c>false</c>.</value>
         public bool HasSubtitles { get; set; }
 
+        public bool IsPlaceHolder { get; set; }
+        
         /// <summary>
         /// Gets or sets the tags.
         /// </summary>

+ 5 - 2
MediaBrowser.Controller/Library/TVUtils.cs

@@ -234,9 +234,12 @@ namespace MediaBrowser.Controller.Library
                 {
                     var fullName = child.FullName;
 
-                    if (EntityResolutionHelper.IsVideoFile(fullName) && GetEpisodeNumberFromFile(fullName, false).HasValue)
+                    if (EntityResolutionHelper.IsVideoFile(fullName) || EntityResolutionHelper.IsVideoPlaceHolder(fullName))
                     {
-                        return true;
+                        if (GetEpisodeNumberFromFile(fullName, false).HasValue)
+                        {
+                            return true;
+                        }
                     }
                 }
             }

+ 1 - 0
MediaBrowser.Controller/MediaBrowser.Controller.csproj

@@ -105,6 +105,7 @@
     <Compile Include="Entities\ILibraryItem.cs" />
     <Compile Include="Entities\ImageSourceInfo.cs" />
     <Compile Include="Entities\IMetadataContainer.cs" />
+    <Compile Include="Entities\ISupportsPlaceHolders.cs" />
     <Compile Include="Entities\ItemImageInfo.cs" />
     <Compile Include="Entities\LinkedChild.cs" />
     <Compile Include="Entities\MusicVideo.cs" />

+ 5 - 2
MediaBrowser.Controller/Resolvers/BaseVideoResolver.cs

@@ -35,7 +35,9 @@ namespace MediaBrowser.Controller.Resolvers
             // If the path is a file check for a matching extensions
             if (!args.IsDirectory)
             {
-                if (EntityResolutionHelper.IsVideoFile(args.Path))
+                var isPlaceHolder = EntityResolutionHelper.IsVideoPlaceHolder(args.Path);
+
+                if (EntityResolutionHelper.IsVideoFile(args.Path) || isPlaceHolder)
                 {
                     var extension = Path.GetExtension(args.Path);
 
@@ -46,7 +48,8 @@ namespace MediaBrowser.Controller.Resolvers
                     {
                         VideoType = type,
                         Path = args.Path,
-                        IsInMixedFolder = true
+                        IsInMixedFolder = true,
+                        IsPlaceHolder = isPlaceHolder
                     };
                 }
             }

+ 18 - 0
MediaBrowser.Controller/Resolvers/EntityResolutionHelper.cs

@@ -139,6 +139,24 @@ namespace MediaBrowser.Controller.Resolvers
             return VideoFileExtensionsDictionary.ContainsKey(extension);
         }
 
+        /// <summary>
+        /// Determines whether [is place holder] [the specified path].
+        /// </summary>
+        /// <param name="path">The path.</param>
+        /// <returns><c>true</c> if [is place holder] [the specified path]; otherwise, <c>false</c>.</returns>
+        /// <exception cref="System.ArgumentNullException">path</exception>
+        public static bool IsVideoPlaceHolder(string path)
+        {
+            if (string.IsNullOrEmpty(path))
+            {
+                throw new ArgumentNullException("path");
+            }
+
+            var extension = Path.GetExtension(path);
+
+            return string.Equals(extension, ".disc", StringComparison.OrdinalIgnoreCase);
+        }
+
         /// <summary>
         /// Ensures DateCreated and DateModified have values
         /// </summary>

+ 6 - 0
MediaBrowser.Model/Dto/BaseItemDto.cs

@@ -208,6 +208,12 @@ namespace MediaBrowser.Model.Dto
         /// <value>The players.</value>
         public int? Players { get; set; }
 
+        /// <summary>
+        /// Gets or sets a value indicating whether this instance is place holder.
+        /// </summary>
+        /// <value><c>null</c> if [is place holder] contains no value, <c>true</c> if [is place holder]; otherwise, <c>false</c>.</value>
+        public bool? IsPlaceHolder { get; set; }
+        
         /// <summary>
         /// Gets or sets the index number.
         /// </summary>

+ 2 - 0
MediaBrowser.Model/Providers/RemoteSearchResult.cs

@@ -31,6 +31,8 @@ namespace MediaBrowser.Model.Providers
 
         public string SearchProviderName { get; set; }
 
+        public string GameSystem { get; set; }
+        
         public RemoteSearchResult()
         {
             ProviderIds = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);

+ 6 - 7
MediaBrowser.Providers/Games/GameMetadataService.cs

@@ -1,25 +1,19 @@
 using MediaBrowser.Common.IO;
 using MediaBrowser.Controller.Configuration;
 using MediaBrowser.Controller.Entities;
-using MediaBrowser.Controller.Library;
 using MediaBrowser.Controller.Providers;
 using MediaBrowser.Model.Entities;
 using MediaBrowser.Model.Logging;
 using MediaBrowser.Providers.Manager;
 using System.Collections.Generic;
-using System.Threading;
-using System.Threading.Tasks;
 
 namespace MediaBrowser.Providers.Games
 {
     public class GameMetadataService : MetadataService<Game, GameInfo>
     {
-        private readonly ILibraryManager _libraryManager;
-
-        public GameMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem, ILibraryManager libraryManager)
+        public GameMetadataService(IServerConfigurationManager serverConfigurationManager, ILogger logger, IProviderManager providerManager, IProviderRepository providerRepo, IFileSystem fileSystem)
             : base(serverConfigurationManager, logger, providerManager, providerRepo, fileSystem)
         {
-            _libraryManager = libraryManager;
         }
 
         /// <summary>
@@ -38,6 +32,11 @@ namespace MediaBrowser.Providers.Games
             {
                 target.GameSystem = source.GameSystem;
             }
+
+            if (replaceData || !target.PlayersSupported.HasValue)
+            {
+                target.PlayersSupported = source.PlayersSupported;
+            }
         }
     }
 }

+ 14 - 0
MediaBrowser.Providers/Manager/MetadataService.cs

@@ -386,6 +386,9 @@ namespace MediaBrowser.Providers.Manager
         {
             TIdType id = null;
 
+            var unidentifiedCount = 0;
+            var identifiedCount = 0;
+
             foreach (var provider in providers)
             {
                 var providerName = provider.GetType().Name;
@@ -410,9 +413,11 @@ namespace MediaBrowser.Providers.Manager
 
                         refreshResult.UpdateType = refreshResult.UpdateType | ItemUpdateType.MetadataDownload;
 
+                        identifiedCount++;
                     }
                     else
                     {
+                        unidentifiedCount++; 
                         Logger.Debug("{0} returned no metadata for {1}", providerName, item.Path ?? item.Name);
                     }
                 }
@@ -422,11 +427,20 @@ namespace MediaBrowser.Providers.Manager
                 }
                 catch (Exception ex)
                 {
+                    unidentifiedCount++; 
                     refreshResult.Status = ProviderRefreshStatus.CompletedWithErrors;
                     refreshResult.ErrorMessage = ex.Message;
                     Logger.ErrorException("Error in {0}", ex, provider.Name);
                 }
             }
+
+            var isUnidentified = unidentifiedCount > 0 && identifiedCount == 0;
+
+            if (item.IsUnidentified != isUnidentified)
+            {
+                item.IsUnidentified = isUnidentified;
+                refreshResult.UpdateType = refreshResult.UpdateType | ItemUpdateType.MetadataImport;
+            }
         }
 
         private void MergeNewData(TItemType source, TIdType lookupInfo)

+ 6 - 1
MediaBrowser.Providers/MediaInfo/FFProbeProvider.cs

@@ -126,6 +126,11 @@ namespace MediaBrowser.Providers.MediaInfo
                 return _cachedTask;
             }
 
+            if (item.IsPlaceHolder)
+            {
+                return _cachedTask;
+            }
+
             var prober = new FFProbeVideoInfo(_logger, _isoManager, _mediaEncoder, _itemRepo, _blurayExaminer, _localization, _appPaths, _json, _encodingManager);
 
             return prober.ProbeVideo(item, directoryService, cancellationToken);
@@ -155,7 +160,7 @@ namespace MediaBrowser.Providers.MediaInfo
             {
                 var video = item as Video;
 
-                if (video != null)
+                if (video != null && !video.IsPlaceHolder)
                 {
                     var prober = new FFProbeVideoInfo(_logger, _isoManager, _mediaEncoder, _itemRepo, _blurayExaminer, _localization, _appPaths, _json, _encodingManager);
 

+ 1 - 1
MediaBrowser.Providers/MediaInfo/VideoImageProvider.cs

@@ -56,7 +56,7 @@ namespace MediaBrowser.Providers.MediaInfo
             var video = (Video)item;
 
             // No support for this
-            if (video.VideoType == VideoType.HdDvd)
+            if (video.VideoType == VideoType.HdDvd || video.IsPlaceHolder)
             {
                 return Task.FromResult(new DynamicImageResponse { HasImage = false });
             }

+ 6 - 0
MediaBrowser.Server.Implementations/Dto/DtoService.cs

@@ -970,6 +970,12 @@ namespace MediaBrowser.Server.Implementations.Dto
                 }
             }
 
+            var supportsPlaceHolders = item as ISupportsPlaceHolders;
+            if (supportsPlaceHolders != null)
+            {
+                dto.IsPlaceHolder = supportsPlaceHolders.IsPlaceHolder;
+            }
+            
             // Add audio info
             var audio = item as Audio;
             if (audio != null)

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

@@ -451,7 +451,7 @@ namespace MediaBrowser.Server.Implementations.Library
                 }
             }
 
-            if (options.DeleteFileLocation && (locationType == LocationType.FileSystem || locationType == LocationType.Offline))
+            if (options.DeleteFileLocation && locationType != LocationType.Remote && locationType != LocationType.Virtual)
             {
                 foreach (var path in item.GetDeletePaths().ToList())
                 {

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

@@ -132,6 +132,7 @@ namespace MediaBrowser.Server.Implementations.Library.Resolvers.Audio
                     return true;
                 }
                 if (EntityResolutionHelper.IsVideoFile(fullName)) return false;
+                if (EntityResolutionHelper.IsVideoPlaceHolder(fullName)) return false;
             }
 
             //  or a single audio file and no video files

+ 5 - 0
MediaBrowser.Server.Implementations/MediaEncoder/EncodingManager.cs

@@ -84,6 +84,11 @@ namespace MediaBrowser.Server.Implementations.MediaEncoder
         /// <returns><c>true</c> if [is eligible for chapter image extraction] [the specified video]; otherwise, <c>false</c>.</returns>
         private bool IsEligibleForChapterImageExtraction(Video video)
         {
+            if (video.IsPlaceHolder)
+            {
+                return false;
+            }
+
             if (video is Movie)
             {
                 if (!_config.Configuration.EnableMovieChapterImageExtraction)

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

@@ -2,7 +2,7 @@
 <package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
     <metadata>
         <id>MediaBrowser.Common.Internal</id>
-        <version>3.0.334</version>
+        <version>3.0.335</version>
         <title>MediaBrowser.Common.Internal</title>
         <authors>Luke</authors>
         <owners>ebr,Luke,scottisafool</owners>
@@ -12,7 +12,7 @@
         <description>Contains common components shared by Media Browser Theater and Media Browser Server. Not intended for plugin developer consumption.</description>
         <copyright>Copyright © Media Browser 2013</copyright>
         <dependencies>
-            <dependency id="MediaBrowser.Common" version="3.0.334" />
+            <dependency id="MediaBrowser.Common" version="3.0.335" />
             <dependency id="NLog" version="2.1.0" />
             <dependency id="SimpleInjector" version="2.4.1" />
             <dependency id="sharpcompress" version="0.10.2" />

+ 1 - 1
Nuget/MediaBrowser.Common.nuspec

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