Example #1
0
def get_fuzzy_search_movies(fuzzy, repo):
    """
    """
    movies = list(repo.dataset_of_movies)
    movie_title_dict = dict(enumerate([movie.title for movie in movies]))
    best_matches = process.extractBests(fuzzy, movie_title_dict, score_cutoff=50)
    return [utils.movie_to_dict(movie) for movie in [movies[z] for (x, y, z) in best_matches]]
Example #2
0
def get_movies(actors, genres, director, repo: AbstractRepository):
    """
    """
    movies = repo.dataset_of_movies
    matches = set()
    for movie in movies:
        for actor in actors:
            if actor in [actor.actor_full_name for actor in movie.actors]:
                if len(genres) > 0:
                    for genre in genres:
                        if genre in [genre.genre_name for genre in movie.genres]:
                            if director is not None:
                                if director == movie.director.director_full_name:
                                    matches.add(movie)
                                else:
                                    if movie in matches:
                                        matches.remove(movie)
                            else:
                                matches.add(movie)
                        else:
                            if movie in matches:
                                matches.remove(movie)
            else:
                if movie in matches:
                    matches.remove(movie)
    return [utils.movie_to_dict(movie) for movie in matches]
Example #3
0
def get_actors(repo: AbstractRepository):
    """
    """
    actors = []
    for actor in sorted(repo.dataset_of_actors):
        movies = repo.get_movies_by_actor(actor)
        actors.append(dict(name=actor.actor_full_name, movies=[utils.movie_to_dict(movie) for movie in movies]))
    return actors
Example #4
0
def get_user_watchlist(username: str, repo: AbstractRepository):
    """
    """
    watchlist = repo.get_watchlists_for_user(repo.get_user(username=username))
    if watchlist and watchlist.size() != 0:
        return [utils.movie_to_dict(movie) for movie in watchlist]
    else:
        return []
Example #5
0
def get_movies_by_first_letter(character: str, repo: AbstractRepository):
    """
    """
    matching_movies = []
    for movie in sorted(repo.dataset_of_movies):
        if movie.title[0] == character.upper():
            matching_movies.append(utils.movie_to_dict(movie))
    return matching_movies
Example #6
0
def get_genres(repo: AbstractRepository):
    """
    """
    genres = []
    for genre in sorted(repo.dataset_of_genres):
        movies = repo.get_movies_by_genre(genre)
        genres.append(dict(name=genre.genre_name, movies=[utils.movie_to_dict(movie) for movie in movies]))
    return genres
Example #7
0
def get_movies_by_director(director: str, repo: AbstractRepository):
    """
    """
    director = repo.get_director_by_name(director)
    if director is None:
        raise BrowseException
    movies = repo.get_movies_by_director(director)
    return [utils.movie_to_dict(movie) for movie in movies]
Example #8
0
def get_movies_by_genre(genre: str, repo: AbstractRepository):
    """
    """
    genre = repo.get_genre(genre)
    if genre is None:
        raise UnknownGenreException
    movies = repo.get_movies_by_genre(genre)

    return [utils.movie_to_dict(movie) for movie in movies]
Example #9
0
def get_movie(title: str, year: str, repo: AbstractRepository):
    """
    """
    try:
        movie = repo.get_movie(title, int(year))
        if not movie:
            raise UnknownMovieException
        return utils.movie_to_dict(movie)
    except:
        pass
Example #10
0
def get_directors_by_first_letter(character: str, repo: AbstractRepository):
    """
    """
    matching_directors = []
    for director in sorted(repo.dataset_of_directors):
        if director.director_full_name[0] == character.upper():
            movies = repo.get_movies_by_director(director)
            matching_directors.append(
                dict(name=director.director_full_name, movies=[utils.movie_to_dict(movie) for movie in movies]))
    return matching_directors
Example #11
0
def get_movies_by_director(director: str, repo: AbstractRepository):
    """
    """
    director = repo.get_director_by_name(director)
    if director is None:
        raise PersonException
    movies = repo.get_movies_by_director(director)
    return [
        utils.movie_to_dict(movie)
        for movie in sorted(movies, key=lambda x: x.rank)
    ]
Example #12
0
def get_movies_by_actor(actor, repo: AbstractRepository):
    """
    """
    actor = repo.get_actor(actor)
    if actor is None:
        raise PersonException('Actor does not exist')
    movies = repo.get_movies_by_actor(actor)
    return [
        utils.movie_to_dict(movie)
        for movie in sorted(movies, key=lambda x: x.rank)
    ], get_collegues(actor)
Example #13
0
def user_to_dict(user: User):
    """
    """
    user_dict = dict(
        username=user.user_name,
        watchlist=utils.get_user_watchlist(),
        watched_movies=[
            utils.movie_to_dict(movie) for movie in user.watched_movies
        ],
        reviews=utils.reviews_to_dict(user.reviews),
        time_spent=user.time_spent_watching_movies_minutes,
        isAdmin=user.is_admin,
    )
Example #14
0
def get_movies_for_genres(genres, repo):
    """
    """
    movies = set()
    to_remove = []
    for genre in genres:
        genre_obj = Genre(genre)
        for movie in repo.get_movies_by_genre(genre_obj):
            movies.add(movie)
    for genre in genres:
        genre_obj = Genre(genre)
        for movie in movies:
            if genre_obj not in movie.genres:
                to_remove.append(movie)
    for item in to_remove:
        movies.remove(item)
    return [utils.movie_to_dict(movie) for movie in movies]
Example #15
0
def get_search_results(actors, genres, director, fuzzy, repo: AbstractRepository):
    """
    """
    results = [utils.movie_to_dict(movie) for movie in repo.dataset_of_movies]
    if actors:
        actor_movies = get_movies_for_actors(actors, repo)
        results = [movie for movie in results if movie in actor_movies]
    if genres:
        genre_movies = get_movies_for_genres(genres, repo)
        results = [movie for movie in results if movie in genre_movies]
    if director and director != 'None':
        director_movies = get_movies_for_director(director, repo)
        results = [movie for movie in results if movie in director_movies]
    if fuzzy:
        fuzzy_search_results = get_fuzzy_search_movies(fuzzy, repo)
        results = [movie for movie in results if movie in fuzzy_search_results]
    return sorted(results, key=lambda x: x['rank'])
Example #16
0
def get_movies_for_actors(actors, repo):
    """
    """
    movies = set()
    to_remove = []
    for actor in actors:
        actor_obj = Actor(actor)
        for movie in repo.get_movies_by_actor(actor_obj):
            movies.add(movie)

    for actor in actors:
        actor_obj = Actor(actor)
        for movie in movies:
            if actor_obj not in movie.actors:
                to_remove.append(movie)
    for item in to_remove:
        if item in movies:
            movies.remove(item)
    return [utils.movie_to_dict(movie) for movie in movies]
Example #17
0
def get_movies_for_director(director, repo):
    """
    """
    if director is None:
        return []
    return [utils.movie_to_dict(movie) for movie in repo.get_movies_by_director(Director(director))]
Example #18
0
def get_top_100movies(repo: AbstractRepository):
    """
    """
    movies = repo.get_movies_by_rank()[0:100]

    return [utils.movie_to_dict(movie) for movie in movies]
Example #19
0
def get_movies(repo: AbstractRepository):
    """
    """
    return [utils.movie_to_dict(movie) for movie in sorted(repo.dataset_of_movies, key=lambda x: x.rank)]