From 6146b57e7c908d301f5aee3a8cdd996b395db363 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 22 Sep 2013 12:49:55 -0400 Subject: update to servicestack 3.9.62 --- MediaBrowser.Controller/Entities/GameSystem.cs | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'MediaBrowser.Controller') diff --git a/MediaBrowser.Controller/Entities/GameSystem.cs b/MediaBrowser.Controller/Entities/GameSystem.cs index 39e95b91de..644405b4d4 100644 --- a/MediaBrowser.Controller/Entities/GameSystem.cs +++ b/MediaBrowser.Controller/Entities/GameSystem.cs @@ -19,5 +19,11 @@ namespace MediaBrowser.Controller.Entities return Id; } } + + /// + /// Gets or sets the game system. + /// + /// The game system. + public string GameSystemName { get; set; } } } -- cgit v1.2.3 From 1c7c71075af5f87a00047a56e3cef80fc9791828 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 22 Sep 2013 14:21:55 -0400 Subject: pass current server version into installation manager to get update list --- MediaBrowser.Api/PackageService.cs | 4 ++-- .../Updates/InstallationManager.cs | 25 +++++++++++----------- .../Updates/IInstallationManager.cs | 9 +++++--- MediaBrowser.Controller/Entities/Folder.cs | 2 +- .../ScheduledTasks/PluginUpdateTask.cs | 15 ++++++------- MediaBrowser.ServerApplication/ApplicationHost.cs | 3 +-- 6 files changed, 29 insertions(+), 29 deletions(-) (limited to 'MediaBrowser.Controller') diff --git a/MediaBrowser.Api/PackageService.cs b/MediaBrowser.Api/PackageService.cs index 563625a544..0c6ee20f79 100644 --- a/MediaBrowser.Api/PackageService.cs +++ b/MediaBrowser.Api/PackageService.cs @@ -132,7 +132,7 @@ namespace MediaBrowser.Api if (request.PackageType == PackageType.UserInstalled || request.PackageType == PackageType.All) { - result.AddRange(_installationManager.GetAvailablePluginUpdates(false, CancellationToken.None).Result.ToList()); + result.AddRange(_installationManager.GetAvailablePluginUpdates(_appHost.ApplicationVersion, false, CancellationToken.None).Result.ToList()); } else if (request.PackageType == PackageType.System || request.PackageType == PackageType.All) @@ -194,7 +194,7 @@ namespace MediaBrowser.Api public void Post(InstallPackage request) { var package = string.IsNullOrEmpty(request.Version) ? - _installationManager.GetLatestCompatibleVersion(request.Name, request.UpdateClass).Result : + _installationManager.GetLatestCompatibleVersion(request.Name, _appHost.ApplicationVersion, request.UpdateClass).Result : _installationManager.GetPackage(request.Name, request.UpdateClass, Version.Parse(request.Version)).Result; if (package == null) diff --git a/MediaBrowser.Common.Implementations/Updates/InstallationManager.cs b/MediaBrowser.Common.Implementations/Updates/InstallationManager.cs index 732a108934..e1757afd5a 100644 --- a/MediaBrowser.Common.Implementations/Updates/InstallationManager.cs +++ b/MediaBrowser.Common.Implementations/Updates/InstallationManager.cs @@ -225,9 +225,9 @@ namespace MediaBrowser.Common.Implementations.Updates /// Determines whether [is package version up to date] [the specified package version info]. /// /// The package version info. - /// The application version. + /// The current server version. /// true if [is package version up to date] [the specified package version info]; otherwise, false. - private bool IsPackageVersionUpToDate(PackageVersionInfo packageVersionInfo, Version applicationVersion) + private bool IsPackageVersionUpToDate(PackageVersionInfo packageVersionInfo, Version currentServerVersion) { if (string.IsNullOrEmpty(packageVersionInfo.requiredVersionStr)) { @@ -236,7 +236,7 @@ namespace MediaBrowser.Common.Implementations.Updates Version requiredVersion; - return Version.TryParse(packageVersionInfo.requiredVersionStr, out requiredVersion) && applicationVersion >= requiredVersion; + return Version.TryParse(packageVersionInfo.requiredVersionStr, out requiredVersion) && currentServerVersion >= requiredVersion; } /// @@ -264,13 +264,14 @@ namespace MediaBrowser.Common.Implementations.Updates /// Gets the latest compatible version. /// /// The name. + /// The current server version. /// The classification. /// Task{PackageVersionInfo}. - public async Task GetLatestCompatibleVersion(string name, PackageVersionClass classification = PackageVersionClass.Release) + public async Task GetLatestCompatibleVersion(string name, Version currentServerVersion, PackageVersionClass classification = PackageVersionClass.Release) { var packages = await GetAvailablePackages(CancellationToken.None).ConfigureAwait(false); - return GetLatestCompatibleVersion(packages, name, classification); + return GetLatestCompatibleVersion(packages, name, currentServerVersion, classification); } /// @@ -278,9 +279,10 @@ namespace MediaBrowser.Common.Implementations.Updates /// /// The available packages. /// The name. + /// The current server version. /// The classification. /// PackageVersionInfo. - public PackageVersionInfo GetLatestCompatibleVersion(IEnumerable availablePackages, string name, PackageVersionClass classification = PackageVersionClass.Release) + public PackageVersionInfo GetLatestCompatibleVersion(IEnumerable availablePackages, string name, Version currentServerVersion, PackageVersionClass classification = PackageVersionClass.Release) { var package = availablePackages.FirstOrDefault(p => p.name.Equals(name, StringComparison.OrdinalIgnoreCase)); @@ -291,23 +293,20 @@ namespace MediaBrowser.Common.Implementations.Updates return package.versions .OrderByDescending(v => v.version) - .FirstOrDefault(v => v.classification <= classification && IsPackageVersionUpToDate(v, _applicationHost.ApplicationVersion)); + .FirstOrDefault(v => v.classification <= classification && IsPackageVersionUpToDate(v, currentServerVersion)); } /// /// Gets the available plugin updates. /// + /// The current server version. /// if set to true [with auto update enabled]. /// The cancellation token. /// Task{IEnumerable{PackageVersionInfo}}. - public async Task> GetAvailablePluginUpdates(bool withAutoUpdateEnabled, CancellationToken cancellationToken) + public async Task> GetAvailablePluginUpdates(Version currentServerVersion, bool withAutoUpdateEnabled, CancellationToken cancellationToken) { var catalog = await GetAvailablePackagesWithoutRegistrationInfo(cancellationToken).ConfigureAwait(false); - return FilterCatalog(catalog, withAutoUpdateEnabled); - } - protected IEnumerable FilterCatalog(IEnumerable catalog, bool withAutoUpdateEnabled) - { var plugins = _applicationHost.Plugins.ToList(); if (withAutoUpdateEnabled) @@ -320,7 +319,7 @@ namespace MediaBrowser.Common.Implementations.Updates // Figure out what needs to be installed var packages = plugins.Select(p => { - var latestPluginInfo = GetLatestCompatibleVersion(catalog, p.Name, p.Configuration.UpdateClass); + var latestPluginInfo = GetLatestCompatibleVersion(catalog, p.Name, currentServerVersion, p.Configuration.UpdateClass); return latestPluginInfo != null && latestPluginInfo.version != null && latestPluginInfo.version > p.Version ? latestPluginInfo : null; diff --git a/MediaBrowser.Common/Updates/IInstallationManager.cs b/MediaBrowser.Common/Updates/IInstallationManager.cs index 95eca6e29f..143a90b856 100644 --- a/MediaBrowser.Common/Updates/IInstallationManager.cs +++ b/MediaBrowser.Common/Updates/IInstallationManager.cs @@ -76,26 +76,29 @@ namespace MediaBrowser.Common.Updates /// Gets the latest compatible version. /// /// The name. + /// The current server version. /// The classification. /// Task{PackageVersionInfo}. - Task GetLatestCompatibleVersion(string name, PackageVersionClass classification = PackageVersionClass.Release); + Task GetLatestCompatibleVersion(string name, Version currentServerVersion, PackageVersionClass classification = PackageVersionClass.Release); /// /// Gets the latest compatible version. /// /// The available packages. /// The name. + /// The current server version. /// The classification. /// PackageVersionInfo. - PackageVersionInfo GetLatestCompatibleVersion(IEnumerable availablePackages, string name, PackageVersionClass classification = PackageVersionClass.Release); + PackageVersionInfo GetLatestCompatibleVersion(IEnumerable availablePackages, string name, Version currentServerVersion, PackageVersionClass classification = PackageVersionClass.Release); /// /// Gets the available plugin updates. /// + /// The current server version. /// if set to true [with auto update enabled]. /// The cancellation token. /// Task{IEnumerable{PackageVersionInfo}}. - Task> GetAvailablePluginUpdates(bool withAutoUpdateEnabled, CancellationToken cancellationToken); + Task> GetAvailablePluginUpdates(Version currentServerVersion, bool withAutoUpdateEnabled, CancellationToken cancellationToken); /// /// Installs the package. diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs index a724067d5b..e68d4be8e6 100644 --- a/MediaBrowser.Controller/Entities/Folder.cs +++ b/MediaBrowser.Controller/Entities/Folder.cs @@ -1004,7 +1004,7 @@ namespace MediaBrowser.Controller.Entities throw new ArgumentNullException(); } - var list = new List(10000); + var list = new List(_children.Count); AddRecursiveChildrenInternal(user, includeLinkedChildren, list); diff --git a/MediaBrowser.Server.Implementations/ScheduledTasks/PluginUpdateTask.cs b/MediaBrowser.Server.Implementations/ScheduledTasks/PluginUpdateTask.cs index 2936520075..e4f7134d7e 100644 --- a/MediaBrowser.Server.Implementations/ScheduledTasks/PluginUpdateTask.cs +++ b/MediaBrowser.Server.Implementations/ScheduledTasks/PluginUpdateTask.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Common.ScheduledTasks; +using MediaBrowser.Common; +using MediaBrowser.Common.ScheduledTasks; using MediaBrowser.Common.Updates; using MediaBrowser.Model.Logging; using MediaBrowser.Model.Net; @@ -23,15 +24,13 @@ namespace MediaBrowser.Server.Implementations.ScheduledTasks private readonly IInstallationManager _installationManager; - /// - /// Initializes a new instance of the class. - /// - /// The logger. - /// The installation manager. - public PluginUpdateTask(ILogger logger, IInstallationManager installationManager) + private readonly IApplicationHost _appHost; + + public PluginUpdateTask(ILogger logger, IInstallationManager installationManager, IApplicationHost appHost) { _logger = logger; _installationManager = installationManager; + _appHost = appHost; } /// @@ -60,7 +59,7 @@ namespace MediaBrowser.Server.Implementations.ScheduledTasks { progress.Report(0); - var packagesToInstall = (await _installationManager.GetAvailablePluginUpdates(true, cancellationToken).ConfigureAwait(false)).ToList(); + var packagesToInstall = (await _installationManager.GetAvailablePluginUpdates(_appHost.ApplicationVersion, true, cancellationToken).ConfigureAwait(false)).ToList(); progress.Report(10); diff --git a/MediaBrowser.ServerApplication/ApplicationHost.cs b/MediaBrowser.ServerApplication/ApplicationHost.cs index 4715258167..2d19260dc2 100644 --- a/MediaBrowser.ServerApplication/ApplicationHost.cs +++ b/MediaBrowser.ServerApplication/ApplicationHost.cs @@ -60,7 +60,6 @@ using System.Net.Http; using System.Reflection; using System.Threading; using System.Threading.Tasks; -using System.Windows; namespace MediaBrowser.ServerApplication { @@ -708,7 +707,7 @@ namespace MediaBrowser.ServerApplication { var availablePackages = await InstallationManager.GetAvailablePackagesWithoutRegistrationInfo(cancellationToken).ConfigureAwait(false); - var version = InstallationManager.GetLatestCompatibleVersion(availablePackages, Constants.MbServerPkgName, ConfigurationManager.CommonConfiguration.SystemUpdateLevel); + var version = InstallationManager.GetLatestCompatibleVersion(availablePackages, Constants.MbServerPkgName, ApplicationVersion, ConfigurationManager.CommonConfiguration.SystemUpdateLevel); return version != null ? new CheckForUpdateResult { AvailableVersion = version.version, IsUpdateAvailable = version.version > ApplicationVersion, Package = version } : new CheckForUpdateResult { AvailableVersion = ApplicationVersion, IsUpdateAvailable = false }; -- cgit v1.2.3 From 02b34c6393b7cbff9085042f5b1f8e08c38c398e Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 22 Sep 2013 14:29:07 -0400 Subject: fix children null reference --- MediaBrowser.Controller/Entities/Folder.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'MediaBrowser.Controller') diff --git a/MediaBrowser.Controller/Entities/Folder.cs b/MediaBrowser.Controller/Entities/Folder.cs index e68d4be8e6..0d91a2e868 100644 --- a/MediaBrowser.Controller/Entities/Folder.cs +++ b/MediaBrowser.Controller/Entities/Folder.cs @@ -1004,7 +1004,8 @@ namespace MediaBrowser.Controller.Entities throw new ArgumentNullException(); } - var list = new List(_children.Count); + var initialCount = _children == null ? 100 : _children.Count; + var list = new List(initialCount); AddRecursiveChildrenInternal(user, includeLinkedChildren, list); -- cgit v1.2.3 From 831c412ecf8ad5e259f1293ed4655b3a1b2997db Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Sun, 22 Sep 2013 18:42:21 -0400 Subject: Added IsInstalledOnClient to Game --- MediaBrowser.Api/GamesService.cs | 4 ++- MediaBrowser.Controller/Entities/Game.cs | 6 ++++ .../Providers/BaseItemXmlParser.cs | 36 ++++++++++++++++++++++ MediaBrowser.Model/Dto/GameSystemSummary.cs | 6 ++++ 4 files changed, 51 insertions(+), 1 deletion(-) (limited to 'MediaBrowser.Controller') diff --git a/MediaBrowser.Api/GamesService.cs b/MediaBrowser.Api/GamesService.cs index a34f68f35a..14f5ba3da9 100644 --- a/MediaBrowser.Api/GamesService.cs +++ b/MediaBrowser.Api/GamesService.cs @@ -118,9 +118,11 @@ namespace MediaBrowser.Api var games = items.OfType().ToList(); + summary.ClientInstalledGameCount = games.Count(i => !i.IsInstalledOnClient); + summary.GameCount = games.Count; - summary.GameFileExtensions = games.Select(i => Path.GetExtension(i.Path)) + summary.GameFileExtensions = games.Where(i => !i.IsInstalledOnClient).Select(i => Path.GetExtension(i.Path)) .Distinct(StringComparer.OrdinalIgnoreCase) .ToList(); diff --git a/MediaBrowser.Controller/Entities/Game.cs b/MediaBrowser.Controller/Entities/Game.cs index ef115c691b..6c15e73038 100644 --- a/MediaBrowser.Controller/Entities/Game.cs +++ b/MediaBrowser.Controller/Entities/Game.cs @@ -24,6 +24,12 @@ namespace MediaBrowser.Controller.Entities /// The players supported. public int? PlayersSupported { get; set; } + /// + /// Gets or sets a value indicating whether this instance is installed on client. + /// + /// true if this instance is installed on client; otherwise, false. + public bool IsInstalledOnClient { get; set; } + /// /// Gets or sets the game system. /// diff --git a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs index a7c38408fc..d7336e6a1d 100644 --- a/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs +++ b/MediaBrowser.Controller/Providers/BaseItemXmlParser.cs @@ -139,6 +139,7 @@ namespace MediaBrowser.Controller.Providers break; } + case "CriticRating": { var text = reader.ReadElementContentAsString(); @@ -150,6 +151,7 @@ namespace MediaBrowser.Controller.Providers break; } + case "Budget": { var text = reader.ReadElementContentAsString(); @@ -161,6 +163,7 @@ namespace MediaBrowser.Controller.Providers break; } + case "Revenue": { var text = reader.ReadElementContentAsString(); @@ -172,6 +175,7 @@ namespace MediaBrowser.Controller.Providers break; } + case "SortTitle": { var val = reader.ReadElementContentAsString(); @@ -466,6 +470,7 @@ namespace MediaBrowser.Controller.Providers break; } + case "ReleaseYear": case "ProductionYear": { var val = reader.ReadElementContentAsString(); @@ -555,6 +560,37 @@ namespace MediaBrowser.Controller.Providers } break; + case "Players": + { + var val = reader.ReadElementContentAsString(); + if (!string.IsNullOrWhiteSpace(val)) + { + int num; + // All external meta is saving this as '.' for decimal I believe...but just to be sure + if (int.TryParse(val, NumberStyles.Integer, _usCulture, out num)) + { + var game = item as Game; + if (game != null) + { + game.PlayersSupported = num; + } + } + } + break; + } + case "GameSystem": + { + var val = reader.ReadElementContentAsString(); + if (!string.IsNullOrWhiteSpace(val)) + { + var game = item as Game; + if (game != null) + { + game.GameSystem = val; + } + } + break; + } case "MusicbrainzId": { var mbz = reader.ReadElementContentAsString(); diff --git a/MediaBrowser.Model/Dto/GameSystemSummary.cs b/MediaBrowser.Model/Dto/GameSystemSummary.cs index a9931417ae..1da3bb0acd 100644 --- a/MediaBrowser.Model/Dto/GameSystemSummary.cs +++ b/MediaBrowser.Model/Dto/GameSystemSummary.cs @@ -31,6 +31,12 @@ namespace MediaBrowser.Model.Dto /// The game extensions. public List GameFileExtensions { get; set; } + /// + /// Gets or sets the client installed game count. + /// + /// The client installed game count. + public int ClientInstalledGameCount { get; set; } + /// /// Initializes a new instance of the class. /// -- cgit v1.2.3 From b54240f6798d463d30b1465e376cea748f2d8655 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 23 Sep 2013 10:02:56 -0400 Subject: fixes #553 - Support locking OfficialRating field --- .../Providers/BaseMetadataProvider.cs | 12 ++++++++++ MediaBrowser.Model/Entities/MetadataFields.cs | 6 ++++- .../MediaInfo/FFProbeVideoInfoProvider.cs | 5 ++++- MediaBrowser.Providers/Movies/MovieDbProvider.cs | 26 +++++++++++++--------- MediaBrowser.Providers/TV/RemoteSeriesProvider.cs | 14 +++++++++++- .../Providers/ProviderManager.cs | 2 +- 6 files changed, 50 insertions(+), 15 deletions(-) (limited to 'MediaBrowser.Controller') diff --git a/MediaBrowser.Controller/Providers/BaseMetadataProvider.cs b/MediaBrowser.Controller/Providers/BaseMetadataProvider.cs index 39c999e82a..a8dc8788f1 100644 --- a/MediaBrowser.Controller/Providers/BaseMetadataProvider.cs +++ b/MediaBrowser.Controller/Providers/BaseMetadataProvider.cs @@ -202,6 +202,18 @@ namespace MediaBrowser.Controller.Providers return NeedsRefreshInternal(item, data); } + /// + /// Gets a value indicating whether [enforce dont fetch metadata]. + /// + /// true if [enforce dont fetch metadata]; otherwise, false. + public virtual bool EnforceDontFetchMetadata + { + get + { + return true; + } + } + /// /// Needses the refresh internal. /// diff --git a/MediaBrowser.Model/Entities/MetadataFields.cs b/MediaBrowser.Model/Entities/MetadataFields.cs index a432e11248..85f2da31e0 100644 --- a/MediaBrowser.Model/Entities/MetadataFields.cs +++ b/MediaBrowser.Model/Entities/MetadataFields.cs @@ -37,6 +37,10 @@ namespace MediaBrowser.Model.Entities /// /// The runtime /// - Runtime + Runtime, + /// + /// The official rating + /// + OfficialRating } } diff --git a/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfoProvider.cs b/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfoProvider.cs index 59c3d75e52..690c9b3ffe 100644 --- a/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfoProvider.cs +++ b/MediaBrowser.Providers/MediaInfo/FFProbeVideoInfoProvider.cs @@ -384,7 +384,10 @@ namespace MediaBrowser.Providers.MediaInfo if (!string.IsNullOrWhiteSpace(officialRating)) { - video.OfficialRating = officialRating; + if (!video.LockedFields.Contains(MetadataFields.OfficialRating)) + { + video.OfficialRating = officialRating; + } } } diff --git a/MediaBrowser.Providers/Movies/MovieDbProvider.cs b/MediaBrowser.Providers/Movies/MovieDbProvider.cs index 751712c71e..4741008555 100644 --- a/MediaBrowser.Providers/Movies/MovieDbProvider.cs +++ b/MediaBrowser.Providers/Movies/MovieDbProvider.cs @@ -317,7 +317,7 @@ namespace MediaBrowser.Providers.Movies var boxset = item as BoxSet; if (boxset != null) { - // See if any movies have a collection id already + // See if any movies have a collection id already var collId = boxset.Children.Concat(boxset.GetLinkedChildren()).OfType