Esempio n. 1
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)

            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
Esempio n. 3
0
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
Esempio n. 4
0
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