Example #1
0
        public byte[] GetMovieCover(MovieDbMovie movieDto)
        {
            if (string.IsNullOrEmpty(movieDto.CoverUri))
            {
                return(null);
            }

            string         url = $"https://image.tmdb.org/t/p/w500/{movieDto.CoverUri}";
            HttpWebRequest webRequest;
            WebResponse    webResponse = null;

            LogManager.GetCurrentClassLogger().Info($"Getting cover from MovieDb for '{movieDto.Title}'...");

            try
            {
                webRequest = (HttpWebRequest)HttpWebRequest.Create(url);
                webRequest.AllowWriteStreamBuffering = true;
                webRequest.Timeout = 30000;

                webResponse = webRequest.GetResponse();
                Stream stream = webResponse.GetResponseStream();
                return(Utils.GetImageBytes(stream));
            }
            catch (Exception ex)
            {
                LogManager.GetCurrentClassLogger().Error(ex);
            }
            finally
            {
                webResponse?.Close();
                LogManager.GetCurrentClassLogger().Info($"Finished getting cover from MovieDb for '{movieDto.Title}'...");
            }
            return(null);
        }
Example #2
0
        public async Task FillMovieDetails(MovieDbMovie movieDto)
        {
            string url     = $"https://api.themoviedb.org/3/movie/{movieDto.ProviderMovieId}";
            var    client  = new RestClient(url);
            var    request = new RestRequest(Method.GET);

            request.AddParameter("api_key", Settings.MovieDb_ApiKey);
            request.AddParameter("language", Settings.MovieDb_Language);

            LogManager.GetCurrentClassLogger().Info($"Searching MovieDb for details on '{movieDto.Title}'...");

            try
            {
                IRestResponse <MovieDbDetails> details = await client.ExecuteAsync <MovieDbDetails>(request);

                if (details.Data != null)
                {
                    movieDto.Runtime  = details.Data.runtime;
                    movieDto.Homepage = details.Data.homepage;
                }
                LogManager.GetCurrentClassLogger().Info($"Finished searching MovieDb for details on '{movieDto.Title}'...");
            }
            catch (Exception ex)
            {
                LogManager.GetCurrentClassLogger().Error(ex);
                throw;
            }
        }
Example #3
0
        private async Task ApplyMovieSelection(MovieDbMovie movieDto)
        {
            Movie = await MovieService.ApplyDtoData(Movie, movieDto);

            OnMovieChanged?.Invoke(this, Movie);
            RaisePropertyChanged(nameof(Movie));
            RaisePropertyChanged(nameof(Genres));
        }
Example #4
0
        public async Task <Movie> ApplyDtoData(Movie movie, MovieDbMovie movieDto)
        {
            movie.Title       = movieDto.Title;
            movie.Description = movieDto.Overview;
            movie.ReleaseDate = movieDto.ReleaseDate;
            movie.LastSeen    = MoviekusDefines.MinDate;
            movie.Rating      = 0;
            movie.Runtime     = movieDto.Runtime;
            movie.Cover       = movieDto.Cover;
            movie.Homepage    = movieDto.Homepage;
            movie.Trailer     = movieDto.TrailerUrl;
            movie.MovieGenres = await AddMovieGenres(movie, movieDto.Genres);

            return(movie);
        }
Example #5
0
        public async Task FillMovieTrailer(MovieDbMovie movieDto)
        {
            string url     = $"https://api.themoviedb.org/3/movie/{movieDto.ProviderMovieId}/videos";
            var    client  = new RestClient(url);
            var    request = new RestRequest(Method.GET);

            request.AddParameter("api_key", Settings.MovieDb_ApiKey);

            LogManager.GetCurrentClassLogger().Info($"Searching MovieDb for trailer on '{movieDto.Title}'...");

            try
            {
                IRestResponse <MovieDbVideos> details = await client.ExecuteAsync <MovieDbVideos>(request);

                string trailerKey = string.Empty;

                if (details.Data != null)
                {
                    // Gibt es deutsche YouTube-Videos, nehmen wir das größte deutsche, sonst das größte englische, sonst gar nichts
                    if (details.Data.results.Any(d => d.iso_639_1 == "de"))
                    {
                        trailerKey = details.Data.results.Where(d => d.site == "YouTube" && d.iso_639_1 == "de").OrderByDescending(r => r.size).First().key;
                    }
                    else if (details.Data.results.Any(d => d.iso_639_1 == "en"))
                    {
                        trailerKey = details.Data.results.Where(d => d.site == "YouTube" && d.iso_639_1 == "en").OrderByDescending(r => r.size).First().key;
                    }

                    if (!string.IsNullOrEmpty(trailerKey))
                    {
                        movieDto.TrailerUrl = $"https://www.youtube.com/watch?v={trailerKey}";
                    }
                }

                LogManager.GetCurrentClassLogger().Info($"Finished searching MovieDb for trailer on '{movieDto.Title}'.");
            }
            catch (Exception ex)
            {
                LogManager.GetCurrentClassLogger().Error(ex);
                throw;
            }
        }
Example #6
0
        private MovieDbMovie BuildMovieDto(MovieDbDetails movieDbDetails)
        {
            MovieDbMovie movieDto = new MovieDbMovie()
            {
                ProviderMovieId = movieDbDetails.id,
                Overview        = movieDbDetails.overview,
                Title           = movieDbDetails.title,
                ReleaseDate     = movieDbDetails.release_date,
                CoverUri        = movieDbDetails.poster_path,
                Runtime         = movieDbDetails.runtime,
                Homepage        = movieDbDetails.homepage
            };

            foreach (var genre in movieDbDetails.Genres)
            {
                movieDto.Genres.Add(genre.name);
            }

            return(movieDto);
        }
Example #7
0
        private MovieDbMovie BuildMovieDto(MovieDbResult movieDbResult, MovieDbGenres movieDbGenres)
        {
            MovieDbMovie movieDto = new MovieDbMovie()
            {
                ProviderMovieId = movieDbResult.id,
                Overview        = movieDbResult.overview,
                Title           = movieDbResult.title,
                ReleaseDate     = movieDbResult.release_date,
                CoverUri        = movieDbResult.poster_path
            };

            foreach (string genreId in movieDbResult.genre_ids)
            {
                var genre = movieDbGenres.genres.Where(g => g.id == genreId).FirstOrDefault();
                if (genre != null)
                {
                    movieDto.Genres.Add(genre.name);
                }
            }

            return(movieDto);
        }