def get_genre(self, genre_name) -> Genre: genre = None try: genre = self.__genres_dict[Genre(genre_name)] except KeyError: pass return genre
def create_movie_instance(row): movie = Movie(row["Title"], int(row["Year"])) movie.director = Director(row["Director"]) movie.runtime_minutes = int(row["Runtime (Minutes)"]) movie.actors = [Actor(actor.strip()) for actor in row['Actors'].split(",")] movie.genres = [Genre(genre.strip()) for genre in row['Genre'].split(",")] movie.description = row["Description"] return movie
def read_csv_file(data_path: str, movie_data_filename, repo: MemoryRepository): with open(os.path.join(data_path, movie_data_filename), mode='r', encoding='utf-8-sig') as csvfile: # Rank,Title,Genre,Description,Director,Actors,Year,Runtime (Minutes),Rating,Votes,Revenue (Millions),Metascore movie_file_reader = csv.DictReader(csvfile) index = 0 for row in movie_file_reader: repo.add_movie(create_movie_instance(row)) actors = [ Actor(actor.strip()) for actor in row['Actors'].split(",") ] for actor in actors: repo.add_actor(actor) director = Director(row['Director']) repo.add_director(director) genres = [ Genre(genre.strip()) for genre in row['Genre'].split(",") ] for genre in genres: repo.add_genre(genre) # print(f"Movie {index} with title: {title}, release year {release_year}") index += 1 with open(os.path.join(data_path, "users.csv"), mode='r', encoding='utf-8-sig') as csvfile: # Unhashed passwords, shaunp:pw123456, fellowuser:password123 user_file_reader = csv.DictReader(csvfile) for row in user_file_reader: repo.add_user(User(row['username'], row['password'])) with open(os.path.join(data_path, "review.csv"), mode='r', encoding='utf-8-sig') as csvfile: # Unhashed passwords, shaunp:pw123456, fellowuser:password123 user_file_reader = csv.DictReader(csvfile) for row in user_file_reader: repo.add_review( Review(Movie(row['movie_title'], int(row['movie_year'])), row['review_text'], int(row['review_rating']), row['username']), row['username'])
def test_get_genre_by_index(in_mem_repo): assert in_mem_repo.get_genre_by_index(0) == Genre("Action") assert in_mem_repo.get_genre_by_index(5) == Genre("Thriller") assert in_mem_repo.get_genre_by_index(17) == Genre("War")
def test_get_genre(in_mem_repo): g = in_mem_repo.get_genre("Action") assert g == Genre("Action")
def test_add_genre(in_mem_repo): g = Genre("Documentary") in_mem_repo.add_genre(g) assert in_mem_repo.get_genre("Documentary") is g
def test_get_movies_for_genre(in_mem_repo): thriller_movies = in_mem_repo.get_movies_for_genre(Genre("Thriller")) for movie in thriller_movies: assert Genre("Thriller") in movie.genres
def test_get_number_movies_for_genre(in_mem_repo): action_movies_num = in_mem_repo.get_number_movies_for_genre( Genre("Action")) assert action_movies_num == 39
def get_number_pages_movies_for_genre(genre, results_per_page, repo: AbstractRepository): return get_number_pages(results_per_page, repo.get_number_movies_for_genre(Genre(genre)))
def get_page_items_movies_for_genre(genre, current_page_str, results_per_page, repo: AbstractRepository): movies_obj_list, prev_page, next_page = get_page_items( int(current_page_str), results_per_page, repo.get_movies_for_genre(Genre(genre))) return movies_to_dict(movies_obj_list), prev_page, next_page