public static async Task <List <TvMazeSeries> > GetAllShowsInFile() { List <string> lstShowNamesFromFile = new List <string>(); _client.DefaultRequestHeaders.Accept.Clear(); _client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); List <TvMazeSeries> lstAllShowes = new List <TvMazeSeries>(); string line; System.IO.StreamReader file = new System.IO.StreamReader(@"assets\Shows.txt"); while ((line = file.ReadLine()) != null) { lstShowNamesFromFile.Add(line); } file.Close(); foreach (string show in lstShowNamesFromFile) { TvMazeSeries showByName = await GetShowAsync(SINGLESSEARCH_PATH, show); lstAllShowes.Add(showByName); } TvMazeReports.createTop10Report(lstAllShowes); TvMazeReports.createSummaryReport(lstAllShowes); return(lstAllShowes); }
public override async Task <bool> UpdateFromOnlineSeriesSeasonAsync(SeasonInfo season, string language, bool cacheOnly) { try { TvMazeSeries seriesDetail = null; TvMazeSeason seasonDetail = null; if (season.SeriesTvMazeId > 0) { seriesDetail = await _tvMazeHandler.GetSeriesAsync(season.SeriesTvMazeId, cacheOnly).ConfigureAwait(false); } if (seriesDetail == null) { return(false); } if (season.SeriesTvMazeId > 0 && season.SeasonNumber.HasValue) { List <TvMazeSeason> seasons = await _tvMazeHandler.GetSeriesSeasonsAsync(season.SeriesTvMazeId, cacheOnly).ConfigureAwait(false); if (seasons != null) { seasonDetail = seasons.Where(s => s.SeasonNumber == season.SeasonNumber).FirstOrDefault(); } } if (seasonDetail == null) { return(false); } season.TvMazeId = seasonDetail.Id; season.SeriesTvMazeId = seriesDetail.Id; season.SeriesImdbId = seriesDetail.Externals.ImDbId; season.SeriesTvdbId = seriesDetail.Externals.TvDbId ?? 0; season.SeriesTvRageId = seriesDetail.Externals.TvRageId ?? 0; season.SeriesName = new SimpleTitle(seriesDetail.Name, true); season.FirstAired = seasonDetail.PremiereDate; season.SeasonNumber = seasonDetail.SeasonNumber; season.TotalEpisodes = seasonDetail.EpisodeCount ?? 0; if (!season.DataProviders.Contains(_name)) { season.DataProviders.Add(_name); } return(true); } catch (Exception ex) { ServiceRegistration.Get <ILogger>().Debug("TvMazeWrapper: Exception while processing season {0}", ex, season.ToString()); return(false); } }
static async Task <TvMazeSeries> GetShowAsync(string path, string showeName) { string responseAsString; TvMazeSeries show = null; HttpResponseMessage response = await _client.GetAsync(path + showeName + "&embed=episodes"); if (response.IsSuccessStatusCode) { responseAsString = await response.Content.ReadAsStringAsync(); show = JsonConvert.DeserializeObject <TvMazeSeries>(responseAsString); } return(show); }
protected async Task <ApiWrapperImageCollection <TvMazeImageCollection> > GetSeriesFanArtAsync(SeriesInfo series) { if (series == null || series.TvMazeId < 1) { return(null); } TvMazeSeries seriesDetail = await _tvMazeHandler.GetSeriesAsync(series.TvMazeId, false).ConfigureAwait(false); if (seriesDetail == null) { return(null); } ApiWrapperImageCollection <TvMazeImageCollection> images = new ApiWrapperImageCollection <TvMazeImageCollection>(); images.Id = series.TvMazeId.ToString(); images.Posters.Add(seriesDetail.Images); return(images); }
public override async Task <bool> UpdateFromOnlineSeriesCharacterAsync(SeriesInfo seriesInfo, CharacterInfo character, string language, bool cacheOnly) { try { TvMazeSeries seriesDetail = null; if (seriesInfo.TvMazeId > 0) { seriesDetail = await _tvMazeHandler.GetSeriesAsync(seriesInfo.TvMazeId, cacheOnly).ConfigureAwait(false); } if (seriesDetail == null) { return(false); } if (seriesDetail.Embedded != null) { if (seriesDetail.Embedded.Cast != null) { List <CharacterInfo> characters = ConvertToCharacters(seriesDetail.Embedded.Cast, seriesDetail.Name); int index = characters.IndexOf(character); if (index >= 0) { character.ActorTvMazeId = characters[index].ActorTvMazeId; character.ActorName = characters[index].ActorName; character.Name = characters[index].Name; character.Order = characters[index].Order; character.ParentMediaName = seriesDetail.Name; if (!character.DataProviders.Contains(_name)) { character.DataProviders.Add(_name); } return(true); } } } return(false); } catch (Exception ex) { ServiceRegistration.Get <ILogger>().Debug("TvMazeWrapper: Exception while processing character {0}", ex, character.ToString()); return(false); } }
public override async Task <List <EpisodeInfo> > SearchSeriesEpisodeAsync(EpisodeInfo episodeSearch, string language) { SeriesInfo seriesSearch = episodeSearch.CloneBasicInstance <SeriesInfo>(); if (episodeSearch.SeriesTvMazeId <= 0) { if (!await SearchSeriesUniqueAndUpdateAsync(seriesSearch, language).ConfigureAwait(false)) { return(null); } episodeSearch.CopyIdsFrom(seriesSearch); } List <EpisodeInfo> episodes = null; if (episodeSearch.SeriesTvMazeId > 0 && episodeSearch.SeasonNumber.HasValue) { TvMazeSeries seriesDetail = await _tvMazeHandler.GetSeriesAsync(episodeSearch.SeriesTvMazeId, false).ConfigureAwait(false); List <TvMazeEpisode> seasonEpisodes = null; if (seriesDetail.Embedded != null && seriesDetail.Embedded.Episodes != null) { seasonEpisodes = seriesDetail.Embedded.Episodes.Where(s => s.SeasonNumber == episodeSearch.SeasonNumber.Value).ToList(); } foreach (TvMazeEpisode episode in seasonEpisodes) { if (episodeSearch.EpisodeNumbers.Contains(episode.EpisodeNumber) || episodeSearch.EpisodeNumbers.Count == 0) { if (episodes == null) { episodes = new List <EpisodeInfo>(); } EpisodeInfo info = new EpisodeInfo() { TvMazeId = episode.Id, SeriesName = seriesSearch.SeriesName, SeasonNumber = episode.SeasonNumber, EpisodeName = new SimpleTitle(episode.Name, true), DataProviders = new List <string>() { _name } }; info.EpisodeNumbers.Add(episode.EpisodeNumber); info.CopyIdsFrom(seriesSearch); episodes.Add(info); } } } if (episodes == null) { episodes = new List <EpisodeInfo>(); EpisodeInfo info = new EpisodeInfo() { SeriesName = seriesSearch.SeriesName, SeasonNumber = episodeSearch.SeasonNumber, EpisodeName = episodeSearch.EpisodeName, DataProviders = new List <string>() { _name } }; info.CopyIdsFrom(seriesSearch); info.EpisodeNumbers = info.EpisodeNumbers.Union(episodeSearch.EpisodeNumbers).ToList(); episodes.Add(info); } return(episodes); }
public override async Task <bool> UpdateFromOnlineSeriesEpisodeAsync(EpisodeInfo episode, string language, bool cacheOnly) { try { List <EpisodeInfo> episodeDetails = new List <EpisodeInfo>(); TvMazeEpisode episodeDetail = null; TvMazeSeries seriesDetail = null; if (episode.SeasonNumber.HasValue && episode.EpisodeNumbers.Count > 0) { if (episode.SeriesTvMazeId > 0) { seriesDetail = await _tvMazeHandler.GetSeriesAsync(episode.SeriesTvMazeId, cacheOnly).ConfigureAwait(false); } if (seriesDetail == null && !string.IsNullOrEmpty(episode.SeriesImdbId)) { seriesDetail = await _tvMazeHandler.GetSeriesByImDbAsync(episode.SeriesImdbId, cacheOnly).ConfigureAwait(false); } if (seriesDetail == null && episode.SeriesTvdbId > 0) { seriesDetail = await _tvMazeHandler.GetSeriesByTvDbAsync(episode.SeriesTvdbId, cacheOnly).ConfigureAwait(false); } if (seriesDetail == null) { return(false); } foreach (int episodeNumber in episode.EpisodeNumbers) { episodeDetail = await _tvMazeHandler.GetSeriesEpisodeAsync(episode.SeriesTvMazeId, episode.SeasonNumber.Value, episodeNumber, cacheOnly).ConfigureAwait(false); if (episodeDetail == null) { continue; } if (episodeDetail.EpisodeNumber <= 0) { continue; } EpisodeInfo info = new EpisodeInfo() { TvMazeId = episodeDetail.Id, SeriesTvMazeId = seriesDetail.Id, SeriesImdbId = seriesDetail.Externals.ImDbId, SeriesTvdbId = seriesDetail.Externals.TvDbId ?? 0, SeriesTvRageId = seriesDetail.Externals.TvRageId ?? 0, SeriesName = new SimpleTitle(seriesDetail.Name, true), SeriesFirstAired = seriesDetail.Premiered, SeasonNumber = episodeDetail.SeasonNumber, EpisodeNumbers = new List <int>(new int[] { episodeDetail.EpisodeNumber }), FirstAired = episodeDetail.AirDate, EpisodeName = new SimpleTitle(episodeDetail.Name, true), Summary = new SimpleTitle(episodeDetail.Summary, true), Genres = seriesDetail.Genres.Where(s => !string.IsNullOrEmpty(s?.Trim())).Select(s => new GenreInfo { Name = s.Trim() }).ToList(), DataProviders = new List <string>() { _name } }; if (seriesDetail.Embedded != null && seriesDetail.Embedded.Cast != null) { info.Actors = ConvertToPersons(seriesDetail.Embedded.Cast, PersonAspect.OCCUPATION_ACTOR, seriesDetail.Name); info.Characters = ConvertToCharacters(seriesDetail.Embedded.Cast, seriesDetail.Name); } episodeDetails.Add(info); } } if (!episode.DataProviders.Contains(_name)) { episode.DataProviders.Add(_name); } if (episodeDetails.Count > 1) { SetMultiEpisodeDetails(episode, episodeDetails); return(true); } else if (episodeDetails.Count > 0) { SetEpisodeDetails(episode, episodeDetails[0]); return(true); } return(false); } catch (Exception ex) { ServiceRegistration.Get <ILogger>().Debug("TvMazeWrapper: Exception while processing episode {0}", ex, episode.ToString()); return(false); } }
public override async Task <bool> UpdateFromOnlineSeriesAsync(SeriesInfo series, string language, bool cacheOnly) { try { TvMazeSeries seriesDetail = null; if (series.TvMazeId > 0) { seriesDetail = await _tvMazeHandler.GetSeriesAsync(series.TvMazeId, cacheOnly).ConfigureAwait(false); } if (seriesDetail == null && !string.IsNullOrEmpty(series.ImdbId)) { seriesDetail = await _tvMazeHandler.GetSeriesByImDbAsync(series.ImdbId, cacheOnly).ConfigureAwait(false); } if (seriesDetail == null && series.TvdbId > 0) { seriesDetail = await _tvMazeHandler.GetSeriesByTvDbAsync(series.TvdbId, cacheOnly).ConfigureAwait(false); } if (seriesDetail == null) { return(false); } series.TvMazeId = seriesDetail.Id; series.TvdbId = seriesDetail.Externals.TvDbId ?? 0; series.TvRageId = seriesDetail.Externals.TvRageId ?? 0; series.ImdbId = seriesDetail.Externals.ImDbId; series.SeriesName = new SimpleTitle(seriesDetail.Name, true); series.FirstAired = seriesDetail.Premiered; series.Description = new SimpleTitle(seriesDetail.Summary, true); series.Rating = new SimpleRating(seriesDetail.Rating != null && seriesDetail.Rating.Rating.HasValue ? seriesDetail.Rating.Rating.Value : 0); series.Genres = seriesDetail.Genres.Where(s => !string.IsNullOrEmpty(s?.Trim())).Select(s => new GenreInfo { Name = s.Trim() }).ToList(); series.Networks = ConvertToCompanies(seriesDetail.Network ?? seriesDetail.WebNetwork, CompanyAspect.COMPANY_TV_NETWORK); if (seriesDetail.Status.IndexOf("Ended", StringComparison.InvariantCultureIgnoreCase) >= 0) { series.IsEnded = true; } if (seriesDetail.Embedded != null) { if (seriesDetail.Embedded.Cast != null) { series.Actors = ConvertToPersons(seriesDetail.Embedded.Cast, PersonAspect.OCCUPATION_ACTOR, seriesDetail.Name); series.Characters = ConvertToCharacters(seriesDetail.Embedded.Cast, seriesDetail.Name); } if (seriesDetail.Embedded.Episodes != null) { foreach (TvMazeEpisode episodeDetail in seriesDetail.Embedded.Episodes) { SeasonInfo seasonInfo = new SeasonInfo() { SeriesTvMazeId = seriesDetail.Id, SeriesImdbId = seriesDetail.Externals.ImDbId, SeriesTvdbId = seriesDetail.Externals.TvDbId ?? 0, SeriesTvRageId = seriesDetail.Externals.TvRageId ?? 0, SeriesName = new SimpleTitle(seriesDetail.Name, true), SeasonNumber = episodeDetail.SeasonNumber, FirstAired = episodeDetail.AirDate, TotalEpisodes = seriesDetail.Embedded.Episodes.FindAll(e => e.SeasonNumber == episodeDetail.SeasonNumber).Count, DataProviders = new List <string>() { _name } }; if (!series.Seasons.Contains(seasonInfo)) { series.Seasons.Add(seasonInfo); } EpisodeInfo info = new EpisodeInfo() { TvMazeId = episodeDetail.Id, SeriesTvMazeId = seriesDetail.Id, SeriesImdbId = seriesDetail.Externals.ImDbId, SeriesTvdbId = seriesDetail.Externals.TvDbId ?? 0, SeriesTvRageId = seriesDetail.Externals.TvRageId ?? 0, SeriesName = new SimpleTitle(seriesDetail.Name, true), SeriesFirstAired = seriesDetail.Premiered, SeasonNumber = episodeDetail.SeasonNumber, EpisodeNumbers = new List <int>(new int[] { episodeDetail.EpisodeNumber }), FirstAired = episodeDetail.AirDate, EpisodeName = new SimpleTitle(episodeDetail.Name, true), Summary = new SimpleTitle(episodeDetail.Summary, true), Genres = seriesDetail.Genres.Where(s => !string.IsNullOrEmpty(s?.Trim())).Select(s => new GenreInfo { Name = s.Trim() }).ToList(), DataProviders = new List <string>() { _name } }; info.Actors = series.Actors.ToList(); info.Characters = series.Characters.ToList(); series.Episodes.Add(info); } series.TotalSeasons = series.Seasons.Count; series.TotalEpisodes = series.Episodes.Count; TvMazeEpisode nextEpisode = seriesDetail.Embedded.Episodes.Where(e => e.AirDate > DateTime.Now).FirstOrDefault(); if (nextEpisode != null) { series.NextEpisodeName = new SimpleTitle(nextEpisode.Name, true); series.NextEpisodeAirDate = nextEpisode.AirStamp; series.NextEpisodeSeasonNumber = nextEpisode.SeasonNumber; series.NextEpisodeNumber = nextEpisode.EpisodeNumber; } if (!series.DataProviders.Contains(_name)) { series.DataProviders.Add(_name); } } } return(true); } catch (Exception ex) { ServiceRegistration.Get <ILogger>().Debug("TvMazeWrapper: Exception while processing series {0}", ex, series.ToString()); return(false); } }
public override bool SearchSeriesEpisode(EpisodeInfo episodeSearch, string language, out List <EpisodeInfo> episodes) { episodes = null; SeriesInfo seriesSearch = episodeSearch.CloneBasicInstance <SeriesInfo>(); if (episodeSearch.SeriesTvMazeId <= 0) { if (!SearchSeriesUniqueAndUpdate(seriesSearch, language)) { return(false); } episodeSearch.CopyIdsFrom(seriesSearch); } if (episodeSearch.SeriesTvMazeId > 0 && episodeSearch.SeasonNumber.HasValue) { TvMazeSeries seriesDetail = _tvMazeHandler.GetSeries(episodeSearch.SeriesTvMazeId, false); List <TvMazeEpisode> seasonEpisodes = null; if (seriesDetail.Embedded != null && seriesDetail.Embedded.Episodes != null) { seasonEpisodes = seriesDetail.Embedded.Episodes.Where(s => s.SeasonNumber == episodeSearch.SeasonNumber.Value).ToList(); } foreach (TvMazeEpisode episode in seasonEpisodes) { if (episodeSearch.EpisodeNumbers.Contains(episode.EpisodeNumber) || episodeSearch.EpisodeNumbers.Count == 0) { if (episodes == null) { episodes = new List <EpisodeInfo>(); } EpisodeInfo info = new EpisodeInfo() { TvMazeId = episode.Id, SeriesName = seriesSearch.SeriesName, SeasonNumber = episode.SeasonNumber, EpisodeName = new SimpleTitle(episode.Name, true), }; info.EpisodeNumbers.Add(episode.EpisodeNumber); info.CopyIdsFrom(seriesSearch); episodes.Add(info); } } } if (episodes == null) { episodes = new List <EpisodeInfo>(); EpisodeInfo info = new EpisodeInfo() { SeriesName = seriesSearch.SeriesName, SeasonNumber = episodeSearch.SeasonNumber, EpisodeName = episodeSearch.EpisodeName, }; info.CopyIdsFrom(seriesSearch); CollectionUtils.AddAll(info.EpisodeNumbers, episodeSearch.EpisodeNumbers); episodes.Add(info); return(true); } return(episodes != null); }
public override bool GetFanArt <T>(T infoObject, string language, string fanartMediaType, out ApiWrapperImageCollection <TvMazeImageCollection> images) { images = new ApiWrapperImageCollection <TvMazeImageCollection>(); try { if (fanartMediaType == FanArtMediaTypes.Series) { EpisodeInfo episode = infoObject as EpisodeInfo; SeasonInfo season = infoObject as SeasonInfo; SeriesInfo series = infoObject as SeriesInfo; if (series == null && season != null) { series = season.CloneBasicInstance <SeriesInfo>(); } if (series == null && episode != null) { series = episode.CloneBasicInstance <SeriesInfo>(); } if (series != null && series.TvMazeId > 0) { // Download all image information, filter later! TvMazeSeries seriesDetail = _tvMazeHandler.GetSeries(series.TvMazeId, false); if (seriesDetail != null) { images.Id = series.TvMazeId.ToString(); images.Posters.Add(seriesDetail.Images); return(true); } } } else if (fanartMediaType == FanArtMediaTypes.Episode) { EpisodeInfo episode = infoObject as EpisodeInfo; if (episode != null && episode.SeriesTvMazeId > 0 && episode.SeasonNumber.HasValue && episode.EpisodeNumbers.Count > 0) { // Download all image information, filter later! TvMazeEpisode episodeDetail = _tvMazeHandler.GetSeriesEpisode(episode.SeriesTvMazeId, episode.SeasonNumber.Value, episode.FirstEpisodeNumber, false); if (episodeDetail != null) { images.Id = episode.SeriesTvMazeId.ToString(); images.Thumbnails.Add(episodeDetail.Images); return(true); } } } else if (fanartMediaType == FanArtMediaTypes.Actor) { PersonInfo person = infoObject as PersonInfo; if (person != null && person.TvMazeId > 0) { // Download all image information, filter later! TvMazePerson personDetail = _tvMazeHandler.GetPerson(person.TvMazeId, false); if (personDetail != null) { images.Id = person.TvMazeId.ToString(); images.Thumbnails.Add(personDetail.Images); return(true); } } } else if (fanartMediaType == FanArtMediaTypes.Character) { CharacterInfo character = infoObject as CharacterInfo; if (character != null && character.TvMazeId > 0) { // Download all image information, filter later! TvMazePerson personDetail = _tvMazeHandler.GetCharacter(character.TvMazeId, false); if (personDetail != null) { images.Id = character.TvMazeId.ToString(); images.Thumbnails.Add(personDetail.Images); return(true); } } } else { return(true); } } catch (Exception ex) { ServiceRegistration.Get <ILogger>().Debug(GetType().Name + ": Exception downloading images", ex); } return(false); }