def test_movie_metascore(): # correct input movie1 = Movie("Moana", 2016) movie1.metascore = 81 assert movie1.metascore == 81 # incorrect input movie2 = Movie("Frozen", 2014) movie2.metascore = 85.5 assert movie2.metascore is None
def read_csv_file(self): with open(self.__file_name, mode='r', encoding='utf-8-sig') as csvfile: movie_file_reader = csv.DictReader(csvfile) index = 0 for row in movie_file_reader: title = row["Title"] release_year = int(row["Year"]) movie = Movie(title, release_year) movie.description = row["Description"] director = row["Director"] movie.add_director(Director(director)) if Director(director) not in self.__dataset_of_directors: self.__dataset_of_directors.append(Director(director)) actors = row["Actors"].split(",") for actor in actors: movie.add_actor(Actor(actor)) if Actor(actor) not in self.__dataset_of_actors: self.__dataset_of_actors.append(Actor(actor)) genres = row["Genre"].split(",") for genre in genres: movie.add_genre(Genre(genre)) if Genre(genre) not in self.__dataset_of_genres: self.__dataset_of_genres.append(Genre(genre)) movie.runtime_minutes = int(row["Runtime (Minutes)"]) try: movie.external_rating = float(row["Rating"]) except ValueError: pass try: movie.rating_votes = int(row["Votes"]) except ValueError: pass try: movie.revenue_in_millions = float( row["Revenue (Millions)"]) except ValueError: pass try: movie.metascore = int(row["Metascore"]) except ValueError: pass self.__dataset_of_movies.append(movie) # title = row['Title'] # release_year = int(row['Year']) # print(f"Movie {index} with title: {title}, release year {release_year}") index += 1
def load_movies_and_genres(data_path: str, repo: MemoryRepository): genres = dict() directors = dict() actors = dict() for data_row in read_csv_file(os.path.join(data_path, 'Data1000Movies.csv')): movie_key = int(data_row[0]) movie_genres = data_row[2].lower().split(",") movie_directors = data_row[4].lower().split(",") movie_actors = data_row[5].lower().split(",") # Add any new genres; associate the current movie with genres. for genre in movie_genres: if genre not in genres.keys(): genres[genre] = list() genres[genre].append(movie_key) for director in movie_directors: if director not in directors.keys(): directors[director] = list() directors[director].append(movie_key) for actor in movie_actors: if actor not in actors.keys(): actors[actor] = list() actors[actor].append(movie_key) # Create Movie object. movie = Movie(title=data_row[1].lower(), year=int(data_row[6]), movie_id=int(data_row[0])) movie.description = data_row[3] movie.runtime_minutes = int(data_row[7]) movie.rating = float(data_row[8]) movie.votes = float(data_row[9]) if data_row[10] != 'N/A': movie.revenue = f"{data_row[10]}Millions" if data_row[11] != 'N/A': movie.metascore = data_row[11] # Add the Movie to the repository. repo.add_movie(movie) # Create Genre objects, associate them with Movies and add them to the repository. for genre_name in genres.keys(): genre = Genre(genre_name) for movie_id in genres[genre_name]: movie = repo.get_movie(movie_id) make_genre_association(movie, genre) repo.add_genre(genre) for director_name in directors.keys(): director = Director(director_name) for movie_id in directors[director_name]: movie = repo.get_movie(movie_id) make_director_association(movie, director) repo.add_director(director) for actor_name in actors.keys(): actor = Actor(actor_name) for movie_id in actors[actor_name]: movie = repo.get_movie(movie_id) make_actor_association(movie, actor) repo.add_actor(actor)