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;
            }
        }
Beispiel #2
0
        public void Start()
        {
            var fillMovies = new FillMovieExtended();

            List <MovieResult> movieExport = new List <MovieResult>();

            ServiceApi.InitializeApis();

            //for ( var year = 1954; year <= 1955; year++ )
            for (var year = 1954; year <= 1959; year++)
            //for ( var year = 1920; year <= 2013; year++ ) //Kein Film vor 1920 gefunden
            {
                if (_shouldStop)
                {
                    break;
                }

                Console.WriteLine("Import year '{0}'", year);

                var maxpage         = 1;
                var movieCollection = new List <MovieResult>();

                for (var page = 1; page <= maxpage; page++)
                {
                    Console.WriteLine("Import movies '{0}'", page);

                    RequestChecker.TmDbReadyOrWait();
                    var movieList = ServiceApi.TmdbApi.DiscoverMovie(page, "DE", true, null, year, 10, 2, "DE", "A");

                    movieCollection.AddRange(movieList.results);

                    maxpage = movieList.total_pages;
                }
                var sortedList = movieCollection.OrderByDescending(x => x.popularity);

                if (year < 1950)
                {
                    movieExport.AddRange(sortedList.Take(3));
                }
                else if (year < 1965)
                {
                    movieExport.AddRange(sortedList.Take(5));
                }
                else if (year < 1980)
                {
                    movieExport.AddRange(sortedList.Take(8));
                }
                else if (year < 1990)
                {
                    movieExport.AddRange(sortedList.Take(12));
                }
                else
                {
                    movieExport.AddRange(sortedList.Take(25));
                }
            }



            var resultList = GenerateTVTMovies(movieExport);

            foreach (var entry in resultList)
            {
                Console.WriteLine("Add result '{0}'", entry.TitleDE);
                MovieStatistics.Add(entry.Year, entry.MovieAdditional.Budget, entry.MovieAdditional.Revenue);
            }

            foreach (var entry in resultList)
            {
                Console.WriteLine("Calc rating '{0}'", entry.TitleDE);
                if (!_shouldStop)
                {
                    fillMovies.calcRating(this, entry);
                }
                Database.AddProgramme(entry);
            }

            Result = resultList;

            if (FinishEvent != null)
            {
                FinishEvent(this, new EventArgs());
            }
        }