I'll put my complete code below so that anyone who can help won't have any difficulty running, just copy it and it's 100% functional, just very very slow.
To register the data I need, I make several requests on different API links, a tangle of calls. This makes it very slow and takes forever to parse each of the ID's.
I need help improving my code as I only know how to work this way it currently is.
import requests
import csv
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
}
with open("SofaScore/Goals_Mommentum.csv", "a", newline="", encoding="UTF-8") as f:
datasparaurl = ["2021-01-01","2021-01-02","2021-01-03","2021-01-04","2021-01-05"]
for dataparaurl in datasparaurl:
url1 = f'https://api.sofascore.com/api/v1/sport/football/scheduled-events/{dataparaurl}'
response1 = requests.get(url1, headers=headers).json()
events = response1['events']
for event in events:
nometimeA = event['homeTeam']['shortName']
nometimeB = event['awayTeam']['shortName']
nomedojogo = str(nometimeA) + " x " + str(nometimeB)
description = event['status']['description']
identidade = event['id']
jogofinalizado = event['status']['type']
if (jogofinalizado == 'finished'):
url2 = f'https://api.sofascore.com/api/v1/event/{identidade}/incidents'
response2 = requests.get(url2, headers=headers).json()
if 'incidents' in response2:
incidents = response2['incidents']
for incident in incidents:
if (incident['incidentType'] == 'goal'):
dadosdogol = []
dadosdogol.append(nomedojogo)
dadosdogol.append(identidade)
goalminute = incident['time']
if(goalminute >=0 and goalminute <=44 or goalminute >=46 and goalminute <=89):
dadosdogol.append(goalminute)
url3 = f'https://api.sofascore.com/api/v1/event/{identidade}/graph'
response3 = requests.get(url3, headers=headers).json()
if 'graphPoints' in response3:
graphs = response3['graphPoints']
for graph in graphs:
if(graph['minute'] == goalminute-5):
dadosdogol.append(abs(graph['value']))
if(graph['minute'] == goalminute-4):
dadosdogol.append(abs(graph['value']))
if(graph['minute'] == goalminute-3):
dadosdogol.append(abs(graph['value']))
if(graph['minute'] == goalminute-2):
dadosdogol.append(abs(graph['value']))
if(graph['minute'] == goalminute-1):
dadosdogol.append(abs(graph['value']))
print(dadosdogol)
a = csv.writer(f)
a.writerow(dadosdogol)
print(dataparaurl)
f.close()