def read_csv_file(self): with open(self.__file_name, mode='r', encoding='utf-8-sig') as csvfile: movie_file_reader = csv.DictReader(csvfile) for row in movie_file_reader: try: rank = int(row['Rank']) except ValueError: rank = None title = row['Title'] genres = row['Genre'].split(',') description = row['Description'] actors = row['Actors'].split(',') try: release_year = int(row['Year']) except ValueError: release_year = None try: run_time = int(row['Runtime (Minutes)']) except ValueError: run_time = None try: rating = int(row['Rating']) except ValueError: rating = 0 try: votes = int(row['Votes']) except ValueError: votes = 0 director = Director(row['Director']) try: revenue = float(row['Revenue (Millions)']) except ValueError: revenue = None try: metascore = int(row['Metascore']) except ValueError: metascore = None mov = Movie(title, release_year) mov.director = director mov.description = description mov.metascore = metascore mov.rank = rank mov.runtime_minutes = run_time mov.rating = rating mov.votes = votes mov.revenue = revenue self.load_actors(mov, actors) if director not in self.__directors: self.__directors.add(director) self.load_genres(mov, genres) if mov not in self.__movies: self.__movies.append(mov)
def read_csv_file(self): with open(self.__file_name, mode='r', encoding='utf-8-sig') as csvfile: movie_file_reader = csv.DictReader(csvfile) for row in movie_file_reader: title = row['Title'] release_year = int(row['Year']) actors_list = row['Actors'] director = row['Director'] genres_list = row['Genre'] movie = Movie(title, release_year) if movie not in self.__dataset_of_movies: self.__dataset_of_movies.append(movie) for actor in actors_list.split(','): if Actor(actor) not in self.__dataset_of_actors: self.__dataset_of_actors.add(Actor(actor)) if Director(director) not in self.__dataset_of_directors: self.__dataset_of_directors.add(Director(director)) for genre in genres_list.split(','): movie.genres.append(Genre(genre)) if Genre(genre) not in self.__dataset_of_genres: self.__dataset_of_genres.add(Genre(genre)) rank = row['Rank'] if int(rank) > 0: movie.rank = rank rating = row['Rating'] if 0 <= float(rating) <= 10: movie.rating = rating votes = row['Votes'] movie.votes = int(votes) revenue_millions = row['Revenue (Millions)'] movie.revenue_millions = revenue_millions metascore = row['Metascore'] try: if 0 <= float(metascore) <= 100: movie.metascore = metascore except ValueError: movie.metascore = metascore
def test_repository_can_add_movie(in_memory_repo): movie = Movie("testing", 2020) movie.rank = 1001 in_memory_repo.add_movie(movie) assert in_memory_repo.get_movie(1001) is movie
def load_movies_and_actors_genres_director(data_path: str, repo: MemoryRepository): actor_dict = dict() genre_dict = dict() directors = dict() for data_row in read_csv_file(os.path.join(data_path, 'Data1000Movies.csv')): movie_key = int(data_row[0]) genres = data_row[2] actors = data_row[5] director = data_row[4] genre_list = genres.rsplit(",") actor_list = actors.rsplit(",") for genre in genre_list: if genre not in genre_dict.keys(): genre_dict[genre] = list() genre_dict[genre].append(movie_key) for actor in actor_list: if actor not in actor_dict.keys(): actor_dict[actor] = list() actor_dict[actor].append(movie_key) if director not in directors.keys(): directors[director] = list() directors[director].append(movie_key) movie = Movie(data_row[1], int(data_row[6])) movie.rank = movie_key movie.description = data_row[3] movie.runtime_minutes = int(data_row[7]) if data_row[8] != "N/A": movie.rating = float(data_row[8]) if data_row[9] != "N/A": movie.votes = int(data_row[9]) if data_row[10] != "N/A": movie.revenue = float(data_row[10]) if data_row[11] != "N/A": movie.metascore = float(data_row[11]) repo.add_movie(movie) for genre_name in genre_dict.keys(): genre = Genre(genre_name) for movie_id in genre_dict[genre_name]: movie = repo.get_movie(movie_id) genre.add_movie(movie) movie.add_genre(genre) repo.add_genre(genre) for actor_name in actor_dict.keys(): actor = Actor(actor_name) for movie_id in actor_dict[actor_name]: movie = repo.get_movie(movie_id) actor.add_movie(movie) movie.add_actor(actor) repo.add_actor(actor) for director_name in directors.keys(): director = Director(director_name) for movie_id in directors[director_name]: movie = repo.get_movie(movie_id) director.add_movie(movie) movie.director = director repo.add_director(director)
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: # Read in Title title = row['Title'] # Read in Year release_year = int(row['Year']) movie = Movie(title, release_year) self.__dataset_of_movies.append(movie) # Read in description description = row["Description"] movie.description = description # Read in runtime runtime = row["Runtime (Minutes)"] movie.runtime_minutes = int(runtime) # Read in Actors actors = row['Actors'] actor = actors.split(",") for i in actor: actor = i.strip() movie.add_actor(Actor(actor)) self.__dataset_of_actors.add(Actor(actor)) # Read in Directors director = row['Director'] movie.director = Director(director) self.__dataset_of_directors.add(Director(director)) # Read in Genre genres = row['Genre'] genre = genres.split(",") for i in genre: a = i.strip() movie.add_genre(Genre(a)) self.__dataset_of_genres.add(Genre(a)) # Read in Rank rank = row["Rank"] movie.rank = rank # Read in Rating rating = row["Rating"] movie.rating = rating # Read in Votes vote = row["Votes"] movie.votes = vote # Read in revenue revenue = row["Revenue (Millions)"] movie.revenue = revenue # Read in meta_scores metascore = row["Metascore"] movie.metascore = metascore index += 1