def load_movies(data_path: str, repo: MemoryRepository):
    movies = dict()

    for data_row in read_csv_file(os.path.join(data_path, 'Data1000Movies.csv')):
        movie = Movie(
            rank=int(data_row[0]),
            title=data_row[1].strip(),
            release_year=int(data_row[6]),
            description=data_row[3].strip()
        )

        actors = data_row[5]
        actors = actors.split(',')
        for actor in actors:
            actor = actor.strip()
            if Actor(actor) not in movie.actors:
                movie.add_actor(Actor(actor))

        genres = data_row[2]
        genres = genres.split(',')
        for genre in genres:
            genre = genre.strip()
            if Genre(genre) not in movie.genres:
                movie.add_genre(Genre(genre))

        director = data_row[4]
        director = director.strip()
        movie.director = Director(director)

        repo.add_movie(movie)
        movies[data_row[0]] = movie
    return movies
Exemple #2
0
def test_actor():
    actor1 = Actor("a")
    assert actor1.actor_full_name == "a"
    actor2 = Actor("b")
    actor3 = Actor("a")
    assert actor1 != actor2
    assert hash(actor1) != hash(actor2)
    assert actor2 > actor1
    assert actor1 < actor2
    assert actor1 == actor3
    assert repr(actor1) == '<Actor a>'
def test_code_runner():
    movie = Movie("Moana", 2016)
    assert movie.title == "Moana"
    assert movie.release_year == 2016
    director = Director("Ron Clements")
    movie.director = director
    assert movie.director == Director("Ron Clements")

    actors = [
        Actor("Auli'i Cravalho"),
        Actor("Dwayne Johnson"),
        Actor("Rachel House"),
        Actor("Temuera Morrison")
    ]
    for actor in actors:
        movie.add_actor(actor)
    assert movie.actors == [
        Actor("Auli'i Cravalho"),
        Actor("Dwayne Johnson"),
        Actor("Rachel House"),
        Actor("Temuera Morrison")
    ]

    movie.runtime_minutes = 107
    assert movie.runtime_minutes == 107
def test_add_actor():
    movie1 = Movie("Spirited Away", 2000)

    movie1.actors = [Actor("James Huang")]
    movie1.add_actor(Actor("Jack Huang"))
    assert movie1.actors == [Actor("James Huang"), Actor("Jack Huang")]
    movie1.add_actor("Ron Huang")
    movie1.add_actor("")
    movie1.add_actor(None)
    movie1.add_actor(21345648)
    assert movie1.actors == [Actor("James Huang"), Actor("Jack Huang")]
def test_get_movie_by_actor(in_memory_repo):
    assert in_memory_repo.get_movie_by_actor('Chris Pratt') == [
        Movie(
            1, 'Guardians of the Galaxy', 2014, "A group of \
                                                        intergalactic criminals are forced to work together\
                                                        to stop a fanatical warrior from taking control of\
                                                        the universe."),
        Movie(
            10, 'Passengers', 2016, "A spacecraft \
                                                                traveling to a distant colony planet and \
                                                                transporting thousands of people has a \
                                                                malfunction in its sleep chambers. As a result, \
                                                                two passengers are awakened 90 years early."
        )
    ]
    movie1 = Movie(11, '1', 2000, "a")
    movie2 = Movie(12, '2', 3000, "a")
    actor1 = Actor('a')
    movie1.add_actor(actor1)
    movie2.add_actor(actor1)
    in_memory_repo.add_movie(movie1)
    in_memory_repo.add_movie(movie2)
    assert in_memory_repo.get_movie_by_actor('a') == [movie1, movie2]
def actor():
    return Actor("Michelle Williams")
Exemple #7
0
    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
def test_remove_actor():
    movie1 = Movie("Spirited Away", 2000)

    movie1.actors = [Actor("James Huang"), Actor("Ron Huang")]
    movie1.add_actor(Actor("Jack Huang"))
    movie1.remove_actor(Actor("Jack Huang"))
    assert movie1.actors == [Actor("James Huang"), Actor("Ron Huang")]
    movie1.remove_actor(Actor("James Huang"))
    movie1.remove_actor(Actor("Jawer"))
    movie1.remove_actor(Actor("Jackwerang"))
    movie1.remove_actor(Actor("Jweruang"))
    assert movie1.actors == [Actor("Ron Huang")]
    movie1.remove_actor(Actor("Ron Huang"))
    assert movie1.actors == []
def test_actors():
    movie1 = Movie("Spirited Away", 2000)
    movie2 = Movie("Your Name", 2000)
    movie3 = Movie("Batman", 2000)
    movie4 = Movie(None, None)

    movie1.actors = [
        Actor("Jack Huang"),
        Actor("James Huang"),
        Actor("Ron Huang"),
        Actor("Jane Tang")
    ]
    assert movie1.actors == [
        Actor("Jack Huang"),
        Actor("James Huang"),
        Actor("Ron Huang"),
        Actor("Jane Tang")
    ]
    movie2.actors = [
        Actor("Jack Huang"), "James Huang",
        Actor("Ron Huang"), 123456
    ]
    assert movie2.actors == []
    movie3.actors = Actor("Jack Huang")
    assert movie3.actors == [Actor("Jack Huang")]
    movie4.actors = "Jack Huang"
    assert movie4.actors == []
Exemple #10
0
def load_movies_and_genres_and_actors_and_directors(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_id = int(data_row[0])
        movie_genres = data_row[2].split(",")
        movie_director = data_row[4]
        movie_actors = data_row[5].replace(", ", ",").split(",")

        for genre in movie_genres:
            if genre not in genres.keys():
                genres[genre] = list()
            genres[genre].append(movie_id)

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

        if movie_director not in directors.keys():
            directors[movie_director] = list()
        directors[movie_director].append(movie_id)

        if data_row[10] == "N/A":
            revenue = None
        else:
            revenue = float(data_row[10])

        if data_row[11] == "N/A":
            metascore = None
        else:
            metascore = int(data_row[11])

        movie = Movie(id=movie_id,
                      title=data_row[1],
                      description=data_row[3],
                      year=int(data_row[6]),
                      runtime=int(data_row[7]),
                      rating=float(data_row[8]),
                      votes=int(data_row[9]),
                      revenue=revenue,
                      metascore=metascore)

        repo.add_movie(movie)

    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 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)

    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)