Alex is funny
Alex is funny

Reputation: 197

How can I fetch specific information for a dictionary thats in an api

So I am writing a code that can give me certain information. The url https://api.brawlhalla.com/player/28472387/ranked?api_key=MY_API_KEY

provides information about my profile. When print it in text I get

{
    "name": "Twitter: ufrz_",
    "brawlhalla_id": 28472387,
    "rating": 2093,
    "peak_rating": 2110,
    "tier": "Diamond",
    "wins": 140,
    "games": 257,
    "region": "US-E",
    "global_rank": 0,
    "region_rank": 0,
    "legends": [
        {
            "legend_id": 3,
            "legend_name_key": "bodvar",
            "rating": 870,
            "peak_rating": 870,
            "tier": "Tin 4",
            "wins": 2,
            "games": 4
        },
        {
            "legend_id": 4,
            "legend_name_key": "cassidy",
            "rating": 968,
            "peak_rating": 968,
            "tier": "Bronze 2",
            "wins": 0,
            "games": 0
        },
        {
            "legend_id": 5,
            "legend_name_key": "orion",
            "rating": 1131,
            "peak_rating": 1131,
            "tier": "Silver 1",
            "wins": 1,
            "games": 3
        },

(not the full page.)

Here is the code I used to fetch this

import requests

url = "https://api.brawlhalla.com/player/28472387/ranked?api_key= MY_API_KEY"


r = requests.get(url)
print(r.text)

Now for example how would I go about fetching my rating and not the actual word but the number "2093" I tried someway but they didn't work. I am using bs4 and request and new to both so I really don't know how I would get this.

(Just want to say sorry for poorly worded question I don't really know how word my issue so my apologies in advance)

Upvotes: 0

Views: 807

Answers (1)

Orion
Orion

Reputation: 158

First of all, you have to convert your result to a json object:

data = r.json()

Then, you can request using data['rating']

For your question :

how would I go about getting the ranking for the legend_key_name "bodvar" how could I specifically get that legends ranking.

for legend in data['legends']:
    if legend['legend_name_key'] == "bovdar"
        print(legend['rating'])
        return legend['rating']

or using a function :

def getLegendByName(data, legendName):
    for legend in data['legends']:
        if legend['legend_name_key'] == legendName:
            return legend

    return None

legendName = "bodvar"            
data = r.json()
legend = getLegendByName(data, legendName)
if legend is not None:
    legendRating = legend['rating']
else
    print("There is no legend that exists with this name"

Upvotes: 4

Related Questions