コード例 #1
0
def test_equal():
    genre1 = Genre("Horror")
    genre2 = Genre("")
    genre3 = Genre("Horror")

    assert (genre1 == genre2) == False
    assert (genre1 == genre3) == True
コード例 #2
0
def test_repository_can_retrieve_movie(in_memory_repo):
    movie = in_memory_repo.get_movie(1)

    # Check that the Movie has the expected title.
    assert movie.title == 'Guardians of the Galaxy'

    assert movie.is_genreged_by(Genre('Action'))
    assert movie.is_genreged_by(Genre('Adventure'))
コード例 #3
0
def test_movie_genres():
    # correct input
    movie1 = Movie("Moana", 2016)
    movie1.genres = [Genre("Animation"), Genre("Comedy")]
    assert movie1.genres == [Genre("Animation"), Genre("Comedy")]

    # incorrect input
    movie2 = Movie("Frozen", 2014)
コード例 #4
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:
                title = row["Title"]
                release_year = int(row["Year"])
                movie = Movie(title, release_year)

                movie.description = row["Description"]

                director = row["Director"]
                movie.add_director(Director(director))
                if Director(director) not in self.__dataset_of_directors:
                    self.__dataset_of_directors.append(Director(director))

                actors = row["Actors"].split(",")
                for actor in actors:
                    movie.add_actor(Actor(actor))
                    if Actor(actor) not in self.__dataset_of_actors:
                        self.__dataset_of_actors.append(Actor(actor))

                genres = row["Genre"].split(",")
                for genre in genres:
                    movie.add_genre(Genre(genre))
                    if Genre(genre) not in self.__dataset_of_genres:
                        self.__dataset_of_genres.append(Genre(genre))

                movie.runtime_minutes = int(row["Runtime (Minutes)"])

                try:
                    movie.external_rating = float(row["Rating"])
                except ValueError:
                    pass

                try:
                    movie.rating_votes = int(row["Votes"])
                except ValueError:
                    pass

                try:
                    movie.revenue_in_millions = float(
                        row["Revenue (Millions)"])
                except ValueError:
                    pass

                try:
                    movie.metascore = int(row["Metascore"])
                except ValueError:
                    pass

                self.__dataset_of_movies.append(movie)
                # title = row['Title']
                # release_year = int(row['Year'])
                # print(f"Movie {index} with title: {title}, release year {release_year}")
                index += 1
コード例 #5
0
ファイル: movies.py プロジェクト: AmriArshad/235Flix
def browse_by_genre():
    genreMovies = movieByGenre()
    random_movies = repo.repo_instance.get_random_movies(4)
    random_genres = repo.repo_instance.get_random_genres(3)

    if genreMovies.validate_on_submit():
        repo.repo_instance.genre_index = 0
        post_genre = Genre(genreMovies.genre_name.data)
        total_movies = repo.repo_instance.get_movies_in_genre(post_genre)
        movies = [total_movies[x:x+45] for x in range(0, len(total_movies), 45)]
        length = len(movies)-1

        return render_template(
            'movies/genres_movies.html',
            movies = movies[repo.repo_instance.genre_index],
            genre = post_genre,
            length = length,
            first_url = url_for('movies_bp.genre_view', index = 0, length = length, genre = post_genre.name),
            prev_url = url_for('movies_bp.genre_view', index = repo.repo_instance.genre_index - 1, length = length, genre = post_genre.name),
            next_url = url_for('movies_bp.genre_view', index = repo.repo_instance.genre_index + 1, length = length, genre = post_genre.name),
            last_url = url_for('movies_bp.genre_view', index = length, length = length, genre = post_genre.name),
            movieSearch = movieByTitle(),
            genreSearch = genreMovies,
        )

    return render_template(
        'movies/get_genre.html',
        form = genreMovies,
        random_movies = random_movies,
        random_genres = random_genres,
        movieSearch = movieByTitle(),
        genreSearch = genreMovies,
    )
