def get_playlists_created_for_user(playlist_user_name): """ Fetch playlist metadata in JSPF format without recordings that have been created for the user. Createdfor playlists are all public, so no Authorization is needed for this call. :params count: The number of playlists to return (for pagination). Default :data:`~webserver.views.api.DEFAULT_NUMBER_OF_PLAYLISTS_PER_CALL` :params offset: The offset of into the list of playlists to return (for pagination) :statuscode 200: Yay, you have data! :statuscode 404: User not found :resheader Content-Type: *application/json* """ count = get_non_negative_param('count', DEFAULT_NUMBER_OF_PLAYLISTS_PER_CALL) offset = get_non_negative_param('offset', 0) playlist_user = db_user.get_by_mb_id(playlist_user_name) if playlist_user is None: raise APINotFound("Cannot find user: %s" % playlist_user_name) playlists, playlist_count = db_playlist.get_playlists_created_for_user( playlist_user["id"], load_recordings=False, count=count, offset=offset) return jsonify( serialize_playlists(playlists, playlist_count, count, offset))
def recommendation_playlists(user_name: str): """ Show playlists created for user """ if not current_app.config.get("FEATURE_PLAYLIST", False): raise NotFound() offset = request.args.get('offset', 0) try: offset = int(offset) except ValueError: raise BadRequest("Incorrect int argument offset: %s" % request.args.get("offset")) count = request.args.get("count", DEFAULT_NUMBER_OF_PLAYLISTS_PER_CALL) try: count = int(count) except ValueError: raise BadRequest("Incorrect int argument count: %s" % request.args.get("count")) user = _get_user(user_name) user_data = { "name": user.musicbrainz_id, "id": user.id, } spotify_data = {} current_user_data = {} if current_user.is_authenticated: spotify_data = spotify.get_user_dict(current_user.id) current_user_data = { "id": current_user.id, "name": current_user.musicbrainz_id, "auth_token": current_user.auth_token, } playlists = [] user_playlists, playlist_count = get_playlists_created_for_user(user.id, False, count, offset) for playlist in user_playlists: playlists.append(serialize_jspf(playlist)) props = { "current_user": current_user_data, "api_url": current_app.config["API_URL"], "playlists": playlists, "user": user_data, "active_section": "recommendations", "playlist_count": playlist_count, } return render_template( "playlists/playlists.html", active_section="recommendations", props=ujson.dumps(props), user=user )
def recommendation_playlists(user_name: str): """ Show playlists created for user """ offset = request.args.get('offset', 0) try: offset = int(offset) except ValueError: raise BadRequest("Incorrect int argument offset: %s" % request.args.get("offset")) count = request.args.get("count", DEFAULT_NUMBER_OF_PLAYLISTS_PER_CALL) try: count = int(count) except ValueError: raise BadRequest("Incorrect int argument count: %s" % request.args.get("count")) user = _get_user(user_name) user_data = { "name": user.musicbrainz_id, "id": user.id, } playlists = [] user_playlists, playlist_count = get_playlists_created_for_user( user.id, False, count, offset) for playlist in user_playlists: playlists.append(serialize_jspf(playlist)) props = { "playlists": playlists, "user": user_data, "active_section": "recommendations", "playlist_count": playlist_count, "logged_in_user_follows_user": logged_in_user_follows_user(user), } return render_template("playlists/playlists.html", active_section="recommendations", props=ujson.dumps(props), user=user)