forked from danny-y-yang/yangba
-
Notifications
You must be signed in to change notification settings - Fork 0
/
dataDump.py
76 lines (65 loc) · 2.29 KB
/
dataDump.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import json, requests, pymysql, os
from utilities import MySQL_Writer, DataDumper, NameDumper, PlayerDumper, GameDumper
from playerScraper import namesToSQL
#configuration variables
url = "https://api-nba-v1.p.rapidapi.com"
headers = {
'x-rapidapi-key': "b990592d51msh5e1029396589d1bp18dd72jsnce5f8c3e8b6c",
'x-rapidapi-host': "api-nba-v1.p.rapidapi.com"
}
connection = pymysql.connect(
host='yba-database.c30igyqguxod.us-west-1.rds.amazonaws.com',
user='admin',
password=os.getenv('SECRETS_MANAGER_CONTRASENA'),
database='yba'
)
def dumpJson(data, testFile):
if not isinstance(testFile, str):
print("testFile parameter must be of type string")
return False
try:
with open(testFile, 'w') as f:
json.dump(data, f, indent=4)
return True
except Exception as e:
print(f"Could not dump into json file with exception {e}")
return False
def getData(endpoint):
try:
response = requests.get(url + endpoint, headers=headers)
except Exception as e:
print(f"Could not fetch data with endpoint {endpoint}")
return None
if (response.status_code == 200):
return response.json()
print(f"Could not fetch data with endpoint {endpoint} with status code {response.status_code}")
return None
def lambda_handler(event, context):
try:
#gets most recent season
season = getData("/seasons")['response'][-1]
dd = NameDumper(season)
dd.dumpData()
gd = GameDumper(season)
gd.dumpData()
pd = PlayerDumper(season)
pd.dumpData()
#transfer data to MySQL, updating games and player data in version2 under most recent season
sqlWriter = MySQL_Writer("games", connection, season)
sqlWriter.transferData()
sqlWriter.setTable("version2")
sqlWriter.transferData()
sqlWriter.normalizeOPI()
#writes player profile information to MySQL
namesToSQL()
if connection:
connection.close()
return {
'statusCode': 200,
'body': 'Data uploaded successfully'
}
except Exception as e:
return {
'statusCode': 500,
'body': f'Error uploading file: {e}'
}