예제 #1
0
def generate_charts_bracket():
    """generates madness bracket for the best/classics/charts type of tracks
    Returns:
        jsonified dict with all the tracks and tracks' info needed for the bracket
    """
    upper_limit = request.args.get("limit")
    valid_upper_limit = validate_bracket_upper_limit(upper_limit)
    if request.method == "GET":
        if not valid_upper_limit:
            return render_template(
                '404.html', description='👿 INCORRECT INPUT 👿'), 404

        user_request = json.dumps({
            "bracket_type": "charts",
            "name": None,
            "limit": upper_limit
        })
        return render_template("bracket.html", user_request=user_request)
    else:
        if not valid_upper_limit:
            print('incorrect input')
            return make_response(
                jsonify({'message': f'👿 INCORRECT INPUT 👿'}), 404)
        upper_limit = valid_upper_limit.upper_limit
        tracks = get_songs_considered_best(upper_limit)
        print(tracks)
        if not tracks:
            print('nothing found')
            return make_response(jsonify({'message': f"nothing found"}), 404)
        return jsonify(tracks)
예제 #2
0
def generate_secret_bracket():
    """generates SECRET madness bracket
    Returns:
        jsonified dict with all the tracks and tracks' info needed for the bracket
    """
    upper_limit = request.args.get("limit")
    valid_upper_limit = validate_bracket_upper_limit(upper_limit)
    if request.method == "GET":
        if not valid_upper_limit:
            return render_template('404.html', description='👿 INCORRECT INPUT 👿'), 404
        user_request = json.dumps({
            "bracket_type": "secret",
            "name": None,
            "limit": upper_limit
        })
        return render_template("bracket.html", user_request=user_request)

    else:
        if not valid_upper_limit:
            print('incorrect input')
            return make_response(jsonify(
                {'message': f'👿 INCORRECT INPUT 👿'}
            ),
                404)
        upper_limit = valid_upper_limit.upper_limit
        tracks = get_secret_tracks(upper_limit)
        print(tracks)
        if not tracks:
            print('nothing found')
            return make_response(jsonify(
                {'message': f"😟 NOTHING FOUND 😟"}
            ),
                404)
        return jsonify(tracks)
예제 #3
0
def generate_battle_bracket():
    """generates madness bracket for ARTIST BATTLE (e.g. Radiohead vs Muse)
    Returns:
        jsonified dict with all the tracks and tracks' info needed for the bracket
    """
    artist_name = request.args.get("name")
    artist_name_2 = request.args.get("name2")
    print(f"get BATTLE: {artist_name} vs. {artist_name_2}")
    upper_limit = request.args.get("limit")
    valid_artist_name = validate_artist_name(artist_name)
    valid_artist_name_2 = validate_artist_name(artist_name_2)
    valid_upper_limit = validate_bracket_upper_limit(upper_limit)
    is_valid_input = valid_artist_name and valid_upper_limit and valid_artist_name_2
    if request.method == "GET":
        if not is_valid_input:
            return render_template(
                '404.html', description='👿 INCORRECT INPUT 👿'), 404

        if artist_name.lower() == artist_name_2.lower():
            return render_template(
                '404.html',
                description='👿 IT TAKES TWO TO BATTLE 👿'), 404

        user_request = json.dumps({
            "bracket_type": "battle",
            "value1": artist_name,
            "value2": artist_name_2,
            "limit": upper_limit
        })
        return render_template("bracket.html", user_request=user_request)
    else:
        if not is_valid_input:
            return make_response(
                jsonify({'message': f'👿 INCORRECT INPUT 👿'}), 404)
        if artist_name.lower() == artist_name_2.lower():
            return make_response(
                jsonify({'message': f'👿 IT TAKES TWO TO BATTLE 👿'}), 404)
        upper_limit = valid_upper_limit.upper_limit
        tracks = get_artists_battle(artist_name, artist_name_2, upper_limit)
        if not tracks:
            print('nothing found')
            return make_response(
                jsonify(
                    {'message': f"😟 NO TRACKS FOUND FOR THIS BATTLE 😟"}),
                404)
        return jsonify(tracks)
