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