コード例 #6
0
def test_repository_can_add_and_get_genres(in_memory_repo):
    genre = Genre("Horror")
    in_memory_repo.add_genre(genre)

    assert (genre in in_memory_repo.get_genres()) is True

    assert len(in_memory_repo.get_genres()) == 19
コード例 #7
0
    def read_csv_file(self, file_name):
        with open(file_name, mode='r', encoding='utf-8-sig') as csvfile:
            movie_file_reader = csv.DictReader(csvfile)

            for row in movie_file_reader:
                id = int(row['Rank'])
                title = row['Title']
                release_year = int(row['Year'])
                movie = Movie(title, release_year, id)
                self.add_movie(movie)
                actors = row["Actors"]
                actors = actors.split(",")
                for actor in actors:
                    actor = Actor(actor)
                    self.add_actor(actor)
                    actor = self.get_actor(actor.actor_full_name)
                    movie.add_actor(actor)
                    actor.add_movie(movie)

                director = Director(row["Director"])
                self.add_director(director)
                director = self.get_director(director.director_full_name)
                movie.director = director
                director.add_movie(movie)

                genres = row["Genre"]
                genres = genres.split(",")
                for genre in genres:
                    genre = Genre(genre)
                    movie.add_genre(genre)
                    self.add_genre(genre)

                movie.description = row["Description"]
                movie.runtime_minutes = int(row["Runtime (Minutes)"])
コード例 #8
0
def test_remove_genre():
    movie = Movie("Moana", 2016)
    genres = [
        Genre("Animation"),
        Genre("Action"),
        Genre("Fantasy"),
        Genre("Children's film"),
        Genre("Adventure")
    ]

    for genre in genres:
        movie.add_genre(genre)

    assert repr(
        movie.genres
    ) == "[<Genre Animation>, <Genre Action>, <Genre Fantasy>, <Genre Children's film>, <Genre Adventure>]"

    movie.remove_genre(Genre("Adventure"))
    assert repr(
        movie.genres
    ) == "[<Genre Animation>, <Genre Action>, <Genre Fantasy>, <Genre Children's film>]"

    movie.remove_genre(Genre("Adventure"))
    assert repr(
        movie.genres
    ) == "[<Genre Animation>, <Genre Action>, <Genre Fantasy>, <Genre Children's film>]"
コード例 #9
0
def test_repository_can_retrieve_movie(in_memory_repo):
    movie = in_memory_repo.get_movie(1)

    # Check that the Movie has the expected title.
    assert movie.title == 'Guardians of the Galaxy'

    # Check that the Movie is commented as expected.
    comment_one = [
        comment for comment in movie.comments
        if comment.comment == 'This movie is okay.'
    ][0]
    comment_two = [
        comment for comment in movie.comments
        if comment.comment == 'Yeah Freddie, it is good.'
    ][0]

    assert comment_one.user.username == 'fmercury'
    assert comment_two.user.username == "thorke"

    # Check that the Movie is tagged as expected.
    assert movie.is_of_genre(Genre('Action'))
    assert movie.is_of_genre(Genre('Adventure'))
    assert movie.is_of_genre(Genre('Sci-Fi'))
コード例 #10
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:
                title = row['Title']
                release_year = int(row['Year'])
                movie = Movie(title, release_year)

                movie.description = row['Description']

                movie.director = Director(row['Director'])
                if Director(
                        row['Director']) not in self.__dataset_of_directors:
                    self.__dataset_of_directors.append(
                        Director(row['Director']))

                for actor in row['Actors'].split(','):
                    movie.add_actor(Actor(actor))
                    if Actor(actor) not in self.dataset_of_actors:
                        self.dataset_of_actors.append(Actor(actor))

                for genre in row['Genre'].split(','):
                    movie.add_genre(Genre(genre))
                    if Genre(genre) not in self.dataset_of_genres:
                        self.dataset_of_genres.append(Genre(genre))

                movie.runtime_minutes = int(row['Runtime (Minutes)'])

                try:
                    movie.revenue = float(row['Revenue (Millions)'])
                except:
                    pass

                self.__dataset_of_movies.append(movie)
