public override async Task <bool> UpdateFromOnlineMovieAsync(MovieInfo movie, string language, bool cacheOnly)
        {
            try
            {
                SimApiMovie movieDetail = null;
                if (!string.IsNullOrEmpty(movie.ImdbId))
                {
                    movieDetail = await _simApiHandler.GetMovieAsync(movie.ImdbId, cacheOnly).ConfigureAwait(false);
                }
                if (movieDetail == null)
                {
                    return(false);
                }

                movie.ImdbId    = movieDetail.ImdbID;
                movie.MovieName = new SimpleTitle(movieDetail.Title, true);
                movie.Summary   = new SimpleTitle(movieDetail.Plot, true);

                CertificationMapping cert = null;
                if (CertificationMapper.TryFindMovieCertification(movieDetail.Rated, out cert))
                {
                    movie.Certification = cert.CertificationId;
                }

                movie.Runtime     = movieDetail.Duration.HasValue ? movieDetail.Duration.Value : 0;
                movie.ReleaseDate = movieDetail.Year.HasValue ? (DateTime?)new DateTime(movieDetail.Year.Value, 1, 1) : null;

                if (movieDetail.ImdbRating.HasValue)
                {
                    MetadataUpdater.SetOrUpdateRatings(ref movie.Rating, new SimpleRating(movieDetail.ImdbRating, 1));
                }

                movie.Genres = movieDetail.Genres.Where(s => !string.IsNullOrEmpty(s?.Trim())).Select(s => new GenreInfo {
                    Name = s.Trim()
                }).ToList();

                //Only use these if absolutely necessary because there is no way to ID them
                if (movie.Actors.Count == 0)
                {
                    movie.Actors = ConvertToPersons(movieDetail.Actors, PersonAspect.OCCUPATION_ACTOR, movieDetail.Title);
                }
                if (movie.Writers.Count == 0)
                {
                    movie.Writers = ConvertToPersons(movieDetail.Writers, PersonAspect.OCCUPATION_WRITER, movieDetail.Title);
                }
                //if (movie.Directors.Count == 0)
                //  movie.Directors = ConvertToPersons(movieDetail.Directors, PersonAspect.OCCUPATION_DIRECTOR, movieDetail.Title);

                return(true);
            }
            catch (Exception ex)
            {
                ServiceRegistration.Get <ILogger>().Debug("SimApiWrapper: Exception while processing movie {0}", ex, movie.ToString());
                return(false);
            }
        }
        protected async Task <ApiWrapperImageCollection <string> > GetMovieFanArtAsync(MovieInfo movie)
        {
            if (movie == null || string.IsNullOrEmpty(movie.ImdbId))
            {
                return(null);
            }
            SimApiMovie movieDetail = await _simApiHandler.GetMovieAsync(movie.ImdbId, false).ConfigureAwait(false);

            if (movieDetail == null || string.IsNullOrEmpty(movieDetail.PosterUrl))
            {
                return(null);
            }
            ApiWrapperImageCollection <string> images = new ApiWrapperImageCollection <string>();

            images.Id = movie.ImdbId;
            images.Posters.Add(movieDetail.PosterUrl);
            return(images);
        }
Beispiel #3
0
        /// <summary>
        /// Returns detailed information for a single <see cref="SimApiMovie"/> with given <paramref name="id"/>. This method caches request
        /// to same movies using the cache path given in <see cref="SimApiV1"/> constructor.
        /// </summary>
        /// <param name="id">IMDB id of movie</param>
        /// <returns>Movie information</returns>
        public async Task <SimApiMovie> GetMovieAsync(string id, bool cacheOnly)
        {
            string      cache       = CreateAndGetCacheName(id, "Movie");
            SimApiMovie returnValue = null;

            if (!string.IsNullOrEmpty(cache) && File.Exists(cache))
            {
                returnValue = await _downloader.ReadCacheAsync <SimApiMovie>(cache).ConfigureAwait(false);
            }
            else
            {
                if (cacheOnly)
                {
                    return(null);
                }
                string url = GetUrl(URL_GETIMDBIDMOVIE, id.StartsWith("tt", System.StringComparison.InvariantCultureIgnoreCase) ? id.Substring(2) : id);
                returnValue = await _downloader.DownloadAsync <SimApiMovie>(url, cache).ConfigureAwait(false);
            }
            if (returnValue == null)
            {
                return(null);
            }
            return(returnValue);
        }