コード例 #1
0
        /// <summary>
        /// Fetches the images.
        /// </summary>
        /// <param name="person">The person.</param>
        /// <param name="id">The id.</param>
        /// <param name="cancellationToken">The cancellation token.</param>
        /// <returns>Task.</returns>
        private async Task FetchImages(Person person, string id, CancellationToken cancellationToken)
        {
            string url = string.Format(@"http://api.themoviedb.org/3/person/{1}/images?api_key={0}", MovieDbProvider.ApiKey, id);

            PersonImages searchResult = null;

            try
            {
                using (Stream json = await HttpClient.Get(url, MovieDbProvider.Current.MovieDbResourcePool, cancellationToken).ConfigureAwait(false))
                {
                    if (json != null)
                    {
                        searchResult = JsonSerializer.DeserializeFromStream <PersonImages>(json);
                    }
                }
            }
            catch (HttpException)
            {
            }

            if (searchResult != null && searchResult.Profiles.Count > 0)
            {
                //get our language
                var profile =
                    searchResult.Profiles.FirstOrDefault(
                        p =>
                        !string.IsNullOrEmpty(p.Iso_639_1) &&
                        p.Iso_639_1.Equals(ConfigurationManager.Configuration.PreferredMetadataLanguage,
                                           StringComparison.OrdinalIgnoreCase));
                if (profile == null)
                {
                    //didn't find our language - try first null one
                    profile =
                        searchResult.Profiles.FirstOrDefault(
                            p =>
                            !string.IsNullOrEmpty(p.Iso_639_1) &&
                            p.Iso_639_1.Equals(ConfigurationManager.Configuration.PreferredMetadataLanguage,
                                               StringComparison.OrdinalIgnoreCase));
                }
                if (profile == null)
                {
                    //still nothing - just get first one
                    profile = searchResult.Profiles[0];
                }
                if (profile != null)
                {
                    var tmdbSettings = await MovieDbProvider.Current.TmdbSettings.ConfigureAwait(false);

                    var img = await DownloadAndSaveImage(person, tmdbSettings.images.base_url + ConfigurationManager.Configuration.TmdbFetchedProfileSize + profile.File_Path,
                                                         "folder" + Path.GetExtension(profile.File_Path), cancellationToken).ConfigureAwait(false);

                    if (!string.IsNullOrEmpty(img))
                    {
                        person.PrimaryImagePath = img;
                    }
                }
            }
        }
コード例 #2
0
        public IActionResult GetPersonImages(int movieId)
        {
            MovieCredits movieCredits = _creditService.GetCreditsByMovieId(movieId);

            List <PersonImages> personImagesLsit = new List <PersonImages>();

            foreach (var cast in movieCredits.cast)
            {
                PersonImages personImages = _personImagesService.GetPersonImagesByPersonId(cast.id);
                personImagesLsit.Add(personImages);
            }

            return(Ok(personImagesLsit));
        }
コード例 #3
0
        private IEnumerable <RemoteImageInfo> GetImages(PersonImages images, string preferredLanguage, string baseImageUrl)
        {
            var list = new List <RemoteImageInfo>();

            if (images.Profiles != null)
            {
                list.AddRange(images.Profiles.Select(i => new RemoteImageInfo
                {
                    ProviderName = Name,
                    Type         = ImageType.Primary,
                    Width        = i.Width,
                    Height       = i.Height,
                    Language     = GetLanguage(i),
                    Url          = baseImageUrl + i.File_Path
                }));
            }

            var language = preferredLanguage;

            var isLanguageEn = string.Equals(language, "en", StringComparison.OrdinalIgnoreCase);

            return(list.OrderByDescending(i =>
            {
                if (string.Equals(language, i.Language, StringComparison.OrdinalIgnoreCase))
                {
                    return 3;
                }

                if (!isLanguageEn)
                {
                    if (string.Equals("en", i.Language, StringComparison.OrdinalIgnoreCase))
                    {
                        return 2;
                    }
                }

                if (string.IsNullOrEmpty(i.Language))
                {
                    return isLanguageEn ? 3 : 2;
                }

                return 0;
            })
                   .ThenByDescending(i => i.CommunityRating ?? 0)
                   .ThenByDescending(i => i.VoteCount ?? 0));
        }
コード例 #4
0
 public bool Create(PersonImages personImages)
 {
     _peopleImages.InsertOne(personImages);
     return(true);
 }