· 4 years ago · Apr 06, 2021, 07:26 PM
1import http.client
2import json
3import api_key
4import pymongo
5import common_variables
6from pymongo import MongoClient
7
8conn = http.client.HTTPSConnection("v3.football.api-sports.io")
9headers = {
10 'x-rapidapi-host': "v3.football.api-sports.io",
11 'x-rapidapi-key': api_key.key
12 }
13
14cluster = MongoClient("mongodb+srv://PL-Discbot_Admin:" + api_key.mongo_user + "@pl-discbot.2tevr.mongodb.net/PL-Discbot?retryWrites=true&w=majority")
15db = cluster["PL-Discbot"]
16collection = db["League_Table"]
17
18#! Find out how to make this dynamic/modula
19### Request URL Creation for Standings, league 39(PL), Season2020
20## Request_url == Endpoint Endpoint -> League -> Season
21standings_endpoint = "/standings"
22league_url = "league=39"
23season_url = "season=2020"
24request_url = str(standings_endpoint + "?" + league_url + "&" + season_url)
25
26### Connection string to connect to API and Retrieve Data:
27conn.request("GET", request_url, headers=headers)
28
29### Gets Response from Request, stores in imported_json, unloads into var "data"
30imported_json = conn.getresponse().read()
31data = json.loads(imported_json)
32#Reponse = the actual Response rather than all data.
33response = data["response"][0]["league"]
34#Standings = The actual standings specific data ready to use
35standings = response["standings"][0]
36
37#creating Team Class
38class Team:
39 def __init__(self, data):
40 self.teamName = data["team"]["name"]
41 self.teamID = data["team"]["id"]
42 self.rank = data["rank"]
43 self.points = data["points"]
44 self.goalDiff = data["goalsDiff"]
45 self.form = data["form"]
46 self.played = data["all"]["played"]
47 self.win = data["all"]["win"]
48 self.draw = data["all"]["draw"]
49 self.lose = data["all"]["lose"]
50 self.goalsFor = data["all"]["goals"]["for"]
51 self.goalsAgainst = data["all"]["goals"]["against"]
52 self.homePlayed = data["home"]["played"]
53 self.homeWin = data["home"]["win"]
54 self.homeDraw = data["home"]["draw"]
55 self.homeLose = data["home"]["lose"]
56 self.homeGoalsFor = data["home"]["goals"]["for"]
57 self.homeGoalsAgainst = data["home"]["goals"]["against"]
58 self.awayPlayed = data["away"]["played"]
59 self.awayWin = data["away"]["win"]
60 self.awayDraw = data["away"]["draw"]
61 self.awayLose = data["away"]["lose"]
62 self.awayGoalsFor = data["away"]["goals"]["for"]
63 self.awayGoalsAgainst = data["away"]["goals"]["against"]
64
65teams_storage_dict = {}
66for data in standings:
67 teams_storage_dict[data["team"]["name"]] = Team(data)
68
69for key, value in teams_storage_dict.items():
70 collection.update_many({"teamName":key}, {"$set":{
71 "teamName":value.teamName,
72 "teamID":value.teamID,
73 "rank":value.rank,
74 "points":value.points,
75 "goalDiff":value.goalDiff,
76 "form":value.form,
77 "played":value.played,
78 "win":value.win,
79 "draw":value.draw,
80 "lose":value.lose,
81 "goalsFor":value.goalsFor,
82 "goalsAgainst":value.goalsAgainst,
83 "homePlayed":value.homePlayed,
84 "homeWin":value.homeWin,
85 "homeDraw":value.homeDraw,
86 "homeLose":value.homeLose,
87 "homeGoalsFor":value.homeGoalsFor,
88 "homeGoalsAgainst":value.homeGoalsAgainst,
89 "awayPlayed":value.awayPlayed,
90 "awayWin":value.awayWin,
91 "awayDraw":value.awayDraw,
92 "awayLose":value.awayLose,
93 "awayGoalsFor":value.awayGoalsFor,
94 "awayGoalsAgainst":value.awayGoalsAgainst
95 }})
96
97
98