コード例 #1
0
ファイル: TvSearchEngine.cs プロジェクト: sir-marv/Ombi
        public async Task <SearchTvShowViewModel> GetShowInformation(string tvdbid, CancellationToken token)
        {
            var show = await Cache.GetOrAdd(nameof(GetShowInformation) + tvdbid,
                                            async() => await TvMazeApi.ShowLookupByTheTvDbId(int.Parse(tvdbid)), DateTime.Now.AddHours(12));

            if (show == null)
            {
                // We don't have enough information
                return(null);
            }

            var episodes = await Cache.GetOrAdd("TvMazeEpisodeLookup" + show.id,
                                                async() => await TvMazeApi.EpisodeLookup(show.id), DateTime.Now.AddHours(12));

            if (episodes == null || !episodes.Any())
            {
                // We don't have enough information
                return(null);
            }

            var mapped = Mapper.Map <SearchTvShowViewModel>(show);

            foreach (var e in episodes)
            {
                var season = mapped.SeasonRequests.FirstOrDefault(x => x.SeasonNumber == e.season);
                if (season == null)
                {
                    var newSeason = new SeasonRequests
                    {
                        SeasonNumber = e.season,
                        Episodes     = new List <EpisodeRequests>()
                    };
                    newSeason.Episodes.Add(new EpisodeRequests
                    {
                        Url           = e.url.ToHttpsUrl(),
                        Title         = e.name,
                        AirDate       = e.airstamp.HasValue() ? DateTime.Parse(e.airstamp) : DateTime.MinValue,
                        EpisodeNumber = e.number,
                    });
                    mapped.SeasonRequests.Add(newSeason);
                }
                else
                {
                    // We already have the season, so just add the episode
                    season.Episodes.Add(new EpisodeRequests
                    {
                        Url           = e.url.ToHttpsUrl(),
                        Title         = e.name,
                        AirDate       = e.airstamp.HasValue() ? DateTime.Parse(e.airstamp) : DateTime.MinValue,
                        EpisodeNumber = e.number,
                    });
                }
            }

            return(await ProcessResult(mapped, false));
        }
コード例 #2
0
        public async Task <SearchTvShowViewModel> GetShowInformation(int tvdbid)
        {
            var show = await TvMazeApi.ShowLookupByTheTvDbId(tvdbid);

            if (show == null)
            {
                // We don't have enough information
                return(null);
            }
            var episodes = await TvMazeApi.EpisodeLookup(show.id);

            if (episodes == null || !episodes.Any())
            {
                // We don't have enough information
                return(null);
            }

            var mapped = Mapper.Map <SearchTvShowViewModel>(show);

            foreach (var e in episodes)
            {
                var season = mapped.SeasonRequests.FirstOrDefault(x => x.SeasonNumber == e.season);
                if (season == null)
                {
                    var newSeason = new SeasonRequests
                    {
                        SeasonNumber = e.season,
                        Episodes     = new List <EpisodeRequests>()
                    };
                    newSeason.Episodes.Add(new EpisodeRequests
                    {
                        Url           = e.url,
                        Title         = e.name,
                        AirDate       = e.airstamp.HasValue() ? DateTime.Parse(e.airstamp) : DateTime.MinValue,
                        EpisodeNumber = e.number,
                    });
                    mapped.SeasonRequests.Add(newSeason);
                }
                else
                {
                    // We already have the season, so just add the episode
                    season.Episodes.Add(new EpisodeRequests
                    {
                        Url           = e.url,
                        Title         = e.name,
                        AirDate       = e.airstamp.HasValue() ? DateTime.Parse(e.airstamp) : DateTime.MinValue,
                        EpisodeNumber = e.number,
                    });
                }
            }
            return(await ProcessResult(mapped));
        }