Use Variable in URL request on loop to collect data

Question:

I have a requests URL I am using to collect data for races for each day. I need to make one call to an API to get the race info for the day, then I need to use the race keys for each race to make another call to get the data for each race.

So far I have the code below to collect the race info for the day.

def races_list():

    race_keys = []

    link = f'{Base_url}meetings.json?app_id={AppID}&app_key={AppKey}&searchRequest.startDateTime={StartDate}&searchRequest.endDateTime={EndDate}&searchRequest.raceType={RaceType}&searchRequest.countryCodes={Country}'
    print(link)

    # Request data from link as 'str'
    data = requests.get(link).text
    # convert 'str' to Json
    data = json.loads(data)
    # JSON PARSE
    for event_data in data['meetings']:
        for race_data in event_data['events']:
            race_start = race_data['advertisedDateTimeUtc']
            race_status = race_data['status']
            race_key = race_data['eventKey']
            race_number = race_data['sequence']
            race_name = race_data['name']
            race_id = race_data['id']
            race_distance = race_data['distanceMetres']
            race_class_1 = race_data['classes'][0]

            race_keys.append(race_key)

            print(f'{race_start} {race_status} {race_key} {race_number} {race_name} {race_id} {race_distance} {race_class_1}')


    return race_keys

if __name__ == "__main__":
    races_list()

this returns the data below