コード例 #11
0
def test_movie_add_genre():
    # correct input
    movie1 = Movie("Moana", 2016)
    movie1.add_genre(Genre("Animation"))
    assert movie1.genres == [Genre("Animation")]

    # incorrect input
    movie1.add_actor(Director("Ron Clements"))
    assert movie1.genres == [Genre("Animation")]

    # adding a genre twice
    movie1.add_genre(Genre("Animation"))
    assert movie1.genres == [Genre("Animation")]

    # adding a second genre
    movie1.add_genre(Genre("Comedy"))
    assert movie1.genres == [Genre("Animation"), Genre("Comedy")]
コード例 #12
0
def test_movie_remove_genre():
    movie1 = Movie("Moana", 2016)
    movie1.add_genre(Genre("Animation"))

    # correct input
    movie1.remove_genre(Genre("Animation"))
    assert movie1.genres == []

    # incorrect input
    movie1.add_genre(Genre("Animation"))
    movie1.remove_genre(Director("Animation"))
    assert movie1.genres == [Genre("Animation")]

    # removing a genre not in list
    movie1.remove_genre(Genre("Comedy"))
    assert movie1.genres == [Genre("Animation")]
コード例 #13
0
def load_movies_and_genres(data_path: str, repo: MemoryRepository):
    genres = dict()

    for data_row in read_csv_file(os.path.join(data_path,
                                               'Data1000Movies.csv')):

        movie_key = int(data_row[0])
        movie_genres = data_row[2].split(",")
        # Add any new genres; associate the current movie with genres.
        for genre in movie_genres:
            if genre not in genres.keys():
                genres[genre] = list()
            genres[genre].append(movie_key)

        # Create Movie object.
        movie = Movie(date=date.fromisoformat(data_row[12]),
                      title=data_row[1],
                      first_para=data_row[3],
                      hyperlink="nan",
                      image_hyperlink=data_row[14],
                      id=movie_key,
                      rating=data_row[8],
                      back_hyperlink=data_row[13],
                      runtime=int(data_row[7]),
                      director=data_row[4],
                      actors=data_row[5].split(","))

        # Add the Movie to the repository.
        repo.add_movie(movie)

    # Create Genre objects, associate them with Movies and add them to the repository.
    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)
コード例 #14
0
ファイル: movies.py プロジェクト: AmriArshad/235Flix
def genre_view():
    index = int(request.args.get('index'))
    genre = Genre(request.args.get('genre'))
    length = int(request.args.get('length'))

    total_movies = repo.repo_instance.get_movies_in_genre(genre)
    movies = [total_movies[x:x+45] for x in range(0, len(total_movies), 45)]

    if repo.repo_instance.genre_index == 0 and index <= -1 or repo.repo_instance.genre_index == length and index >= length:
        pass
    else:
        repo.repo_instance.genre_index = index

    return render_template(
            'movies/genres_movies.html',
            movies = movies[repo.repo_instance.genre_index],
            genre = genre,
            length = length,
            first_url = url_for('movies_bp.genre_view', index = 0, length = length, genre = genre.name),
            prev_url = url_for('movies_bp.genre_view', index = repo.repo_instance.genre_index - 1, length = length, genre = genre.name),
            next_url = url_for('movies_bp.genre_view', index = repo.repo_instance.genre_index + 1, length = length, genre = genre.name),
            last_url = url_for('movies_bp.genre_view', index = length, length = length, genre = genre.name),
            movieSearch = movieByTitle(),
        )
コード例 #15
0
def test_repository_can_add_genre(in_memory_repo):
    genre = Genre("Indie")
    in_memory_repo.add_genre(genre)
    assert genre in in_memory_repo.get_genres()
コード例 #16
0
def test_repository_can_get_movies_from_genre(in_memory_repo):
    movies = in_memory_repo.get_movies_from_genre(Genre("Action"))
    assert len(movies) == 2
    assert movies[0] == 1
    assert movies[1] == 5
