From 2b8a5c64239f8d763ac8795dc41eed49866fb224 Mon Sep 17 00:00:00 2001 From: "Jamie.Rees" Date: Thu, 16 Mar 2017 14:55:26 +0000 Subject: [PATCH] Some small backend newsletter changes, we can now detect if there are any movies and/or tv shows, if there are none then we will no longer send out an empty newsletter. Also fixed the issue where we were not escaping the sonarr root folders #1118 --- .../EmbyRecentlyAddedNewsletter.cs | 14 ++++--- .../IEmbyAddedNewsletter.cs | 2 +- .../IPlexNewsletter.cs | 2 +- .../RecentlyAddedNewsletter/Newsletter.cs | 37 +++++++++++++++++++ .../PlexRecentlyAddedNewsletter.cs | 14 ++++--- .../RecentlyAddedNewsletter.cs | 24 +++++++----- Ombi.Services/Ombi.Services.csproj | 1 + Ombi.UI/Views/Admin/Sonarr.cshtml | 3 +- 8 files changed, 73 insertions(+), 24 deletions(-) create mode 100644 Ombi.Services/Jobs/RecentlyAddedNewsletter/Newsletter.cs diff --git a/Ombi.Services/Jobs/RecentlyAddedNewsletter/EmbyRecentlyAddedNewsletter.cs b/Ombi.Services/Jobs/RecentlyAddedNewsletter/EmbyRecentlyAddedNewsletter.cs index 90e32dcd0..f92d61faf 100644 --- a/Ombi.Services/Jobs/RecentlyAddedNewsletter/EmbyRecentlyAddedNewsletter.cs +++ b/Ombi.Services/Jobs/RecentlyAddedNewsletter/EmbyRecentlyAddedNewsletter.cs @@ -77,7 +77,7 @@ namespace Ombi.Services.Jobs.RecentlyAddedNewsletter private static readonly Logger Log = LogManager.GetCurrentClassLogger(); - public string GetNewsletterHtml(bool test) + public Newsletter GetNewsletter(bool test) { try { @@ -86,7 +86,7 @@ namespace Ombi.Services.Jobs.RecentlyAddedNewsletter catch (Exception e) { Log.Error(e); - return string.Empty; + return null; } } @@ -97,11 +97,12 @@ namespace Ombi.Services.Jobs.RecentlyAddedNewsletter public List EpisodeInformation { get; set; } } - private string GetHtml(bool test) + private Newsletter GetHtml(bool test) { var sb = new StringBuilder(); - var embySettings = EmbySettings.GetSettings(); + var newsletter = new Newsletter(); + var embySettings = EmbySettings.GetSettings(); var embyContent = Content.GetAll().ToList(); var series = embyContent.Where(x => x.Type == EmbyMediaType.Series).ToList(); @@ -129,6 +130,7 @@ namespace Ombi.Services.Jobs.RecentlyAddedNewsletter }); } GenerateMovieHtml(info, sb); + newsletter.MovieCount = info.Count; info.Clear(); foreach (var t in series) @@ -155,6 +157,7 @@ namespace Ombi.Services.Jobs.RecentlyAddedNewsletter } } GenerateTvHtml(info, sb); + newsletter.TvCount = info.Count; var template = new RecentlyAddedTemplate(); var html = template.LoadTemplate(sb.ToString()); @@ -182,7 +185,8 @@ namespace Ombi.Services.Jobs.RecentlyAddedNewsletter var escapedHtml = new string(html.Where(c => !char.IsControl(c)).ToArray()); Log.Debug(escapedHtml); - return escapedHtml; + newsletter.Html = escapedHtml; + return newsletter; } private void GenerateMovieHtml(IEnumerable recentlyAddedMovies, StringBuilder sb) diff --git a/Ombi.Services/Jobs/RecentlyAddedNewsletter/IEmbyAddedNewsletter.cs b/Ombi.Services/Jobs/RecentlyAddedNewsletter/IEmbyAddedNewsletter.cs index bef09ce6e..84ba9c561 100644 --- a/Ombi.Services/Jobs/RecentlyAddedNewsletter/IEmbyAddedNewsletter.cs +++ b/Ombi.Services/Jobs/RecentlyAddedNewsletter/IEmbyAddedNewsletter.cs @@ -2,6 +2,6 @@ { public interface IEmbyAddedNewsletter { - string GetNewsletterHtml(bool test); + Newsletter GetNewsletter(bool test); } } \ No newline at end of file diff --git a/Ombi.Services/Jobs/RecentlyAddedNewsletter/IPlexNewsletter.cs b/Ombi.Services/Jobs/RecentlyAddedNewsletter/IPlexNewsletter.cs index f22ccf519..e81632290 100644 --- a/Ombi.Services/Jobs/RecentlyAddedNewsletter/IPlexNewsletter.cs +++ b/Ombi.Services/Jobs/RecentlyAddedNewsletter/IPlexNewsletter.cs @@ -2,6 +2,6 @@ { public interface IPlexNewsletter { - string GetNewsletterHtml(bool test); + Newsletter GetNewsletter(bool test); } } \ No newline at end of file diff --git a/Ombi.Services/Jobs/RecentlyAddedNewsletter/Newsletter.cs b/Ombi.Services/Jobs/RecentlyAddedNewsletter/Newsletter.cs new file mode 100644 index 000000000..3d7c8b960 --- /dev/null +++ b/Ombi.Services/Jobs/RecentlyAddedNewsletter/Newsletter.cs @@ -0,0 +1,37 @@ +#region Copyright +// /************************************************************************ +// Copyright (c) 2017 Jamie Rees +// File: Newsletter.cs +// Created By: Jamie Rees +// +// Permission is hereby granted, free of charge, to any person obtaining +// a copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to +// permit persons to whom the Software is furnished to do so, subject to +// the following conditions: +// +// The above copyright notice and this permission notice shall be +// included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// ************************************************************************/ +#endregion +namespace Ombi.Services.Jobs.RecentlyAddedNewsletter +{ + public class Newsletter + { + public string Html { get; set; } + public int MovieCount { get; set; } + public int TvCount { get; set; } + + public bool Send => MovieCount > 0 || TvCount > 0; + } +} \ No newline at end of file diff --git a/Ombi.Services/Jobs/RecentlyAddedNewsletter/PlexRecentlyAddedNewsletter.cs b/Ombi.Services/Jobs/RecentlyAddedNewsletter/PlexRecentlyAddedNewsletter.cs index 79687636a..e1abb037a 100644 --- a/Ombi.Services/Jobs/RecentlyAddedNewsletter/PlexRecentlyAddedNewsletter.cs +++ b/Ombi.Services/Jobs/RecentlyAddedNewsletter/PlexRecentlyAddedNewsletter.cs @@ -42,11 +42,9 @@ using Ombi.Core.SettingModels; using Ombi.Helpers; using Ombi.Services.Jobs.Templates; using Ombi.Store.Models; -using Ombi.Store.Models.Emby; using Ombi.Store.Models.Plex; using Ombi.Store.Repository; using TMDbLib.Objects.Exceptions; -using EmbyMediaType = Ombi.Store.Models.Plex.EmbyMediaType; using PlexMediaType = Ombi.Store.Models.Plex.PlexMediaType; namespace Ombi.Services.Jobs.RecentlyAddedNewsletter @@ -81,7 +79,7 @@ namespace Ombi.Services.Jobs.RecentlyAddedNewsletter private static readonly Logger Log = LogManager.GetCurrentClassLogger(); - public string GetNewsletterHtml(bool test) + public Newsletter GetNewsletter(bool test) { try { @@ -90,7 +88,7 @@ namespace Ombi.Services.Jobs.RecentlyAddedNewsletter catch (Exception e) { Log.Error(e); - return string.Empty; + return null; } } @@ -100,9 +98,10 @@ namespace Ombi.Services.Jobs.RecentlyAddedNewsletter public PlexContent Content { get; set; } } - private string GetHtml(bool test) + private Newsletter GetHtml(bool test) { var sb = new StringBuilder(); + var newsletter = new Newsletter(); var plexSettings = PlexSettings.GetSettings(); var plexContent = Content.GetAll().ToList(); @@ -134,6 +133,7 @@ namespace Ombi.Services.Jobs.RecentlyAddedNewsletter }); } GenerateMovieHtml(info, sb); + newsletter.MovieCount = info.Count; info.Clear(); foreach (var t in filteredSeries) @@ -168,6 +168,7 @@ namespace Ombi.Services.Jobs.RecentlyAddedNewsletter //} } GenerateTvHtml(info, sb); + newsletter.TvCount = info.Count; var template = new RecentlyAddedTemplate(); var html = template.LoadTemplate(sb.ToString()); @@ -203,7 +204,8 @@ namespace Ombi.Services.Jobs.RecentlyAddedNewsletter var escapedHtml = new string(html.Where(c => !char.IsControl(c)).ToArray()); Log.Debug(escapedHtml); - return escapedHtml; + newsletter.Html = escapedHtml; + return newsletter; } private void GenerateMovieHtml(IEnumerable recentlyAddedMovies, StringBuilder sb) diff --git a/Ombi.Services/Jobs/RecentlyAddedNewsletter/RecentlyAddedNewsletter.cs b/Ombi.Services/Jobs/RecentlyAddedNewsletter/RecentlyAddedNewsletter.cs index 330adf60c..6a15d00f4 100644 --- a/Ombi.Services/Jobs/RecentlyAddedNewsletter/RecentlyAddedNewsletter.cs +++ b/Ombi.Services/Jobs/RecentlyAddedNewsletter/RecentlyAddedNewsletter.cs @@ -137,22 +137,26 @@ namespace Ombi.Services.Jobs.RecentlyAddedNewsletter var embySettings = EmbySettings.GetSettings(); if (embySettings.Enable) { - var html = EmbyNewsletter.GetNewsletterHtml(testEmail); - - var escapedHtml = new string(html.Where(c => !char.IsControl(c)).ToArray()); - Log.Debug(escapedHtml); - SendNewsletter(newletterSettings, escapedHtml, testEmail, "New Content On Emby!"); + var letter = EmbyNewsletter.GetNewsletter(testEmail) ?? new Newsletter(); + if (letter.Send) + { + SendNewsletter(newletterSettings, letter.Html, testEmail, "New Content On Emby!"); + } + else + { + Log.Warn("There is no new content to send the newsletter"); + } } else { var plexSettings = PlexSettings.GetSettings(); if (plexSettings.Enable) { - var html = PlexNewsletter.GetNewsletterHtml(testEmail); - - var escapedHtml = new string(html.Where(c => !char.IsControl(c)).ToArray()); - Log.Debug(escapedHtml); - SendNewsletter(newletterSettings, html, testEmail); + var letter = PlexNewsletter.GetNewsletter(testEmail) ?? new Newsletter(); + if (letter.Send) + { + SendNewsletter(newletterSettings, letter.Html, testEmail); + } } } } diff --git a/Ombi.Services/Ombi.Services.csproj b/Ombi.Services/Ombi.Services.csproj index fa3da8625..725f1a4ab 100644 --- a/Ombi.Services/Ombi.Services.csproj +++ b/Ombi.Services/Ombi.Services.csproj @@ -108,6 +108,7 @@ + diff --git a/Ombi.UI/Views/Admin/Sonarr.cshtml b/Ombi.UI/Views/Admin/Sonarr.cshtml index 92c667708..4f2054a45 100644 --- a/Ombi.UI/Views/Admin/Sonarr.cshtml +++ b/Ombi.UI/Views/Admin/Sonarr.cshtml @@ -1,4 +1,4 @@ -@using Ombi.UI.Helpers + @using Ombi.UI.Helpers @Html.Partial("Shared/Partial/_Sidebar") @{ int port; @@ -16,6 +16,7 @@ { rootFolder = Model.RootPath.Replace("/", "//"); + rootFolder = rootFolder.Replace(@"\", @"\\"); } }