public async Task <TvShowRequestBuilder> GetShowInfo(int id) { ShowInfo = await TvApi.ShowLookupByTheTvDbId(id); Results = await MovieDbApi.SearchTv(ShowInfo.name); foreach (TvSearchResult result in Results) { if (result.Name.Equals(ShowInfo.name, StringComparison.InvariantCultureIgnoreCase)) { TheMovieDbRecord = result; var showIds = await MovieDbApi.GetTvExternals(result.Id); ShowInfo.externals.imdb = showIds.imdb_id; BackdropPath = result.BackdropPath; break; } } DateTime.TryParse(ShowInfo.premiered, out var dt); FirstAir = dt; // For some reason the poster path is always http PosterPath = ShowInfo.image?.medium.ToHttpsUrl(); return(this); }
public async Task <TvShowRequestBuilder> GetShowInfo(int id) { ShowInfo = await TvApi.ShowLookupByTheTvDbId(id); Results = await MovieDbApi.SearchTv(ShowInfo.name); foreach (TvSearchResult result in Results) { if (result.Name == ShowInfo.name) { var showIds = await MovieDbApi.GetTvExternals(result.Id); ShowInfo.externals.imdb = showIds.imdb_id; BackdropPath = result.BackdropPath; break; } } DateTime.TryParse(ShowInfo.premiered, out var dt); FirstAir = dt; // For some reason the poster path is always http PosterPath = ShowInfo.image?.medium.Replace("http:", "https:"); return(this); }
public MovieDbApiTest() { IConfigurationBuilder builder = new ConfigurationBuilder() .AddJsonFile("testAppSettings.json", true, true) .AddUserSecrets <MovieDbApiTest>(); IConfiguration configuration = builder.Build(); ILoggerFactory loggerFactory = new LoggerFactory(); var logger = new Logger <IMovieDbApi>(loggerFactory); _api = new MovieDbApi(logger, configuration); }
public async Task <TvShowRequestBuilderV2> GetShowInfo(int id) { TheMovieDbRecord = await MovieDbApi.GetTVInfo(id.ToString()); BackdropPath = TheMovieDbRecord.Images?.Backdrops?.OrderBy(x => x.VoteCount).ThenBy(x => x.VoteAverage).FirstOrDefault()?.FilePath;; DateTime.TryParse(TheMovieDbRecord.first_air_date, out var dt); FirstAir = dt; // For some reason the poster path is always http PosterPath = TheMovieDbRecord.Images?.Posters?.OrderBy(x => x.VoteCount).ThenBy(x => x.VoteAverage).FirstOrDefault()?.FilePath; return(this); }
public async Task <TvShowRequestBuilderV2> GetShowInfo(int id, string langCode = "en") { TheMovieDbRecord = await MovieDbApi.GetTVInfo(id.ToString(), langCode); // Remove 'Specials Season' var firstSeason = TheMovieDbRecord.seasons.OrderBy(x => x.season_number).FirstOrDefault(); if (firstSeason?.season_number == 0) { TheMovieDbRecord.seasons.Remove(firstSeason); } BackdropPath = TheMovieDbRecord.Images?.Backdrops?.OrderBy(x => x.VoteCount).ThenBy(x => x.VoteAverage).FirstOrDefault()?.FilePath;; DateTime.TryParse(TheMovieDbRecord.first_air_date, out var dt); FirstAir = dt; // For some reason the poster path is always http PosterPath = TheMovieDbRecord.Images?.Posters?.OrderBy(x => x.VoteCount).ThenBy(x => x.VoteAverage).FirstOrDefault()?.FilePath; return(this); }
public async Task <TvShowRequestBuilderV2> BuildEpisodes(TvRequestViewModelV2 tv) { var allEpisodes = new List <Episode>(); foreach (var season in TheMovieDbRecord.seasons) { var seasonEpisodes = await MovieDbApi.GetSeasonEpisodes(TheMovieDbRecord.id, season.season_number, CancellationToken.None); allEpisodes.AddRange(seasonEpisodes.episodes); } if (tv.RequestAll) { foreach (var ep in allEpisodes) { var season = ChildRequest.SeasonRequests.FirstOrDefault(x => x.SeasonNumber == ep.season_number); if (season == null) { ChildRequest.SeasonRequests.Add(new SeasonRequests { Episodes = new List <EpisodeRequests> { new EpisodeRequests { EpisodeNumber = ep.episode_number, AirDate = FormatDate(ep.air_date), Title = ep.name, } }, SeasonNumber = ep.season_number, }); } else { season.Episodes.Add(new EpisodeRequests { EpisodeNumber = ep.episode_number, AirDate = FormatDate(ep.air_date), Title = ep.name, }); } } } else if (tv.LatestSeason) { var latest = allEpisodes.OrderByDescending(x => x.season_number).FirstOrDefault(); var episodesRequests = new List <EpisodeRequests>(); foreach (var ep in allEpisodes) { if (ep.season_number == latest.season_number) { episodesRequests.Add(new EpisodeRequests { EpisodeNumber = ep.episode_number, AirDate = FormatDate(ep.air_date), Title = ep.name, }); } } ChildRequest.SeasonRequests.Add(new SeasonRequests { Episodes = episodesRequests, SeasonNumber = latest.season_number, }); } else if (tv.FirstSeason) { var first = allEpisodes.OrderBy(x => x.season_number).FirstOrDefault(); var episodesRequests = new List <EpisodeRequests>(); foreach (var ep in allEpisodes) { if (ep.season_number == first.season_number) { episodesRequests.Add(new EpisodeRequests { EpisodeNumber = ep.episode_number, AirDate = FormatDate(ep.air_date), Title = ep.name, }); } } ChildRequest.SeasonRequests.Add(new SeasonRequests { Episodes = episodesRequests, SeasonNumber = first.season_number, }); } else { // It's a custom request var seasonRequests = new List <SeasonRequests>(); foreach (var ep in allEpisodes) { var existingSeasonRequest = seasonRequests.FirstOrDefault(x => x.SeasonNumber == ep.season_number); if (existingSeasonRequest != null) { var requestedSeason = tv.Seasons.FirstOrDefault(x => x.SeasonNumber == ep.season_number); var requestedEpisode = requestedSeason?.Episodes?.Any(x => x.EpisodeNumber == ep.episode_number) ?? false; if (requestedSeason != null && requestedEpisode) { // We already have this, let's just add the episodes to it existingSeasonRequest.Episodes.Add(new EpisodeRequests { EpisodeNumber = ep.episode_number, AirDate = FormatDate(ep.air_date), Title = ep.name, }); } } else { var newRequest = new SeasonRequests { SeasonNumber = ep.season_number }; var requestedSeason = tv.Seasons.FirstOrDefault(x => x.SeasonNumber == ep.season_number); var requestedEpisode = requestedSeason?.Episodes?.Any(x => x.EpisodeNumber == ep.episode_number) ?? false; if (requestedSeason != null && requestedEpisode) { newRequest.Episodes.Add(new EpisodeRequests { EpisodeNumber = ep.episode_number, AirDate = FormatDate(ep.air_date), Title = ep.name, }); seasonRequests.Add(newRequest); } } } foreach (var s in seasonRequests) { ChildRequest.SeasonRequests.Add(s); } } return(this); }