コード例 #17
0
def test_repository_can_retrieve_genres(in_memory_repo):
    genres = in_memory_repo.get_genres()
    assert len(genres) == 10
    assert Genre("Action") in genres
コード例 #18
0
def test_repository_returns_an_empty_list_where_there_are_no_movies_in_a_genre(
        session_factory):
    repo = SqlAlchemyRepository(session_factory)
    movies = repo.get_movies_from_genre(Genre('Giraffe'))

    assert len(movies) == 0
コード例 #19
0
def test_repository_can_get_movies_from_genre(session_factory):
    repo = SqlAlchemyRepository(session_factory)
    movies = repo.get_movies_from_genre(Genre('Comedy'))
    assert len(movies) == 279
    assert movies[0] == 4
    assert movies[1] == 7
コード例 #20
0
def test_repository_can_retrieve_genres(session_factory):
    repo = SqlAlchemyRepository(session_factory)
    genres = repo.get_genres()
    assert len(genres) == 20
    assert Genre("Action") in genres
コード例 #21
0
def test_repository_can_add_genre(session_factory):
    repo = SqlAlchemyRepository(session_factory)
    genre = Genre('Indie')
    repo.add_genre(genre)
    assert genre in repo.get_genres()
コード例 #22
0
def test_repository_add_genre(in_memory_repo):
    genre = Genre("MEGAFUN")
    in_memory_repo.add_genre(genre)

    assert genre in in_memory_repo.get_genre()
コード例 #23
0
def test_repository_can_get_movies_from_genre(in_memory_repo):
    movies = in_memory_repo.get_movies_from_genre(Genre("Action"))
    assert len(movies) == 2
    assert movies[0].title == "Guardians of the Galaxy"
    assert movies[1].title == "Suicide Squad"
コード例 #24
0
def get_movies_from_genre(genre_name, repo: AbstractRepository):
    genre = Genre(genre_name)
    movies = repo.get_movies_from_genre(genre)
    return [movie.id for movie in movies]
コード例 #25
0
def genre():
    return Genre("Horror")
コード例 #26
0
def genre2():
    return Genre("Thriller")
コード例 #27
0
def test_repository_can_add_a_tag(in_memory_repo):
    genre = Genre('Motoring')
    in_memory_repo.add_genre(genre)

    assert genre in in_memory_repo.get_genres()
コード例 #28
0
def genre():
    return Genre("Action")
コード例 #29
0
def make_genre():
    genre = Genre("Adventure")
    return genre
コード例 #30
0
def load_movies_and_genres(data_path: str, repo: MemoryRepository):
    genres = dict()
    directors = dict()
    actors = dict()

    for data_row in read_csv_file(os.path.join(data_path,
                                               'Data1000Movies.csv')):

        movie_key = int(data_row[0])
        movie_genres = data_row[2].lower().split(",")
        movie_directors = data_row[4].lower().split(",")
        movie_actors = data_row[5].lower().split(",")

        # Add any new genres; associate the current movie with genres.
        for genre in movie_genres:
            if genre not in genres.keys():
                genres[genre] = list()
            genres[genre].append(movie_key)
        for director in movie_directors:
            if director not in directors.keys():
                directors[director] = list()
            directors[director].append(movie_key)
        for actor in movie_actors:
            if actor not in actors.keys():
                actors[actor] = list()
            actors[actor].append(movie_key)

        # Create Movie object.
        movie = Movie(title=data_row[1].lower(),
                      year=int(data_row[6]),
                      movie_id=int(data_row[0]))
        movie.description = data_row[3]
        movie.runtime_minutes = int(data_row[7])
        movie.rating = float(data_row[8])
        movie.votes = float(data_row[9])
        if data_row[10] != 'N/A':
            movie.revenue = f"{data_row[10]}Millions"
        if data_row[11] != 'N/A':
            movie.metascore = data_row[11]

        # Add the Movie to the repository.
        repo.add_movie(movie)

    # Create Genre objects, associate them with Movies and add them to the repository.
    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 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)

    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)