def smart_y_v_avg(movies, year): recent_avg = movieAvg(year=year) few_avg = movieAvg(year=year) several_avg = movieAvg(year=year) many_avg = movieAvg(year=year) for movie in movies: years_before = year - movie['year'] if years_before < 2: recent_avg.add(movie) elif years_before < 5: few_avg.add(movie) elif years_before < 9: several_avg.add(movie) else: many_avg.add(movie) return calc_smart_avg(YEAR_OPT_COEF , [item.smart_v_avg() for item in [recent_avg, few_avg, several_avg, many_avg]])
def smart_year_avg(movies, year): recent_avg = AvgMaker() few_avg = AvgMaker() several_avg = AvgMaker() many_avg = AvgMaker() for movie in movies: years_before = year - movie['year'] if years_before < 2: recent_avg.add(movie['rating']) elif years_before < 5: few_avg.add(movie['rating']) elif years_before < 9: several_avg.add(movie['rating']) else: many_avg.add(movie['rating']) return calc_smart_avg(YEAR_OPT_COEF, [item.avg() for item in [recent_avg, few_avg, several_avg, many_avg]])
def smart_votes_avg(movies, year): header = ['rating', 'known avg', 'popular avg', "very popular avg"] known_avg = AvgMaker() # 5,000 - 50,000 well_known_avg = AvgMaker() popular_avg = AvgMaker() # 50,000 - 500,000 very_popular_avg = AvgMaker() # 500,000 + # 50,000 20,000 8500 for movie in movies: if int(movie['year']) >= year: continue if int(movie['votes']) < 8000: known_avg.add(movie['rating']) elif int(movie['year']) < 20000: well_known_avg.add(movie['rating']) elif int(movie['year']) < 50000: popular_avg.add(movie['rating']) else: very_popular_avg.add(movie['rating']) return calc_smart_avg(VOTES_OPT_COEF, [item.avg() for item in [known_avg, well_known_avg, popular_avg, very_popular_avg] ])