예제 #1
0
 def get_genre(self, genre_name) -> Genre:
     genre = None
     try:
         genre = self.__genres_dict[Genre(genre_name)]
     except KeyError:
         pass
     return genre
예제 #2
0
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
예제 #3
0
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
예제 #9
0
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)))
예제 #10
0
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