예제 #4
0
def generate_spotify_bracket() -> Response:
    """generates madness bracket based on user's Spotify profile stats
    Returns:
        jsonified dict with all the tracks and tracks' info needed for the bracket
    """
    upper_limit = request.args.get("limit")
    valid_upper_limit = validate_bracket_upper_limit(upper_limit)
    if request.method == "GET":
        user, token = check_spotify_login()
        if not user or not token:
            return make_response(jsonify(
                {'message': f"👿 YOU'RE NOT LOGGED IN 👿"}
            ),
                404)
        if not valid_upper_limit:
            upper_limit = 16

        user_request = json.dumps({
            "bracket_type": "spotify",
            "limit": upper_limit
        })
        return render_template("bracket.html", user_request=user_request)
    else:
        user, token = check_spotify_login()
        if not user or not token:
            return make_response(jsonify(
                {'message': f"👿 YOU'RE NOT LOGGED IN 👿"}
            ),
                404)
        if not valid_upper_limit:
            return make_response(jsonify(
                {'message': f'👿 INCORRECT INPUT 👿'}
            ),
                404)
        upper_limit = valid_upper_limit.upper_limit
        tracks = get_spotify_bracket_data(token, upper_limit)
        if not tracks:
            print('nothing found')
            return make_response(jsonify(
                {'message': f"😟 no tracks found for you 😟"}
            ),
                404)
        return jsonify(tracks)
예제 #5
0
def generate_musician_bracket():
    """generates madness bracket for a particular artist/musician
    Returns:
        jsonified dict with all the tracks and tracks' info needed for the bracket
    """
    artist_name = request.args.get("name")
    upper_limit = request.args.get("limit")
    valid_artist_name = validate_artist_name(artist_name)
    valid_upper_limit = validate_bracket_upper_limit(upper_limit)
    is_valid_input = valid_artist_name and valid_upper_limit
    if request.method == "GET":
        if not is_valid_input:
            return render_template('404.html', description='👿 INCORRECT INPUT 👿'), 404

        user_request = json.dumps({
            "bracket_type": "artist",
            "value1": artist_name,
            "limit": upper_limit
        })
        return render_template("bracket.html", user_request=user_request)
    else:
        if not is_valid_input:
            print('no input')
            return make_response(jsonify(
                {'message': f'👿 INCORRECT INPUT 👿'}
            ),
                404)
        upper_limit = valid_upper_limit.upper_limit
        tracks = get_musician_bracket_data(artist_name, upper_limit)
        print(tracks)
        if not tracks:
            print('nothing found')
            return make_response(jsonify(
                {'message': f"😟 no tracks found for {artist_name} 😟"}
            ),
                404)
        return jsonify(tracks)
예제 #6
0
def generate_lastfm_user_bracket():
    """generates USER's personal bracket based on their LAST.FM stats
    Returns:
        jsonified dict with all the tracks and tracks' info needed for the bracket
    """
    username = request.args.get("name")
    upper_limit = request.args.get("limit")
    valid_username = validate_lastfm_username(username)
    valid_upper_limit = validate_bracket_upper_limit(upper_limit)
    is_valid_input = valid_username and valid_upper_limit
    if request.method == "GET":
        if not is_valid_input:
            return render_template(
                '404.html', description='👿 INCORRECT INPUT 👿'), 404

        user_request = json.dumps({
            "bracket_type": "lastfm",
            "value1": username,
            "limit": upper_limit
        })
        return render_template("bracket.html", user_request=user_request)
    else:
        if not is_valid_input:
            print('no input')
            return make_response(
                jsonify({'message': f"👿 INCORRECT INPUT 👿"}), 404)
        upper_limit = valid_upper_limit.upper_limit
        tracks = ultimate_lastfm_user_tracks_handler(username, upper_limit)
        print(tracks)
        if not tracks:
            print('nothing found')
            return make_response(
                jsonify(
                    {'message': f"😟 no tracks found for {username} 😟"}),
                404)
        return jsonify(tracks)