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; } }
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()); } }