示例#1
0
        private int?GetSeriesIdFromOtherCodes(SeriesSpecifier ss)
        {
            if (ss.ImdbCode.HasValue())
            {
                FindContainer?x = Client.FindAsync(FindExternalSource.Imdb, ss.ImdbCode).Result;

                if (ss.Type == MediaConfiguration.MediaType.tv)
                {
                    foreach (var show in x.TvResults)
                    {
                        return(show.Id);
                    }
                }
            }

            if (ss.TvdbSeriesId > 0)
            {
                var x = Client.FindAsync(FindExternalSource.TvDb, ss.TvdbSeriesId.ToString()).Result;

                if (ss.Type == MediaConfiguration.MediaType.tv)
                {
                    foreach (var show in x.TvResults)
                    {
                        return(show.Id);
                    }
                }
            }

            return(null);
        }
示例#2
0
        public async Task <FindContainer> FindByExternalIdAsync(
            string externalId,
            FindExternalSource source,
            string language,
            CancellationToken cancellationToken)
        {
            var key = $"find-{source.ToString()}-{externalId.ToString(CultureInfo.InvariantCulture)}-{language}";

            if (_memoryCache.TryGetValue(key, out FindContainer result))
            {
                return(result);
            }

            await EnsureClientConfigAsync().ConfigureAwait(false);

            result = await _tmDbClient.FindAsync(
                source,
                externalId,
                TmdbUtils.NormalizeLanguage(language),
                cancellationToken).ConfigureAwait(false);

            if (result != null)
            {
                _memoryCache.Set(key, result, TimeSpan.FromHours(CacheDurationInHours));
            }

            return(result);
        }
示例#3
0
        public SearchMovie GetByImdbId(string imdbId)
        {
            base.Track();
            var data = tmdbClient.FindAsync(TMDbLib.Objects.Find.FindExternalSource.Imdb, imdbId).Result;

            return(data.MovieResults[0]);
        }
示例#4
0
        public async Task <List <SearchBase> > FindAsync(string query, string language, MediaType mediaType, CancellationToken cancellationToken)
        {
            bool searchByImdbId         = Regex.IsMatch(query, @"tt\d{7}") || Regex.IsMatch(query, @"nm\d{7}");
            List <SearchBase>   results = new List <SearchBase>();
            List <SearchMovie>  movies  = null;
            List <SearchTv>     tvShows = null;
            List <SearchPerson> people  = null;

            if (searchByImdbId)
            {
                var tmdbResult = await TMDbClient.FindAsync(FindExternalSource.Imdb, query, language, cancellationToken);

                movies  = tmdbResult.MovieResults;
                tvShows = tmdbResult.TvResults;
                people  = tmdbResult.PersonResults;
            }

            switch (mediaType)
            {
            case MediaType.Movie:
                if (!searchByImdbId)
                {
                    movies = await SearchMovieAsync(query, language, 0, cancellationToken);
                }

                results.AddRange(movies.Where(x => x.Title == query).OrderByDescending(x => x.Popularity).Union(movies.Where(x => x.Title != query).OrderByDescending(x => x.Popularity)));
                break;

            case MediaType.Tv:
                if (!searchByImdbId)
                {
                    tvShows = await SearchTvShowAsync(query, language, 0, cancellationToken);
                }

                results.AddRange(tvShows.Where(x => x.Name == query).OrderByDescending(x => x.Popularity).Union(tvShows.Where(x => x.Name != query).OrderByDescending(x => x.Popularity)));
                break;

            case MediaType.Person:
                if (!searchByImdbId)
                {
                    people = await SearchPersonAsync(query, language, 0, cancellationToken);
                }

                results.AddRange(people.Where(x => x.Name == query).OrderByDescending(x => x.Popularity).Union(people.Where(x => x.Name != query).OrderByDescending(x => x.Popularity)));
                break;
            }

            return(results);
        }
示例#5
0
        public async Task TestFindImdbTvShowAsync()
        {
            FindContainer result = await TMDbClient.FindAsync(FindExternalSource.Imdb, IdHelper.ImdbBreakingBadId);

            await Verify(result);
        }
示例#6
0
        public async Task TestFindImdbPerson()
        {
            FindContainer result = await TMDbClient.FindAsync(FindExternalSource.Imdb, IdHelper.ImdbBruceWillis);

            await Verify(result);
        }
示例#7
0
        public async Task TestFindImdbMovie()
        {
            FindContainer result = await TMDbClient.FindAsync(FindExternalSource.Imdb, IdHelper.ImdbTerminatorId);

            await Verify(result);
        }