/// <summary> /// Converts a movie from MovieDB into `Item`. /// </summary> /// <param name="searchMovie"></param> /// <returns></returns> public Item ConvertMovie(SearchMovie searchMovie, int year) { return new Item { Title = searchMovie.Title, Type = "Movie", Year = year, ImageUrl = string.Format("http://image.tmdb.org/t/p/w500{0}", searchMovie.PosterPath) }; }
//============================================================= // Private methods //============================================================= private Movie GetMovie(SearchMovie movie) { var tempMovie = _client.GetMovie(movie.Id); var mTitle = movie.Title; var mYear = ExtractYear(movie.ReleaseDate); var mGenres = GenresToArray(tempMovie.Genres); ThrowIfCancelled(); return new Movie(mTitle, mYear, mGenres); }
private void MediaInfoLoadButton_Click(object sender, RoutedEventArgs e) { string searchMedia = MediaTitleInfo.Text; if (string.IsNullOrEmpty(searchMedia)) return; string selectedLang = (string) SearchLanguage.SelectedValue; if (string.IsNullOrEmpty(selectedLang)) selectedLang = "en"; string selectedCertCountry = (string) RatingCountry.SelectedValue; if (string.IsNullOrEmpty(selectedCertCountry)) selectedCertCountry = "us"; AppSettings.MovieDBLastLanguage = selectedLang; AppSettings.MovieDBLastRatingCountry = selectedCertCountry; TMDbClient client = new TMDbClient(MovieDBApiKey); FileInfo configXml = new FileInfo("TMDbconfig.xml"); if (configXml.Exists && configXml.LastWriteTimeUtc >= DateTime.UtcNow.AddHours(-1)) { Log.Info("TMDbClient: Using stored config"); string xml = File.ReadAllText(configXml.FullName, Encoding.Unicode); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(xml); client.SetConfig(TMDbSerializer.Deserialize<TMDbConfig>(xmlDoc)); } else { Log.Info("TMDbClient: Getting new config"); client.GetConfig(); Log.Info("TMDbClient: Storing config"); XmlDocument xmlDoc = TMDbSerializer.Serialize(client.Config); File.WriteAllText(configXml.FullName, xmlDoc.OuterXml, Encoding.Unicode); } SearchContainer<SearchMovie> movieList = client.SearchMovie(searchMedia, selectedLang); if (movieList == null || movieList.TotalResults <= 0) return; SearchMovie resultMovie = new SearchMovie(); if (movieList.TotalResults > 1) { MovieDBMultipleSelection selectWindow = new MovieDBMultipleSelection { Owner = this, SearchResults = movieList }; if (selectWindow.ShowDialog() == true) resultMovie = selectWindow.SelectionResult; } else resultMovie = movieList.Results.First(); if (resultMovie.Id == 0) return; Movie searchResult = client.GetMovie(resultMovie.Id, selectedLang); ImagesWithId imageList = client.GetMovieImages(resultMovie.Id); Casts movieCasts = client.GetMovieCasts(resultMovie.Id); KeywordsContainer movieKeywords = client.GetMovieKeywords(resultMovie.Id); Trailers movieTrailers = client.GetMovieTrailers(resultMovie.Id); Releases movieReleases = client.GetMovieReleases(resultMovie.Id); if (searchResult == null) return; MovieTitle.Text = searchResult.Title; MovieOriginalTitle.Text = searchResult.OriginalTitle; Genre.Text = searchResult.Genres != null ? string.Join(" / ", searchResult.Genres.ConvertAll(input => input.Name)) : string.Empty; Rating.Text = searchResult.VoteAverage.ToString("g"); Runtime.Text = searchResult.Runtime.ToString("g"); Votes.Text = searchResult.VoteCount.ToString("g"); Year.Text = searchResult.ReleaseDate.Year.ToString("g"); Tagline.Text = searchResult.Tagline; Plot.Text = searchResult.Overview; if (movieKeywords != null && movieKeywords.Keywords != null) Keywords.Text = string.Join(", ", movieKeywords.Keywords.ConvertAll(input => input.Name)); else Keywords.Text = string.Empty; ImdbId.Text = searchResult.ImdbId; Country.Text = searchResult.ProductionCountries != null ? string.Join(" / ", searchResult.ProductionCountries.ConvertAll(input => input.Name)) : string.Empty; if (movieCasts != null && movieCasts.Crew != null) { Director.Text = string.Join(" / ", movieCasts.Crew.Where(crew => crew.Job == "Director") .ToList() .ConvertAll(input => input.Name)); Writers.Text = string.Join(" / ", movieCasts.Crew.Where(crew => crew.Job == "Writer" || crew.Job == "Screenplay") .ToList() .ConvertAll(input => input.Name)); } else { Director.Text = string.Empty; Writers.Text = string.Empty; } Studio.Text = searchResult.ProductionCompanies != null ? string.Join(" / ", searchResult.ProductionCompanies.ConvertAll(input => input.Name)) : string.Empty; SetName.Text = searchResult.BelongsToCollection != null ? string.Join(" / ", searchResult.BelongsToCollection.ConvertAll(input => input.Name)) : string.Empty; if (movieTrailers != null && movieTrailers.Youtube != null && movieTrailers.Youtube.Count > 0) Trailer.Text = "plugin://plugin.video.youtube/?action=play_video&videoid=" + movieTrailers.Youtube.First().Source; else Trailer.Text = string.Empty; Country selCountry = movieReleases.Countries.Single(country => country.Iso_3166_1.ToLowerInvariant() == selectedCertCountry) ?? movieReleases.Countries.Single(country => country.Iso_3166_1.ToLowerInvariant() == "us"); MovieDBCertCountry certCountry = MovieDBCertCountries.CountryList.Single(country => country.CountryName == selectedCertCountry); MPAARating.Text = certCountry.Prefix + selCountry.Certification; // loading image sizes string posterOriginal = client.Config.Images.PosterSizes.Last(); string posterPreview = client.Config.Images.PosterSizes.Count >= 2 ? client.Config.Images.PosterSizes[client.Config.Images.PosterSizes.Count - 2] : client.Config.Images.PosterSizes.Last(); string backdropOriginal = client.Config.Images.BackdropSizes.Last(); string backdropPreview = client.Config.Images.BackdropSizes.Count >= 3 ? client.Config.Images.BackdropSizes[ client.Config.Images.BackdropSizes.Count - 3] : client.Config.Images.BackdropSizes.Last(); // remove duplicate entries imageList.Backdrops.RemoveAt(imageList.Backdrops.FindIndex(data => data.FilePath == searchResult.BackdropPath)); imageList.Posters.RemoveAt(imageList.Posters.FindIndex(data => data.FilePath == searchResult.PosterPath)); // create image lists _postersList.Add(new MovieDBPosterImage { Title = "Default", UrlOriginal = client.GetImageUrl(posterOriginal, searchResult.PosterPath).AbsoluteUri, UrlPreview = client.GetImageUrl(posterPreview, searchResult.PosterPath).AbsoluteUri }); _backdropsList.Add(new MovieDBImageInfo { Title = "Default", UrlOriginal = client.GetImageUrl(backdropOriginal, searchResult.BackdropPath).AbsoluteUri, UrlPreview = client.GetImageUrl(backdropPreview, searchResult.BackdropPath).AbsoluteUri }); int cnt = 1; foreach (ImageData poster in imageList.Posters) { _postersList.Add(new MovieDBPosterImage { Title = "Online image " + cnt, UrlOriginal = client.GetImageUrl(posterOriginal, poster.FilePath).AbsoluteUri, UrlPreview = client.GetImageUrl(posterPreview, poster.FilePath).AbsoluteUri }); cnt++; } PosterList.ItemsSource = _postersList; PosterList.SelectedIndex = 0; cnt = 1; foreach (ImageData backdrop in imageList.Backdrops) { _backdropsList.Add(new MovieDBImageInfo { Title = "Online image " + cnt, UrlOriginal = client.GetImageUrl(backdropOriginal, backdrop.FilePath).AbsoluteUri, UrlPreview = client.GetImageUrl(backdropPreview, backdrop.FilePath).AbsoluteUri }); cnt++; } BackdropList.ItemsSource = _backdropsList; BackdropList.SelectedIndex = 0; foreach (Cast cast in movieCasts.Cast) { _castList.Casts.Add(new MovieDBCast { Name = cast.Name, Role = cast.Character, Thumbnail = client.GetImageUrl("original", cast.ProfilePath).AbsoluteUri }); } CastListView.ItemsSource = _castList.Casts; }
private void OKButton_Click(object sender, RoutedEventArgs e) { if (ResultList.SelectedIndex > -1) SelectionResult = (SearchMovie)ResultList.SelectedItem; DialogResult = true; }