From ae2b6ddf395358b3ed55cb70f6ad4a7e02bd32ce Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 12 May 2016 15:21:43 -0400 Subject: [PATCH 1/4] update text --- .../ScheduledTasks/ScheduledTaskWorker.cs | 4 ++-- .../ScheduledTasks/DailyTrigger.cs | 10 ++++++++-- .../ScheduledTasks/ITaskTrigger.cs | 3 ++- .../ScheduledTasks/IntervalTrigger.cs | 3 ++- .../ScheduledTasks/StartupTrigger.cs | 3 ++- .../ScheduledTasks/SystemEventTrigger.cs | 3 ++- .../ScheduledTasks/WeeklyTrigger.cs | 3 ++- MediaBrowser.Controller/Entities/TV/Series.cs | 9 ++++++++- .../Persistence/SqliteItemRepository.cs | 17 ++++++++++++++--- .../MediaBrowser.WebDashboard.csproj | 6 ------ 10 files changed, 42 insertions(+), 19 deletions(-) diff --git a/MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs b/MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs index 8d727a1128..090966d2b6 100644 --- a/MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs +++ b/MediaBrowser.Common.Implementations/ScheduledTasks/ScheduledTaskWorker.cs @@ -311,7 +311,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks trigger.Triggered -= trigger_Triggered; trigger.Triggered += trigger_Triggered; - trigger.Start(LastExecutionResult, isApplicationStartup); + trigger.Start(LastExecutionResult, Logger, Name, isApplicationStartup); } } @@ -339,7 +339,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks await Task.Delay(1000).ConfigureAwait(false); - trigger.Start(LastExecutionResult, false); + trigger.Start(LastExecutionResult, Logger, Name, false); } private Task _currentTask; diff --git a/MediaBrowser.Common/ScheduledTasks/DailyTrigger.cs b/MediaBrowser.Common/ScheduledTasks/DailyTrigger.cs index 382a412552..3d33e958de 100644 --- a/MediaBrowser.Common/ScheduledTasks/DailyTrigger.cs +++ b/MediaBrowser.Common/ScheduledTasks/DailyTrigger.cs @@ -1,7 +1,9 @@ using MediaBrowser.Model.Events; using MediaBrowser.Model.Tasks; using System; +using System.Globalization; using System.Threading; +using MediaBrowser.Model.Logging; namespace MediaBrowser.Common.ScheduledTasks { @@ -35,7 +37,7 @@ namespace MediaBrowser.Common.ScheduledTasks /// /// The last result. /// if set to true [is application startup]. - public void Start(TaskResult lastResult, bool isApplicationStartup) + public void Start(TaskResult lastResult, ILogger logger, string taskName, bool isApplicationStartup) { DisposeTimer(); @@ -44,7 +46,11 @@ namespace MediaBrowser.Common.ScheduledTasks var triggerDate = now.TimeOfDay > TimeOfDay ? now.Date.AddDays(1) : now.Date; triggerDate = triggerDate.Add(TimeOfDay); - Timer = new Timer(state => OnTriggered(), null, triggerDate - now, TimeSpan.FromMilliseconds(-1)); + var dueTime = triggerDate - now; + + logger.Info("Daily trigger for {0} set to fire at {1}, which is {2} minutes from now.", taskName, triggerDate.ToString(), dueTime.TotalMinutes.ToString(CultureInfo.InvariantCulture)); + + Timer = new Timer(state => OnTriggered(), null, dueTime, TimeSpan.FromMilliseconds(-1)); } /// diff --git a/MediaBrowser.Common/ScheduledTasks/ITaskTrigger.cs b/MediaBrowser.Common/ScheduledTasks/ITaskTrigger.cs index 8c87f8f380..ef1ea9d387 100644 --- a/MediaBrowser.Common/ScheduledTasks/ITaskTrigger.cs +++ b/MediaBrowser.Common/ScheduledTasks/ITaskTrigger.cs @@ -1,6 +1,7 @@ using MediaBrowser.Model.Events; using MediaBrowser.Model.Tasks; using System; +using MediaBrowser.Model.Logging; namespace MediaBrowser.Common.ScheduledTasks { @@ -19,7 +20,7 @@ namespace MediaBrowser.Common.ScheduledTasks /// /// The last result. /// if set to true [is application startup]. - void Start(TaskResult lastResult, bool isApplicationStartup); + void Start(TaskResult lastResult, ILogger logger, string taskName, bool isApplicationStartup); /// /// Stops waiting for the trigger action diff --git a/MediaBrowser.Common/ScheduledTasks/IntervalTrigger.cs b/MediaBrowser.Common/ScheduledTasks/IntervalTrigger.cs index e07dfcceb4..5107db6c4d 100644 --- a/MediaBrowser.Common/ScheduledTasks/IntervalTrigger.cs +++ b/MediaBrowser.Common/ScheduledTasks/IntervalTrigger.cs @@ -3,6 +3,7 @@ using MediaBrowser.Model.Tasks; using System; using System.Linq; using System.Threading; +using MediaBrowser.Model.Logging; namespace MediaBrowser.Common.ScheduledTasks { @@ -38,7 +39,7 @@ namespace MediaBrowser.Common.ScheduledTasks /// /// The last result. /// if set to true [is application startup]. - public void Start(TaskResult lastResult, bool isApplicationStartup) + public void Start(TaskResult lastResult, ILogger logger, string taskName, bool isApplicationStartup) { DisposeTimer(); diff --git a/MediaBrowser.Common/ScheduledTasks/StartupTrigger.cs b/MediaBrowser.Common/ScheduledTasks/StartupTrigger.cs index 1d82dc76a5..41f58a7ad5 100644 --- a/MediaBrowser.Common/ScheduledTasks/StartupTrigger.cs +++ b/MediaBrowser.Common/ScheduledTasks/StartupTrigger.cs @@ -2,6 +2,7 @@ using MediaBrowser.Model.Tasks; using System; using System.Threading.Tasks; +using MediaBrowser.Model.Logging; namespace MediaBrowser.Common.ScheduledTasks { @@ -30,7 +31,7 @@ namespace MediaBrowser.Common.ScheduledTasks /// /// The last result. /// if set to true [is application startup]. - public async void Start(TaskResult lastResult, bool isApplicationStartup) + public async void Start(TaskResult lastResult, ILogger logger, string taskName, bool isApplicationStartup) { if (isApplicationStartup) { diff --git a/MediaBrowser.Common/ScheduledTasks/SystemEventTrigger.cs b/MediaBrowser.Common/ScheduledTasks/SystemEventTrigger.cs index eaf4afc758..9972dc8044 100644 --- a/MediaBrowser.Common/ScheduledTasks/SystemEventTrigger.cs +++ b/MediaBrowser.Common/ScheduledTasks/SystemEventTrigger.cs @@ -3,6 +3,7 @@ using MediaBrowser.Model.Tasks; using Microsoft.Win32; using System; using System.Threading.Tasks; +using MediaBrowser.Model.Logging; namespace MediaBrowser.Common.ScheduledTasks { @@ -30,7 +31,7 @@ namespace MediaBrowser.Common.ScheduledTasks /// /// The last result. /// if set to true [is application startup]. - public void Start(TaskResult lastResult, bool isApplicationStartup) + public void Start(TaskResult lastResult, ILogger logger, string taskName, bool isApplicationStartup) { switch (SystemEvent) { diff --git a/MediaBrowser.Common/ScheduledTasks/WeeklyTrigger.cs b/MediaBrowser.Common/ScheduledTasks/WeeklyTrigger.cs index 2e38264b24..318802e07d 100644 --- a/MediaBrowser.Common/ScheduledTasks/WeeklyTrigger.cs +++ b/MediaBrowser.Common/ScheduledTasks/WeeklyTrigger.cs @@ -1,6 +1,7 @@ using System; using System.Threading; using MediaBrowser.Model.Events; +using MediaBrowser.Model.Logging; using MediaBrowser.Model.Tasks; namespace MediaBrowser.Common.ScheduledTasks @@ -41,7 +42,7 @@ namespace MediaBrowser.Common.ScheduledTasks /// /// The last result. /// if set to true [is application startup]. - public void Start(TaskResult lastResult, bool isApplicationStartup) + public void Start(TaskResult lastResult, ILogger logger, string taskName, bool isApplicationStartup) { DisposeTimer(); diff --git a/MediaBrowser.Controller/Entities/TV/Series.cs b/MediaBrowser.Controller/Entities/TV/Series.cs index 54b11a9042..82ab99980d 100644 --- a/MediaBrowser.Controller/Entities/TV/Series.cs +++ b/MediaBrowser.Controller/Entities/TV/Series.cs @@ -104,7 +104,14 @@ namespace MediaBrowser.Controller.Entities.TV [IgnoreDataMember] public override string PresentationUniqueKey { - get { return GetUserDataKeys().First(); } + get + { + if (EnablePooling()) + { + return GetUserDataKeys().First(); + } + return base.PresentationUniqueKey; + } } /// diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs index 9ea2af784d..46cc5d0769 100644 --- a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs +++ b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs @@ -1,4 +1,3 @@ -using MediaBrowser.Common.Configuration; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities.Audio; using MediaBrowser.Controller.Entities.Movies; @@ -85,7 +84,7 @@ namespace MediaBrowser.Server.Implementations.Persistence private IDbCommand _updateInheritedRatingCommand; private IDbCommand _updateInheritedTagsCommand; - public const int LatestSchemaVersion = 77; + public const int LatestSchemaVersion = 78; /// /// Initializes a new instance of the class. @@ -356,7 +355,9 @@ namespace MediaBrowser.Server.Implementations.Persistence "OriginalTitle", "PrimaryVersionId", "DateLastMediaAdded", - "Album" + "Album", + "CriticRating", + "CriticRatingSummary" }; private readonly string[] _mediaStreamSaveColumns = @@ -1247,6 +1248,16 @@ namespace MediaBrowser.Server.Implementations.Persistence item.Album = reader.GetString(55); } + if (!reader.IsDBNull(56)) + { + item.CriticRating = reader.GetFloat(56); + } + + if (!reader.IsDBNull(57)) + { + item.CriticRatingSummary = reader.GetString(57); + } + return item; } diff --git a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj index 29c73d0ded..c02b4db223 100644 --- a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj +++ b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj @@ -467,9 +467,6 @@ PreserveNewest - - PreserveNewest - PreserveNewest @@ -1710,9 +1707,6 @@ PreserveNewest - - PreserveNewest - PreserveNewest From 829aa9e855897dd6de448a3950bfe35d6d027f19 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 12 May 2016 22:32:12 -0400 Subject: [PATCH 2/4] update shared components --- MediaBrowser.Controller/Health/IHealthMonitor.cs | 12 ++++++++++++ .../MediaBrowser.Controller.csproj | 1 + .../MediaBrowser.WebDashboard.csproj | 6 ------ 3 files changed, 13 insertions(+), 6 deletions(-) create mode 100644 MediaBrowser.Controller/Health/IHealthMonitor.cs diff --git a/MediaBrowser.Controller/Health/IHealthMonitor.cs b/MediaBrowser.Controller/Health/IHealthMonitor.cs new file mode 100644 index 0000000000..b8ad98fc14 --- /dev/null +++ b/MediaBrowser.Controller/Health/IHealthMonitor.cs @@ -0,0 +1,12 @@ +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using MediaBrowser.Model.Notifications; + +namespace MediaBrowser.Controller.Health +{ + public interface IHealthMonitor + { + Task> GetNotifications(CancellationToken cancellationToken); + } +} diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj index 6ff4e39e2d..bc28ec0155 100644 --- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj +++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj @@ -180,6 +180,7 @@ + diff --git a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj index c02b4db223..e6d690f272 100644 --- a/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj +++ b/MediaBrowser.WebDashboard/MediaBrowser.WebDashboard.csproj @@ -140,12 +140,6 @@ PreserveNewest - - PreserveNewest - - - PreserveNewest - PreserveNewest From 04d3175473187dcb33bb135586216a7c985a9f1b Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 12 May 2016 22:36:01 -0400 Subject: [PATCH 3/4] update name searching --- .../Library/LibraryManager.cs | 17 ++++------------- .../Persistence/SqliteItemRepository.cs | 9 +++------ 2 files changed, 7 insertions(+), 19 deletions(-) diff --git a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs index 0c342986f9..1407cdce30 100644 --- a/MediaBrowser.Server.Implementations/Library/LibraryManager.cs +++ b/MediaBrowser.Server.Implementations/Library/LibraryManager.cs @@ -933,21 +933,10 @@ namespace MediaBrowser.Server.Implementations.Library Path.Combine(path, validFilename) : Path.Combine(path, subFolderPrefix, validFilename); - var id = GetNewItemId(fullPath, type); - - BaseItem obj; - - if (!_libraryItemsCache.TryGetValue(id, out obj)) - { - obj = CreateItemByName(fullPath, name, id); - - RegisterItem(id, obj); - } - - return obj as T; + return CreateItemByName(fullPath, name); } - private T CreateItemByName(string path, string name, Guid id) + private T CreateItemByName(string path, string name) where T : BaseItem, new() { var isArtist = typeof(T) == typeof(MusicArtist); @@ -970,6 +959,8 @@ namespace MediaBrowser.Server.Implementations.Library } } + var id = GetNewItemId(path, typeof(T)); + var item = GetItemById(id) as T; if (item == null) diff --git a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs index 46cc5d0769..308ca90e0a 100644 --- a/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs +++ b/MediaBrowser.Server.Implementations/Persistence/SqliteItemRepository.cs @@ -89,10 +89,6 @@ namespace MediaBrowser.Server.Implementations.Persistence /// /// Initializes a new instance of the class. /// - /// appPaths - /// or - /// jsonSerializer - /// public SqliteItemRepository(IServerConfigurationManager config, IJsonSerializer jsonSerializer, ILogManager logManager) : base(logManager) { @@ -2317,12 +2313,13 @@ namespace MediaBrowser.Server.Implementations.Persistence if (_config.Configuration.SchemaVersion >= 66) { whereClauses.Add("CleanName=@Name"); + cmd.Parameters.Add(cmd, "@Name", DbType.String).Value = query.Name.RemoveDiacritics(); } else { whereClauses.Add("Name=@Name"); + cmd.Parameters.Add(cmd, "@Name", DbType.String).Value = query.Name; } - cmd.Parameters.Add(cmd, "@Name", DbType.String).Value = query.Name; } if (!string.IsNullOrWhiteSpace(query.NameContains)) @@ -2335,7 +2332,7 @@ namespace MediaBrowser.Server.Implementations.Persistence { whereClauses.Add("Name like @NameContains"); } - cmd.Parameters.Add(cmd, "@NameContains", DbType.String).Value = "%" + query.NameContains + "%"; + cmd.Parameters.Add(cmd, "@NameContains", DbType.String).Value = "%" + query.NameContains.RemoveDiacritics() + "%"; } if (!string.IsNullOrWhiteSpace(query.NameStartsWith)) { From 4837b08e7db68f81e9b6b3ab3751f5e3f27e9457 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Fri, 13 May 2016 02:22:02 -0400 Subject: [PATCH 4/4] update shared dialogs --- MediaBrowser.WebDashboard/Api/DashboardService.cs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/MediaBrowser.WebDashboard/Api/DashboardService.cs b/MediaBrowser.WebDashboard/Api/DashboardService.cs index 3769787901..1569c1fc5a 100644 --- a/MediaBrowser.WebDashboard/Api/DashboardService.cs +++ b/MediaBrowser.WebDashboard/Api/DashboardService.cs @@ -316,7 +316,7 @@ namespace MediaBrowser.WebDashboard.Api DeleteFilesByExtension(bowerPath, ".txt"); DeleteFilesByExtension(bowerPath, ".map"); DeleteFilesByExtension(bowerPath, ".md"); - DeleteFilesByExtension(bowerPath, ".json"); + DeleteFilesByExtension(bowerPath, ".json", "strings\\"); DeleteFilesByExtension(bowerPath, ".gz"); DeleteFilesByExtension(bowerPath, ".bat"); DeleteFilesByExtension(bowerPath, ".sh"); @@ -401,7 +401,7 @@ namespace MediaBrowser.WebDashboard.Api } } - private void DeleteFilesByExtension(string path, string extension) + private void DeleteFilesByExtension(string path, string extension, string exclude = null) { var files = _fileSystem.GetFiles(path, true) .Where(i => string.Equals(i.Extension, extension, StringComparison.OrdinalIgnoreCase)) @@ -409,6 +409,13 @@ namespace MediaBrowser.WebDashboard.Api foreach (var file in files) { + if (!string.IsNullOrWhiteSpace(exclude)) + { + if (file.FullName.IndexOf(exclude, StringComparison.OrdinalIgnoreCase) != -1) + { + continue; + } + } _fileSystem.DeleteFile(file.FullName); } }