def make_movie():
    movie = Movie('Avengers: Endgame', 2019)
    movie.set_director(Director("Anthony Russo"))
    movie.set_description(
        "After Thanos, an intergalactic warlord, disintegrates half of the universe, the Avengers must reunite and assemble again to reinvigorate their trounced allies and restore balance."
    )
    movie.set_runtime_minutes(181)
    return movie
Example #2
0
def load_movies_actors_directors_genre_description(data_path: str, repo: MemoryRepository):
    genres = dict()
    actors = dict()
    directors = dict()
    for data_row in read_csv_file(os.path.join(data_path, "movies.csv")):
        movie_index = int(data_row[0])
        title = data_row[1]
        try:
            movie_revenue = float(data_row[10])
        except ValueError:
            movie_revenue = 0
        list_of_genre_names = data_row[2].split(",")
        list_of_genres = [Genre(genre_name) for genre_name in list_of_genre_names]  # can have duplicate

        movie_description = data_row[3]

        director = Director(data_row[4])  # can have duplicate
        list_of_actor_names = data_row[5].split(",")
        list_of_actor_names = [name.strip() for name in list_of_actor_names]
        list_of_actors = [Actor(actor_full_name) for actor_full_name in list_of_actor_names]  # can have duplicate

        release_year = int(data_row[6])
        runtime = int(data_row[7])

        # Create Movie object
        movie = Movie(
            title=title,
            release_year=release_year,
            id=movie_index
        )

        movie.set_revenue(revenue=movie_revenue)

        # Add movie to repo
        repo.add_movie(movie)

        # Add any new genres to repo
        for genre in list_of_genres:
            if genre not in genres.keys():
                genres[genre] = list()
            genres[genre].append(movie_index)

        for actor in list_of_actors:
            if actor not in actors.keys():
                actors[actor] = list()
            actors[actor].append(movie_index)

        # Add any new directors to dict
        if director not in directors:
            directors[director] = list()
        directors[director].append(movie_index)

        # Connect the current movie with its attributes
        add_movie_attributes(movie=movie,
                             list_of_genres=list_of_genres,
                             description=movie_description,
                             list_of_actors=list_of_actors,
                             director=director,
                             runtime=runtime)

    # Associate Genres with Movies and add them to the repository
    for genre in genres.keys():
        for current_movie_index in genres[genre]:
            movie = repo.get_movie_by_index(current_movie_index)
            movie.add_genre(genre)
            genre.add_Movie(movie)
        repo.add_genre(genre)

    # Associate Actors with Movies and add them to the repository
    for actor in actors.keys():
        for current_movie_index in actors[actor]:
            movie = repo.get_movie_by_index(current_movie_index)
            movie.add_actor(actor)
            actor.add_played_movies(movie)
        repo.add_actor(actor)

    # Associate Directors with Movies and add them to the repositor
    for director in directors.keys():
        for current_movie_index in directors[director]:
            movie = repo.get_movie_by_index(current_movie_index)
            movie.set_director(director)
            director.add_directed_movies(movie)
        repo.add_director(director)
 def test_director(self):
     movie1 = Movie("Moana", 2016, 1)
     movie1.set_director(Director("Ron Clements"))
     assert repr(movie1.director) == "<Director Ron Clements>"