示例#1
0
        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);
        }
示例#2
0
        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);
            }
        }
示例#3
0
        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);
        }
示例#4
0
        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);
        }
示例#5
0
        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);
            }
        }
示例#6
0
        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);
        }
示例#7
0
        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);
            }
        }
示例#8
0
        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);
        }