internal CachedMovieInfo DownloadMovieNow(int id, bool showErrorMsgBox) { Movie downloadedMovie = Client.GetMovieAsync(id, MovieMethods.ExternalIds | MovieMethods.Images | MovieMethods.AlternativeTitles | MovieMethods.ReleaseDates | MovieMethods.Changes | MovieMethods.Videos | MovieMethods.Credits).Result; if (downloadedMovie is null) { throw new ShowNotFoundException(id, "TMDB no longer has this movie", TVDoc.ProviderType.TMDB, TVDoc.ProviderType.TMDB); } CachedMovieInfo m = new CachedMovieInfo { Imdb = downloadedMovie.ExternalIds.ImdbId, TmdbCode = downloadedMovie.Id, Name = downloadedMovie.Title, Runtime = downloadedMovie.Runtime.ToString(), FirstAired = downloadedMovie.ReleaseDate, Genres = downloadedMovie.Genres.Select(genre => genre.Name).ToList(), Overview = downloadedMovie.Overview, Network = downloadedMovie.ProductionCompanies.FirstOrDefault()?.Name, Status = downloadedMovie.Status, ShowLanguage = downloadedMovie.OriginalLanguage, SiteRating = (float)downloadedMovie.VoteAverage, SiteRatingVotes = downloadedMovie.VoteCount, PosterUrl = ImageUrl(downloadedMovie.PosterPath), SrvLastUpdated = DateTime.UtcNow.Date.ToUnixTime(), CollectionName = downloadedMovie.BelongsToCollection?.Name, CollectionId = downloadedMovie.BelongsToCollection?.Id, TagLine = downloadedMovie.Tagline, Popularity = downloadedMovie.Popularity, TwitterId = downloadedMovie.ExternalIds.TwitterId, InstagramId = downloadedMovie.ExternalIds.InstagramId, FacebookId = downloadedMovie.ExternalIds.InstagramId, FanartUrl = ImageUrl(downloadedMovie.BackdropPath), ContentRating = GetCertification(downloadedMovie, "AU") ?? GetCertification(downloadedMovie, "US") ?? string.Empty,// todo allow user to choose OfficialUrl = downloadedMovie.Homepage, TrailerUrl = GetYouTubeUrl(downloadedMovie), Dirty = false, }; foreach (string?s in downloadedMovie.AlternativeTitles.Titles.Select(title => title.Title)) { m.AddAlias(s); } foreach (Cast?s in downloadedMovie.Credits.Cast) { m.AddActor(new Actor(s.Id, s.ProfilePath, s.Name, s.Character, s.CastId, s.Order)); } foreach (TMDbLib.Objects.General.Crew?s in downloadedMovie.Credits.Crew) { m.AddCrew(new Crew(s.Id, s.ProfilePath, s.Name, s.Job, s.Department, s.CreditId)); } File(m); return(m); }