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); }
/// <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); }