diff --git a/PlexRequests.Services/Jobs/RecentlyAdded.cs b/PlexRequests.Services/Jobs/RecentlyAdded.cs index c138b942b..162e154be 100644 --- a/PlexRequests.Services/Jobs/RecentlyAdded.cs +++ b/PlexRequests.Services/Jobs/RecentlyAdded.cs @@ -1,4 +1,5 @@ #region Copyright + // /************************************************************************ // Copyright (c) 2016 Jamie Rees // File: RecentlyAdded.cs @@ -23,6 +24,7 @@ // 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 using System; @@ -47,8 +49,10 @@ namespace PlexRequests.Services.Jobs { public class RecentlyAdded : IJob, IRecentlyAdded { - public RecentlyAdded(IPlexApi api, ISettingsService plexSettings, ISettingsService email, - ISettingsService scheduledService, IJobRecord rec, ISettingsService plexRequest) + public RecentlyAdded(IPlexApi api, ISettingsService plexSettings, + ISettingsService email, + ISettingsService scheduledService, IJobRecord rec, + ISettingsService plexRequest) { JobRecord = rec; Api = api; @@ -118,7 +122,7 @@ namespace PlexRequests.Services.Jobs recentlyAdded._children.Where(x => x.type.Equals("Movie", StringComparison.CurrentCultureIgnoreCase)); var tv = recentlyAdded._children.Where( - x => x.type.Equals("season", StringComparison.CurrentCultureIgnoreCase)) + x => x.type.Equals("season", StringComparison.CurrentCultureIgnoreCase)) .GroupBy(x => x.parentTitle) .Select(x => x.FirstOrDefault()); @@ -131,42 +135,61 @@ namespace PlexRequests.Services.Jobs Send(html, plexSettings, testEmail); } - private void GenerateMovieHtml(IEnumerable movies, PlexSettings plexSettings, ref StringBuilder sb) + private void GenerateMovieHtml(IEnumerable movies, PlexSettings plexSettings, + ref StringBuilder sb) { sb.Append("

New Movies:



"); - sb.Append(""); + sb.Append( + "
"); foreach (var movie in movies) { - var metaData = Api.GetMetadata(plexSettings.PlexAuthToken, plexSettings.FullUri, - movie.ratingKey.ToString()); + var plexGUID = string.Empty; + try + { + var metaData = Api.GetMetadata(plexSettings.PlexAuthToken, plexSettings.FullUri, + movie.ratingKey.ToString()); - var imdbId = PlexHelper.GetProviderIdFromPlexGuid(metaData.Video.Guid); - var info = _movieApi.GetMovieInformation(imdbId).Result; + plexGUID = metaData.Video.Guid; - sb.Append(""); - sb.Append(""); - sb.Append(""); - sb.Append(""); - sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append( + ""); + if (info.Genres.Any()) + { + sb.AppendFormat( + "

Genre: {0}

", + string.Join(", ", info.Genres.Select(x => x.Name.ToString()).ToArray())); + } + sb.AppendFormat( + "

{0}

", + info.Overview); + + sb.Append(""); + sb.Append("
"); + sb.Append("
"); + sb.Append(""); + } + catch (Exception e) + { + Log.Error(e); + Log.Error("Exception when trying to process a Movie, either in getting the metadata from Plex OR getting the information from TheMovieDB, Plex GUID = {0}", plexGUID); + } } sb.Append("
"); - sb.AppendFormat("", info.BackdropPath); - sb.Append("
"); + var imdbId = PlexHelper.GetProviderIdFromPlexGuid(plexGUID); + var info = _movieApi.GetMovieInformation(imdbId).Result; - sb.AppendFormat("

{1} {2}

", - info.ImdbId, info.Title, info.ReleaseDate?.ToString("yyyy") ?? string.Empty); + sb.Append("

"); + sb.AppendFormat( + "", + info.BackdropPath); + sb.Append("
"); - if (info.Genres.Any()) - { sb.AppendFormat( - "

Genre: {0}

", - string.Join(", ", info.Genres.Select(x => x.Name.ToString()).ToArray())); - } - sb.AppendFormat("

{0}

", info.Overview); + "

{1} {2}

", + info.ImdbId, info.Title, info.ReleaseDate?.ToString("yyyy") ?? string.Empty); - sb.Append(""); - sb.Append("
"); - sb.Append("
"); - sb.Append("



"); @@ -176,38 +199,52 @@ namespace PlexRequests.Services.Jobs { // TV sb.Append("

New Episodes:



"); - sb.Append(""); + sb.Append( + "
"); foreach (var t in tv) { - var parentMetaData = Api.GetMetadata(plexSettings.PlexAuthToken, plexSettings.FullUri, - t.parentRatingKey.ToString()); + var plexGUID = string.Empty; + try + { + + var parentMetaData = Api.GetMetadata(plexSettings.PlexAuthToken, plexSettings.FullUri, + t.parentRatingKey.ToString()); + + plexGUID = parentMetaData.Directory.Guid; - var info = TvApi.ShowLookupByTheTvDbId(int.Parse(PlexHelper.GetProviderIdFromPlexGuid(parentMetaData.Directory.Guid))); - var banner = info.image?.original; - if (!string.IsNullOrEmpty(banner)) + var info = TvApi.ShowLookupByTheTvDbId(int.Parse(PlexHelper.GetProviderIdFromPlexGuid(plexGUID))); + + var banner = info.image?.original; + if (!string.IsNullOrEmpty(banner)) + { + banner = banner.Replace("http", "https"); // Always use the Https banners + } + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + sb.Append(""); + } + catch (Exception e) { - banner = banner.Replace("http", "https"); // Always use the Https banners + Log.Error(e); + Log.Error("Exception when trying to process a TV Show, either in getting the metadata from Plex OR getting the information from TVMaze, Plex GUID = {0}", plexGUID); } - sb.Append(""); - sb.Append(""); - sb.Append(""); - sb.Append(""); - sb.Append(""); } sb.Append("
"); + sb.AppendFormat("", banner); + sb.Append("
"); + + sb.AppendFormat("

{1} {2}

", + info.externals.imdb, info.name, info.premiered.Substring(0, 4)); // Only the year + + sb.AppendFormat("

Genre: {0}

", string.Join(", ", info.genres.Select(x => x.ToString()).ToArray())); + sb.AppendFormat("

{0}

", + string.IsNullOrEmpty(parentMetaData.Directory.Summary) ? info.summary : parentMetaData.Directory.Summary); // Episode Summary + + sb.Append(""); + sb.Append("
"); + sb.Append("
"); + sb.Append("

"); - sb.AppendFormat("", banner); - sb.Append("
"); - - sb.AppendFormat("

{1} {2}

", - info.externals.imdb, info.name, info.premiered.Substring(0, 4)); // Only the year - - sb.AppendFormat("

Genre: {0}

", string.Join(", ", info.genres.Select(x => x.ToString()).ToArray())); - sb.AppendFormat("

{0}

", - string.IsNullOrEmpty(parentMetaData.Directory.Summary) ? info.summary : parentMetaData.Directory.Summary); // Episode Summary - - sb.Append(""); - sb.Append("
"); - sb.Append("
"); - sb.Append("



"); }