2022-10-28T02:00:00Z Open 202210280200.T.AUS.pakenham_synthetic.1 1 Www.Pakcup.Com.Au Mdn Plate race:202210280200.T.AUS.pakenham_synthetic.1 1100 Maiden
2022-10-28T02:30:00Z Open 202210280200.T.AUS.pakenham_synthetic.2 2 Pakenham Cup Tixs On Sale Mdn race:202210280200.T.AUS.pakenham_synthetic.2 1100 Maiden
2022-10-28T03:00:00Z Open 202210280300.T.AUS.pakenham_synthetic.3 3 Schweppes Mdn Plate race:202210280300.T.AUS.pakenham_synthetic.3 1600 Maiden
2022-10-28T03:30:00Z Open 202210280300.T.AUS.pakenham_synthetic.4 4 Grant's Plumbing Mdn Plate race:202210280300.T.AUS.pakenham_synthetic.4 1400 Maiden
2022-10-28T04:00:00Z Open 202210280400.T.AUS.pakenham_synthetic.5 5 Bet With Mates-Bm70 race:202210280400.T.AUS.pakenham_synthetic.5 1400 Benchmark 70
2022-10-28T04:30:00Z Open 202210280400.T.AUS.pakenham_synthetic.6 6 Harris Automation Engin.-Bm58 race:202210280400.T.AUS.pakenham_synthetic.6 2200 Benchmark 58
2022-10-28T05:00:00Z Open 202210280500.T.AUS.pakenham_synthetic.7 7 Bet With Mates-Bm58 race:202210280500.T.AUS.pakenham_synthetic.7 1200 Benchmark 58
2022-10-28T05:30:00Z Open 202210280500.T.AUS.pakenham_synthetic.8 8 De Bortoli Spring Soiree-Bm58 race:202210280500.T.AUS.pakenham_synthetic.8 1200 Benchmark 58
2022-10-28T06:00:00Z Open 202210280600.T.AUS.pakenham_synthetic.9 9 Robertson Wouters (Bm58) race:202210280600.T.AUS.pakenham_synthetic.9 1400 Benchmark 58
2022-10-28T02:35:00Z Open 202210280200.T.AUS.wagga.1 1 Mountaineer Cup (Bm74) race:202210280200.T.AUS.wagga.1 2500 Benchmark 74
2022-10-28T03:10:00Z Open 202210280300.T.AUS.wagga.2 2 Vale Katrina Dimitropoulos-C1 race:202210280300.T.AUS.wagga.2 1600 Class 1
2022-10-28T03:45:00Z Open 202210280300.T.AUS.wagga.3 3 Good Talk Bragger Cup (Bm50) race:202210280300.T.AUS.wagga.3 1600 Benchmark 50
2022-10-28T04:25:00Z Open 202210280400.T.AUS.wagga.4 4 Wagga Early Years Learning Ctr race:202210280400.T.AUS.wagga.4 1000 Open
2022-10-28T05:05:00Z Open 202210280500.T.AUS.wagga.5 5 Delta Star Designs Mdn Hcp race:202210280500.T.AUS.wagga.5 1000 Maiden
2022-10-28T05:40:00Z Open 202210280500.T.AUS.wagga.6 6 Reece Group Wagga Wagga Mdn race:202210280500.T.AUS.wagga.6 1200 Maiden
2022-10-28T06:20:00Z Open 202210280600.T.AUS.wagga.7 7 Sca Stan Sadleir Stakes race:202210280600.T.AUS.wagga.7 1300 Open
2022-10-28T06:55:00Z Open 202210280600.T.AUS.wagga.8 8 Commins Hendriks Solicitors-C1 race:202210280600.T.AUS.wagga.8 1200 Class 1
2022-10-28T06:15:00Z Open 202210280600.T.AUS.moonee_valley.1 1  Maiden Plate race:202210280600.T.AUS.moonee_valley.1 1200 Maiden
2022-10-28T06:45:00Z Open 202210280600.T.AUS.moonee_valley.2 2 Tote Bar & Dining (Bm70) race:202210280600.T.AUS.moonee_valley.2 1200 Benchmark 70
2022-10-28T07:15:00Z Open 202210280700.T.AUS.moonee_valley.3 3 Christmas At The Valley Hcp-C1 race:202210280700.T.AUS.moonee_valley.3 1500 Class 1
2022-10-28T07:45:00Z Open 202210280700.T.AUS.moonee_valley.4 4 Make-A-Wish Australia Mdn race:202210280700.T.AUS.moonee_valley.4 1600 Maiden
2022-10-28T08:15:00Z Open 202210280800.T.AUS.moonee_valley.5 5 Dce (Bm70) race:202210280800.T.AUS.moonee_valley.5 1600 Benchmark 70
2022-10-28T08:45:00Z Open 202210280800.T.AUS.moonee_valley.6 6 55 Sec Challenge(Bm70) race:202210280800.T.AUS.moonee_valley.6 955 Benchmark 70
2022-10-28T09:15:00Z Open 202210280900.T.AUS.moonee_valley.7 7 Musk Creek Farm (Bm70) race:202210280900.T.AUS.moonee_valley.7 2040 Benchmark 70
2022-10-28T09:45:00Z Open 202210280900.T.AUS.moonee_valley.8 8 Cirka (Bm64) race:202210280900.T.AUS.moonee_valley.8 2040 Benchmark 64
2022-10-28T10:15:00Z Open 202210281000.T.AUS.moonee_valley.9 9 Drummond Golf (Bm64) race:202210281000.T.AUS.moonee_valley.9 1200 Benchmark 64
2022-10-28T02:57:00Z Open 202210280200.T.AUS.ipswich.1 1 This Is A Conversation (Bm65) race:202210280200.T.AUS.ipswich.1 1350 Benchmark 65
2022-10-28T03:34:00Z Open 202210280300.T.AUS.ipswich.2 2 Base Metal Fabrication Mdn race:202210280300.T.AUS.ipswich.2 1350 Maiden
2022-10-28T04:12:00Z Open 202210280400.T.AUS.ipswich.3 3 Swich On Inc Mdn Plate race:202210280400.T.AUS.ipswich.3 1350 Maiden
2022-10-28T04:47:00Z Open 202210280400.T.AUS.ipswich.4 4 Oxley Golf Club (Bm68) race:202210280400.T.AUS.ipswich.4 800 Benchmark 68
2022-10-28T05:27:00Z Open 202210280500.T.AUS.ipswich.5 5 Icare Services Australia (C4) race:202210280500.T.AUS.ipswich.5 1200 Class 4
2022-10-28T06:04:00Z Open 202210280600.T.AUS.ipswich.6 6 Sirromet Hcp (C1) race:202210280600.T.AUS.ipswich.6 1350 Class 1
2022-10-28T06:40:00Z Open 202210280600.T.AUS.ipswich.7 7 Nuturf (Bm65) race:202210280600.T.AUS.ipswich.7 1350 Benchmark 65
2022-10-28T07:20:00Z Open 202210280700.T.AUS.ipswich.8 8 Bundaberg Rum Hcp (C2) race:202210280700.T.AUS.ipswich.8 1666 Class 2
2022-10-28T02:15:00Z Open 202210280200.T.AUS.coonamble.1 1 Southern Cross Turf Hcp (C2) race:202210280200.T.AUS.coonamble.1 1600 Class 2
2022-10-28T02:50:00Z Open 202210280200.T.AUS.coonamble.2 2 Qube Agri&Paragon Pastoral Mdn race:202210280200.T.AUS.coonamble.2 1200 Maiden
2022-10-28T03:25:00Z Open 202210280300.T.AUS.coonamble.3 3 Dad & Dave Turf Mdn Plate race:202210280300.T.AUS.coonamble.3 1400 Maiden
2022-10-28T04:05:00Z Open 202210280400.T.AUS.coonamble.4 4 Keady & Nalder Families Mdn race:202210280400.T.AUS.coonamble.4 1100 Maiden
2022-10-28T04:40:00Z Open 202210280400.T.AUS.coonamble.5 5 Swanny's Foods (Bm58) race:202210280400.T.AUS.coonamble.5 1100 Benchmark 58
2022-10-28T05:20:00Z Open 202210280500.T.AUS.coonamble.6 6 Inland Petroleum Hcp (C1) race:202210280500.T.AUS.coonamble.6 1100 Class 1
2022-10-28T05:55:00Z Open 202210280500.T.AUS.coonamble.7 7 Geronimo Farm Equipment (Bm66) race:202210280500.T.AUS.coonamble.7 1200 Benchmark 66
2022-10-28T06:30:00Z Open 202210280600.T.AUS.coonamble.8 8 Nutrien Ag (Bm58) race:202210280600.T.AUS.coonamble.8 1400 Benchmark 58

I need to use the race keys (T.AUS.pakenham_synthetic.1 for example) in another requests URL in another function to collect the data I need for each race.

so I would need to use the race keys one by one to call this URL below, then i will parse that race data and move onto the next race (race key).

{Base_url}events/202210280200.T.AUS.pakenham_synthetic.1.json?app_id={AppID}&app_key={AppKey} 

what would be the best way to achieve this?

thank you for your assistance. Still learning, so apologies if it’s an obvious question.

Asked By: DrewS

||

Answers:

You need to iterate over that data gathered by races_list(). Here is a basic example, although you might want to consider moving it into its own function.

if __name__ == "__main__":
    for key in races_list():
        data = requests.get(f'{Base_url}events/{key}.json?app_id={AppID}&app_key={AppKey}').text      
        # parse race data
Answered By: user99999
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.