From af2cceb6a81f9740d154782b7249c60975de514e Mon Sep 17 00:00:00 2001 From: Jamie Rees Date: Tue, 5 Jun 2018 15:13:31 +0100 Subject: [PATCH 1/5] The UI looks at the local time to see if the JWT token has expired. Use local time to generate the token --- src/Ombi/Controllers/TokenController.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Ombi/Controllers/TokenController.cs b/src/Ombi/Controllers/TokenController.cs index a488ba172..b45752af4 100644 --- a/src/Ombi/Controllers/TokenController.cs +++ b/src/Ombi/Controllers/TokenController.cs @@ -126,7 +126,7 @@ namespace Ombi.Controllers var token = new JwtSecurityToken( claims: claims, - expires: rememberMe ? DateTime.UtcNow.AddDays(7) : DateTime.UtcNow.AddHours(5), + expires: rememberMe ? DateTime.Now.AddDays(7) : DateTime.Now.AddDays(1), signingCredentials: creds, audience: "Ombi", issuer: "Ombi" ); From 02f941767e9b963d91435d71282e042515d49d50 Mon Sep 17 00:00:00 2001 From: Jamie Date: Wed, 6 Jun 2018 21:10:42 +0100 Subject: [PATCH 2/5] Fixed the issue with the Recently Added Sync sometimes not working as expected --- .../Jobs/Plex/PlexContentSync.cs | 29 ++++++++++++------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/src/Ombi.Schedule/Jobs/Plex/PlexContentSync.cs b/src/Ombi.Schedule/Jobs/Plex/PlexContentSync.cs index 57804d0f3..7fdb5d19a 100644 --- a/src/Ombi.Schedule/Jobs/Plex/PlexContentSync.cs +++ b/src/Ombi.Schedule/Jobs/Plex/PlexContentSync.cs @@ -147,7 +147,7 @@ namespace Ombi.Schedule.Jobs.Plex private async Task> ProcessServer(PlexServers servers, bool recentlyAddedSearch) { - var processedContent = new HashSet(); + var processedContent = new Dictionary(); Logger.LogInformation("Getting all content from server {0}", servers.Name); var allContent = await GetAllContent(servers, recentlyAddedSearch); Logger.LogInformation("We found {0} items", allContent.Count); @@ -175,7 +175,7 @@ namespace Ombi.Schedule.Jobs.Plex continue; } - await ProcessTvShow(servers, show, contentToAdd, recentlyAddedSearch, processedContent); + await ProcessTvShow(servers, show, contentToAdd, processedContent); if (contentToAdd.Any()) { await Repo.AddRange(contentToAdd, false); @@ -183,7 +183,7 @@ namespace Ombi.Schedule.Jobs.Plex { foreach (var plexServerContent in contentToAdd) { - processedContent.Add(plexServerContent.Id); + processedContent.Add(plexServerContent.Id, plexServerContent.Key); } } contentToAdd.Clear(); @@ -208,7 +208,7 @@ namespace Ombi.Schedule.Jobs.Plex foreach (var show in content.Metadata ?? new Metadata[] { }) { count++; - await ProcessTvShow(servers, show, contentToAdd, recentlyAddedSearch, processedContent); + await ProcessTvShow(servers, show, contentToAdd, processedContent); if (contentToAdd.Any()) { @@ -217,7 +217,7 @@ namespace Ombi.Schedule.Jobs.Plex { foreach (var plexServerContent in contentToAdd) { - processedContent.Add(plexServerContent.Id); + processedContent.Add(plexServerContent.Id, plexServerContent.Key); } } contentToAdd.Clear(); @@ -299,7 +299,7 @@ namespace Ombi.Schedule.Jobs.Plex await Repo.AddRange(contentToAdd); foreach (var c in contentToAdd) { - processedContent.Add(c.Id); + processedContent.Add(c.Id, c.Key); } contentToAdd.Clear(); } @@ -310,7 +310,7 @@ namespace Ombi.Schedule.Jobs.Plex await Repo.AddRange(contentToAdd); foreach (var c in contentToAdd) { - processedContent.Add(c.Id); + processedContent.Add(c.Id, c.Key); } contentToAdd.Clear(); } @@ -321,14 +321,14 @@ namespace Ombi.Schedule.Jobs.Plex await Repo.AddRange(contentToAdd); foreach (var c in contentToAdd) { - processedContent.Add(c.Id); + processedContent.Add(c.Id, c.Key); } } - return processedContent; + return processedContent.Values; } - private async Task ProcessTvShow(PlexServers servers, Metadata show, HashSet contentToAdd, bool recentlyAdded, HashSet contentProcessed) + private async Task ProcessTvShow(PlexServers servers, Metadata show, HashSet contentToAdd, Dictionary contentProcessed) { var seasonList = await PlexApi.GetSeasons(servers.PlexAuthToken, servers.FullUri, show.ratingKey); @@ -349,7 +349,7 @@ namespace Ombi.Schedule.Jobs.Plex var existingContent = await Repo.GetFirstContentByCustom(x => x.Title == show.title && x.ReleaseYear == show.year.ToString() && x.Type == PlexMediaTypeEntity.Show); - + // Just double check the rating key, since this is our unique constraint var existingKey = await Repo.GetByKey(show.ratingKey); @@ -397,6 +397,13 @@ namespace Ombi.Schedule.Jobs.Plex } } + // Also make sure it's not already being processed... + var alreadyProcessed = contentProcessed.Select(x => x.Value).Any(x => x == show.ratingKey); + if (alreadyProcessed) + { + return; + } + // The ratingKey keeps changing... //var existingContent = await Repo.GetByKey(show.ratingKey); if (existingContent != null) From 29dc293570940702eeda240a8d6aa07dcd60e194 Mon Sep 17 00:00:00 2001 From: Jamie Date: Wed, 6 Jun 2018 21:14:58 +0100 Subject: [PATCH 3/5] Run the availability checker on finish of the recentlty added sync --- .../Jobs/Ombi/RefreshMetadata.cs | 27 ++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/src/Ombi.Schedule/Jobs/Ombi/RefreshMetadata.cs b/src/Ombi.Schedule/Jobs/Ombi/RefreshMetadata.cs index 4eae94666..d58c29ddc 100644 --- a/src/Ombi.Schedule/Jobs/Ombi/RefreshMetadata.cs +++ b/src/Ombi.Schedule/Jobs/Ombi/RefreshMetadata.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; +using Hangfire; using Microsoft.Extensions.Logging; using Ombi.Api.TheMovieDb; using Ombi.Api.TheMovieDb.Models; @@ -9,6 +10,8 @@ using Ombi.Api.TvMaze; using Ombi.Core.Settings; using Ombi.Core.Settings.Models.External; using Ombi.Helpers; +using Ombi.Schedule.Jobs.Emby; +using Ombi.Schedule.Jobs.Plex; using Ombi.Store.Entities; using Ombi.Store.Repository; @@ -18,7 +21,7 @@ namespace Ombi.Schedule.Jobs.Ombi { public RefreshMetadata(IPlexContentRepository plexRepo, IEmbyContentRepository embyRepo, ILogger log, ITvMazeApi tvApi, ISettingsService plexSettings, - IMovieDbApi movieApi, ISettingsService embySettings) + IMovieDbApi movieApi, ISettingsService embySettings, IPlexAvailabilityChecker plexAvailability, IEmbyAvaliabilityChecker embyAvaliability) { _plexRepo = plexRepo; _embyRepo = embyRepo; @@ -27,10 +30,14 @@ namespace Ombi.Schedule.Jobs.Ombi _tvApi = tvApi; _plexSettings = plexSettings; _embySettings = embySettings; + _plexAvailabilityChecker = plexAvailability; + _embyAvaliabilityChecker = embyAvaliability; } private readonly IPlexContentRepository _plexRepo; private readonly IEmbyContentRepository _embyRepo; + private readonly IPlexAvailabilityChecker _plexAvailabilityChecker; + private readonly IEmbyAvaliabilityChecker _embyAvaliabilityChecker; private readonly ILogger _log; private readonly IMovieDbApi _movieApi; private readonly ITvMazeApi _tvApi; @@ -64,10 +71,11 @@ namespace Ombi.Schedule.Jobs.Ombi public async Task ProcessPlexServerContent(IEnumerable contentIds) { _log.LogInformation("Starting the Metadata refresh from RecentlyAddedSync"); + var plexSettings = await _plexSettings.GetSettingsAsync(); + var embySettings = await _embySettings.GetSettingsAsync(); try { - var settings = await _plexSettings.GetSettingsAsync(); - if (settings.Enable) + if (plexSettings.Enable) { await StartPlexWithKnownContent(contentIds); } @@ -77,6 +85,19 @@ namespace Ombi.Schedule.Jobs.Ombi _log.LogError(e, "Exception when refreshing the Plex Metadata"); throw; } + finally + { + if (plexSettings.Enable) + { + BackgroundJob.Enqueue(() => _plexAvailabilityChecker.Start()); + } + + if (embySettings.Enable) + { + BackgroundJob.Enqueue(() => _embyAvaliabilityChecker.Start()); + + } + } } private async Task StartPlexWithKnownContent(IEnumerable contentids) From 802ef183e4081049b94043fdeaedb22411c0fe3d Mon Sep 17 00:00:00 2001 From: Jamie Date: Thu, 7 Jun 2018 21:39:40 +0100 Subject: [PATCH 4/5] !wip changelog --- CHANGELOG.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4c75a0206..c9c0c46fe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,12 +2,25 @@ ## (unreleased) +### **Fixes** + +- Run the availability checker on finish of the recentlty added sync. [Jamie] + +- Fixed the issue with the Recently Added Sync sometimes not working as expected. [Jamie] + +- The UI looks at the local time to see if the JWT token has expired. Use local time to generate the token. [Jamie Rees] + + +## v3.0.3368 (2018-06-03) + ### **New Features** - Added the subscribe on the sarch page. [Jamie Rees] - Added the subscribe button to the search page if we have an existing request. [Jamie Rees] +- Update CHANGELOG.md. [Jamie] + ### **Fixes** - Use selected episodes in submitRequest. [Calvin] From b036e1c001ace770e7aae3139791c86dea711cf5 Mon Sep 17 00:00:00 2001 From: Jamie Date: Thu, 7 Jun 2018 21:57:29 +0100 Subject: [PATCH 5/5] Minor improvements --- src/Ombi.Core/Engine/TvRequestEngine.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Ombi.Core/Engine/TvRequestEngine.cs b/src/Ombi.Core/Engine/TvRequestEngine.cs index 8bb6d86e6..1667873ea 100644 --- a/src/Ombi.Core/Engine/TvRequestEngine.cs +++ b/src/Ombi.Core/Engine/TvRequestEngine.cs @@ -178,6 +178,7 @@ namespace Ombi.Core.Engine .Include(x => x.ChildRequests) .ThenInclude(x => x.SeasonRequests) .ThenInclude(x => x.Episodes) + .Where(x => x.ChildRequests.Any()) .OrderByDescending(x => x.ChildRequests.Max(y => y.RequestedDate)) .Skip(position).Take(count).ToListAsync(); @@ -189,6 +190,7 @@ namespace Ombi.Core.Engine .Include(x => x.ChildRequests) .ThenInclude(x => x.SeasonRequests) .ThenInclude(x => x.Episodes) + .Where(x => x.ChildRequests.Any()) .OrderByDescending(x => x.ChildRequests.Max(y => y.RequestedDate)) .Skip(position).Take(count).ToListAsync(); }