コード例 #1
0
        public void calcRating(MovieImporter importer, TVTProgramme movie)
        {
            var tmdbMovieDetails = importer.GetTmdbDetails(movie);
            var tomatoeDetails   = importer.GetTomatoeDetails(movie);


            if (tomatoeDetails == null)
            {
                //TODO was machen
                return;
            }

            var reviewerRate       = tomatoeDetails.Ratings.First(x => x.Type == "critics_score");
            var audienceRate1      = tomatoeDetails.Ratings.First(x => x.Type == "audience_score");
            var audienceRate2      = tmdbMovieDetails.vote_average * 10;
            var audiencePopularity = tmdbMovieDetails.popularity * 20;

            //CriticRate = Kritikerwertung
            movie.CriticsRate = Convert.ToInt32(reviewerRate.Score * 2.55);

            //SpeedRate = Nutzerwertung (+ Popularität)
            movie.ViewersRate = Convert.ToInt32((audienceRate1.Score * 0.45 + audienceRate2 * 0.45 + audiencePopularity * 0.1) * 2.55);

            //Kinokasse = Einnahmen usw. und Popularität (wenn Populär dann haben es auch meist viele gesehen)
            int boxOfficeFallback = 0;

            if (tmdbMovieDetails.revenue > 0 && tmdbMovieDetails.budget > 0)
            {
                var benefit = ((tmdbMovieDetails.revenue / tmdbMovieDetails.budget) - 1) * 20;
                if (benefit > 100)
                {
                    benefit = 100;
                }
                else if (benefit < 0)
                {
                    benefit = 0;
                }

                boxOfficeFallback = Convert.ToInt32((benefit * 0.8 + audiencePopularity * 0.2) * 2.55);
            }
            else
            {
                boxOfficeFallback = 75 + Convert.ToInt32((audienceRate1.Score * 0.1 + audiencePopularity * 0.9) * 1.5);
            }


            var topRevenue = MovieStatistics.TopRevenue(movie.Year);

            if (topRevenue.HasValue && tmdbMovieDetails.revenue > 0)
            {
                var boxOfficeTemp = tmdbMovieDetails.revenue / (topRevenue.Value * 0.9);
                movie.BoxOfficeRate = Convert.ToInt32((boxOfficeTemp * 0.8 + 1 * 0.2) * 255);
                movie.BoxOfficeRate = Convert.ToInt32(movie.BoxOfficeRate * 0.8 + boxOfficeFallback * 0.2);
            }
            else
            {
                movie.BoxOfficeRate = boxOfficeFallback;
            }
        }
コード例 #2
0
        public void LoadDetailsFromTmDB(MovieImporter importer, TVTProgramme movie, MovieResult tmdbMovie)
        {
            movie.TmdbId  = tmdbMovie.id;
            movie.TitleDE = tmdbMovie.title;
            movie.TitleEN = tmdbMovie.original_title;

            var tmdbMovieDetails = importer.GetTmdbDetails(movie);

            movie.ImdbId = tmdbMovieDetails.imdb_id;

            var tomatoeDetails = importer.GetTomatoeDetails(movie);

            movie.RottenTomatoesId = tomatoeDetails.RottenTomatoesId;



            RequestChecker.TmDbReadyOrWait();
            var tmdbMovieCast = ServiceApi.TmdbApi.GetMovieCast(tmdbMovie.id);



            movie.TitleDE                 = tmdbMovie.title;
            movie.TitleEN                 = tmdbMovieDetails.original_title;
            movie.DescriptionMovieDB      = tmdbMovieDetails.tagline;
            movie.TmdbId                  = tmdbMovie.id;
            movie.ImdbId                  = tmdbMovieDetails.imdb_id;
            movie.ImageUrl                = @"https://d3gtl9l2a4fn1j.cloudfront.net/t/p/original" + tmdbMovieDetails.backdrop_path;
            movie.MovieAdditional.Budget  = tmdbMovieDetails.budget;
            movie.MovieAdditional.Revenue = tmdbMovieDetails.revenue;


            var castCounter = 1;

            movie.Staff = new IndexingList <TVTStaff>();
            foreach (var cast in tmdbMovieCast.cast)
            {
                if (castCounter > 3)
                {
                    break;
                }

                var person = importer.RegisterActor(cast);
                if (person != null)
                {
                    movie.Staff.Add(new TVTStaff(person, TVTPersonFunction.Actor));
                }

                castCounter++;
            }

            foreach (var crew in tmdbMovieCast.crew)
            {
                if (crew.department != "Directing")
                {
                    break;
                }

                var person = importer.RegisterDirector(crew);
                movie.Staff.Add(new TVTStaff(person, TVTPersonFunction.Director));

                break;
            }

            foreach (var currCountry in tmdbMovieDetails.production_countries)
            {
                if (movie.Country == null)
                {
                    movie.Country = currCountry.iso_3166_1;
                }
                else
                {
                    movie.Country = currCountry.iso_3166_1 + ", " + currCountry.iso_3166_1;
                }
            }

            movie.Year = DateTime.Parse(tmdbMovieDetails.release_date).Year;

            var genreChecker = new GenreChecker();

            movie.MainGenre = genreChecker.GetGenre(tmdbMovieDetails.genres);
            //TODO: Subgenre

            var runtime = tmdbMovieDetails.runtime;

            if (runtime == 0)
            {
                if (tomatoeDetails != null && tomatoeDetails.Runtime.HasValue)
                {
                    runtime = tomatoeDetails.Runtime.Value;
                }
                else
                {
                    runtime = 120;                     //Dann 2 Blocks
                }
            }

            if (runtime < 85)
            {
                movie.Blocks = 1;
            }
            else if (runtime < 145)
            {
                movie.Blocks = 2;
            }
            else if (runtime < 205)
            {
                movie.Blocks = 3;
            }
            else if (runtime < 265)
            {
                movie.Blocks = 4;
            }
            else
            {
                movie.Blocks = 5;
            }

            //priceRate = 10;
            //criticRate = 11;
            //speedRate = 12;
            //boxOfficeRate = 13;
        }