private void GenerateTvHtml(RecentlyAddedModel tv, PlexSettings plexSettings, StringBuilder sb) { // TV sb.Append("<h1>New Episodes:</h1><br/><br/>"); sb.Append( "<table border=\"0\" cellpadding=\"0\" align=\"center\" cellspacing=\"0\" style=\"border-collapse: separate; mso-table-lspace: 0pt; mso-table-rspace: 0pt; width: 100%;\" width=\"100%\">"); foreach (var t in tv._children.OrderByDescending(x => x.addedAt.UnixTimeStampToDateTime())) { 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(plexGUID))); var banner = info.image?.original; if (!string.IsNullOrEmpty(banner)) { banner = banner.Replace("http", "https"); // Always use the Https banners } AddImageInsideTable(sb, banner); sb.Append("<tr>"); sb.Append( "<td align=\"center\" style=\"font-family: sans-serif; font-size: 14px; vertical-align: top;\" valign=\"top\">"); var title = $"{t.grandparentTitle} - {t.title} {t.originallyAvailableAt?.Substring(0, 4)}"; Href(sb, $"https://www.imdb.com/title/{info.externals.imdb}/"); Header(sb, 3, title); EndTag(sb, "a"); AddParagraph(sb, $"Season: {t.parentIndex}, Episode: {t.index}"); if (info.genres.Any()) { AddParagraph(sb, $"Genre: {string.Join(", ", info.genres.Select(x => x.ToString()).ToArray())}"); } AddParagraph(sb, string.IsNullOrEmpty(t.summary) ? info.summary : t.summary); } catch (Exception e) { 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); } finally { EndLoopHtml(sb); } } sb.Append("</table><br/><br/>"); }
private void GenerateMovieHtml(RecentlyAddedModel movies, PlexSettings plexSettings, StringBuilder sb) { sb.Append("<h1>New Movies:</h1><br/><br/>"); sb.Append( "<table border=\"0\" cellpadding=\"0\" align=\"center\" cellspacing=\"0\" style=\"border-collapse: separate; mso-table-lspace: 0pt; mso-table-rspace: 0pt; width: 100%;\" width=\"100%\">"); foreach (var movie in movies._children.OrderByDescending(x => x.addedAt.UnixTimeStampToDateTime())) { var plexGUID = string.Empty; try { var metaData = Api.GetMetadata(plexSettings.PlexAuthToken, plexSettings.FullUri, movie.ratingKey.ToString()); plexGUID = metaData.Video.Guid; var imdbId = PlexHelper.GetProviderIdFromPlexGuid(plexGUID); var info = _movieApi.GetMovieInformation(imdbId).Result; AddImageInsideTable(sb, $"https://image.tmdb.org/t/p/w500{info.BackdropPath}"); sb.Append("<tr>"); sb.Append( "<td align=\"center\" style=\"font-family: sans-serif; font-size: 14px; vertical-align: top;\" valign=\"top\">"); Href(sb, $"https://www.imdb.com/title/{info.ImdbId}/"); Header(sb, 3, $"{info.Title} {info.ReleaseDate?.ToString("yyyy") ?? string.Empty}"); EndTag(sb, "a"); if (info.Genres.Any()) { AddParagraph(sb, $"Genre: {string.Join(", ", info.Genres.Select(x => x.Name.ToString()).ToArray())}"); } AddParagraph(sb, info.Overview); } 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); } finally { EndLoopHtml(sb); } } sb.Append("</table><br/><br/>"); }