mirror of
https://github.com/Ombi-app/Ombi.git
synced 2025-07-30 11:38:32 -07:00
Looks like we were overloading emby with out api calls.
Put a bit of handling around that to wait when we get some errors. Problem about this is it can take a long time to generate the infomation when we have episode searching enabled. #1109
This commit is contained in:
parent
717b499874
commit
b9c0c20af6
3 changed files with 63 additions and 39 deletions
|
@ -185,7 +185,6 @@ namespace Ombi.Api
|
||||||
throw new ArgumentOutOfRangeException(nameof(type), type, null);
|
throw new ArgumentOutOfRangeException(nameof(type), type, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
var info = new EmbyInformation();
|
|
||||||
|
|
||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
|
|
|
@ -32,6 +32,7 @@ using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
|
using Newtonsoft.Json;
|
||||||
using NLog;
|
using NLog;
|
||||||
using Ombi.Api;
|
using Ombi.Api;
|
||||||
using Ombi.Api.Interfaces;
|
using Ombi.Api.Interfaces;
|
||||||
|
@ -116,7 +117,6 @@ namespace Ombi.Services.Jobs.RecentlyAddedNewsletter
|
||||||
var filteredMovies = movie.Where(m => recentlyAdded.All(x => x.ProviderId != m.ProviderId)).ToList();
|
var filteredMovies = movie.Where(m => recentlyAdded.All(x => x.ProviderId != m.ProviderId)).ToList();
|
||||||
var filteredEp = episodes.Where(m => recentlyAdded.All(x => x.ProviderId != m.ProviderId)).ToList();
|
var filteredEp = episodes.Where(m => recentlyAdded.All(x => x.ProviderId != m.ProviderId)).ToList();
|
||||||
|
|
||||||
|
|
||||||
var info = new List<EmbyRecentlyAddedModel>();
|
var info = new List<EmbyRecentlyAddedModel>();
|
||||||
foreach (var m in filteredMovies)
|
foreach (var m in filteredMovies)
|
||||||
{
|
{
|
||||||
|
@ -137,28 +137,41 @@ namespace Ombi.Services.Jobs.RecentlyAddedNewsletter
|
||||||
{
|
{
|
||||||
var i = Api.GetInformation(t.EmbyId, Ombi.Api.Models.Emby.EmbyMediaType.Series,
|
var i = Api.GetInformation(t.EmbyId, Ombi.Api.Models.Emby.EmbyMediaType.Series,
|
||||||
embySettings.ApiKey, embySettings.AdministratorId, embySettings.FullUri);
|
embySettings.ApiKey, embySettings.AdministratorId, embySettings.FullUri);
|
||||||
var ep = filteredEp.Where(x => x.ParentId == t.EmbyId);
|
var ep = filteredEp.Where(x => x.ParentId == t.EmbyId).ToList();
|
||||||
|
var item = new EmbyRecentlyAddedModel
|
||||||
if (ep.Any())
|
{
|
||||||
|
EmbyContent = t,
|
||||||
|
EmbyInformation = i,
|
||||||
|
};
|
||||||
|
if (ep.Any() && embySettings.EnableEpisodeSearching)
|
||||||
|
{
|
||||||
|
try
|
||||||
{
|
{
|
||||||
var episodeList = new List<EmbyEpisodeInformation>();
|
var episodeList = new List<EmbyEpisodeInformation>();
|
||||||
foreach (var embyEpisodese in ep)
|
foreach (var embyEpisodese in ep)
|
||||||
{
|
{
|
||||||
var epInfo = Api.GetInformation(embyEpisodese.EmbyId, Ombi.Api.Models.Emby.EmbyMediaType.Episode,
|
var epInfo = Api.GetInformation(embyEpisodese.EmbyId,
|
||||||
|
Ombi.Api.Models.Emby.EmbyMediaType.Episode,
|
||||||
embySettings.ApiKey, embySettings.AdministratorId, embySettings.FullUri);
|
embySettings.ApiKey, embySettings.AdministratorId, embySettings.FullUri);
|
||||||
episodeList.Add(epInfo.EpisodeInformation);
|
episodeList.Add(epInfo.EpisodeInformation);
|
||||||
|
Thread.Sleep(200); // Let's not try and overload the server
|
||||||
}
|
}
|
||||||
info.Add(new EmbyRecentlyAddedModel
|
item.EpisodeInformation = episodeList;
|
||||||
|
}
|
||||||
|
catch (JsonReaderException)
|
||||||
{
|
{
|
||||||
EmbyContent = t,
|
Log.Error(
|
||||||
EmbyInformation = i,
|
"Failed getting episode information, we may have overloaded Emby's api... Waiting and we will skip this one and go to the next");
|
||||||
EpisodeInformation = episodeList
|
Thread.Sleep(500);
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
info.Add(item);
|
||||||
|
}
|
||||||
GenerateTvHtml(info, sb);
|
GenerateTvHtml(info, sb);
|
||||||
newsletter.TvCount = info.Count;
|
newsletter.TvCount = info.Count;
|
||||||
|
|
||||||
|
|
||||||
var template = new RecentlyAddedTemplate();
|
var template = new RecentlyAddedTemplate();
|
||||||
var html = template.LoadTemplate(sb.ToString());
|
var html = template.LoadTemplate(sb.ToString());
|
||||||
Log.Debug("Loaded the template");
|
Log.Debug("Loaded the template");
|
||||||
|
@ -183,10 +196,12 @@ namespace Ombi.Services.Jobs.RecentlyAddedNewsletter
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
var escapedHtml = new string(html.Where(c => !char.IsControl(c)).ToArray());
|
var escapedHtml = new string(html.Where(c => !char.IsControl(c)).ToArray());
|
||||||
Log.Debug(escapedHtml);
|
Log.Debug(escapedHtml);
|
||||||
newsletter.Html = escapedHtml;
|
newsletter.Html = escapedHtml;
|
||||||
return newsletter;
|
return newsletter;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void GenerateMovieHtml(IEnumerable<EmbyRecentlyAddedModel> recentlyAddedMovies, StringBuilder sb)
|
private void GenerateMovieHtml(IEnumerable<EmbyRecentlyAddedModel> recentlyAddedMovies, StringBuilder sb)
|
||||||
|
@ -276,11 +291,12 @@ namespace Ombi.Services.Jobs.RecentlyAddedNewsletter
|
||||||
{
|
{
|
||||||
var seriesItem = t.EmbyInformation.SeriesInformation;
|
var seriesItem = t.EmbyInformation.SeriesInformation;
|
||||||
var relatedEpisodes = t.EpisodeInformation;
|
var relatedEpisodes = t.EpisodeInformation;
|
||||||
|
var endLoop = false;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var info = TvApi.ShowLookupByTheTvDbId(int.Parse(seriesItem.ProviderIds.Tvdb));
|
var info = TvApi.ShowLookupByTheTvDbId(int.Parse(seriesItem.ProviderIds.Tvdb));
|
||||||
|
if(info == null)continue;
|
||||||
|
|
||||||
var banner = info.image?.original;
|
var banner = info.image?.original;
|
||||||
if (!string.IsNullOrEmpty(banner))
|
if (!string.IsNullOrEmpty(banner))
|
||||||
|
@ -299,6 +315,8 @@ namespace Ombi.Services.Jobs.RecentlyAddedNewsletter
|
||||||
Header(sb, 3, title);
|
Header(sb, 3, title);
|
||||||
EndTag(sb, "a");
|
EndTag(sb, "a");
|
||||||
|
|
||||||
|
if (relatedEpisodes != null)
|
||||||
|
{
|
||||||
var results = relatedEpisodes.GroupBy(p => p.ParentIndexNumber,
|
var results = relatedEpisodes.GroupBy(p => p.ParentIndexNumber,
|
||||||
(key, g) => new
|
(key, g) => new
|
||||||
{
|
{
|
||||||
|
@ -324,6 +342,7 @@ namespace Ombi.Services.Jobs.RecentlyAddedNewsletter
|
||||||
}
|
}
|
||||||
AddParagraph(sb, $"Season: {embyEpisodeInformation.ParentIndexNumber}, Episode: {epSb}");
|
AddParagraph(sb, $"Season: {embyEpisodeInformation.ParentIndexNumber}, Episode: {epSb}");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (info.genres.Any())
|
if (info.genres.Any())
|
||||||
{
|
{
|
||||||
|
@ -331,6 +350,7 @@ namespace Ombi.Services.Jobs.RecentlyAddedNewsletter
|
||||||
}
|
}
|
||||||
|
|
||||||
AddParagraph(sb, string.IsNullOrEmpty(seriesItem.Overview) ? info.summary : seriesItem.Overview);
|
AddParagraph(sb, string.IsNullOrEmpty(seriesItem.Overview) ? info.summary : seriesItem.Overview);
|
||||||
|
endLoop = true;
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
|
@ -338,6 +358,7 @@ namespace Ombi.Services.Jobs.RecentlyAddedNewsletter
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
|
if(endLoop)
|
||||||
EndLoopHtml(sb);
|
EndLoopHtml(sb);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,7 +32,9 @@
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div>
|
<div>
|
||||||
<button id="recentlyAddedBtn" class="btn btn-primary-outline">Send test email to Admin <div id="testEmailSpinner"></div></button>
|
|
||||||
|
<button id="recentlyAddedBtn" class="btn btn-primary-outline">Send test email to Admin @Html.ToolTip("Note: nothing will send if there is no new content...")
|
||||||
|
<div id="testEmailSpinner"></div></button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -84,6 +86,8 @@
|
||||||
|
|
||||||
$('#recentlyAddedBtn').click(function (e) {
|
$('#recentlyAddedBtn').click(function (e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|
||||||
|
generateNotify("This could take some time depending on if you have episode searching enabled and also how many new items have been added!", "info");
|
||||||
var base = '@Html.GetBaseUrl()';
|
var base = '@Html.GetBaseUrl()';
|
||||||
var url = createBaseUrl(base, '/admin/testnewsletteradminemail');
|
var url = createBaseUrl(base, '/admin/testnewsletteradminemail');
|
||||||
$('#testEmailSpinner').attr("class", "fa fa-spinner fa-spin");
|
$('#testEmailSpinner').attr("class", "fa fa-spinner fa-spin");
|
||||||
|
@ -94,11 +98,11 @@
|
||||||
success: function (response) {
|
success: function (response) {
|
||||||
if (response) {
|
if (response) {
|
||||||
generateNotify(response.message, "success");
|
generateNotify(response.message, "success");
|
||||||
$('#testSendMassEmailSpinner').attr("class", "fa fa-check");
|
$('#testEmailSpinner').attr("class", "fa fa-check");
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
generateNotify(response.message, "danger");
|
generateNotify(response.message, "danger");
|
||||||
$('#testSendMassEmailSpinner').attr("class", "fa fa-times");
|
$('#testEmailSpinner').attr("class", "fa fa-times");
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
error: function (e) {
|
error: function (e) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue