Esempio n. 1
0
def cinema():

    db_handler = DBHandler()

    id = request.args.get("id")
    provider = db_handler.get_provider_by_id(id=id)

    movies_in = db_handler.get_items_in_provider(provider_id=provider.id)
    movies_id = [movie.id for movie in movies_in]
    movies_obj = db_handler.get_items_by_ids(movies_id)

    auth = current_user.is_authenticated
    """ We are going to sort movies for user """
    if auth:
        model = ALSRecommender()
        model.load()
        scores = model.score(id, movies_id)

        movies_obj = list(np.array(movies_obj)[np.argsort(scores)[::-1]])

    movies_obj = movies_obj[:MOVIES_TO_SHOW]

    return render_template(
        "cinema.html",
        provider=provider,
        movies=movies_obj,
        auth=auth,
        len_movies=len(movies_obj),
    )
Esempio n. 2
0
def find_negative_item(user_id):

    db_handler = DBHandler()

    all_items = db_handler.get_all_items()
    items_ids = [item.id for item in all_items]

    interacted_items = db_handler.get_interactions_by_id(user_id=user_id)
    interacted_items_id = [item.item_id for item in interacted_items]
    not_interacted_items_id = list(set(items_ids) - set(interacted_items_id))
    not_interacted_items = db_handler.get_items_by_ids(not_interacted_items_id)

    if not_interacted_items is None:
        return None
    else:
        not_interacted_item = np.random.choice(not_interacted_items)
        return not_interacted_item