From 1a4ed74c388014650860a2d45d15b369c07a3bfc Mon Sep 17 00:00:00 2001 From: Neythen Date: Wed, 16 Jun 2021 19:23:14 +0100 Subject: [PATCH] sports bug fixes --- api_caller.py | 25 ++++++++++---- csv/crypto.csv | 4 +-- csv/currency.json | 2 +- csv/current_weather.json | 2 +- csv/daily_weather.json | 2 +- csv/last_update.csv | 2 +- csv/news.csv | 40 +++++++++++----------- csv/settings.csv | 2 +- csv/sports/premier_league/past_games.json | 2 +- csv/tickers.csv | 6 ++-- final.ppm | Bin 251631 -> 251631 bytes league.ppm | Bin 195183 -> 193551 bytes 12 files changed, 50 insertions(+), 37 deletions(-) diff --git a/api_caller.py b/api_caller.py index 397fdcc..6c0ee97 100644 --- a/api_caller.py +++ b/api_caller.py @@ -299,9 +299,9 @@ def updateCurrencies(api_key): def updateSports(api_key): - url = 'https://www.thesportsdb.com/api/v1/json/1/lookuptable.php?l=4328&s=2020-2021' # premier league table - 'https://www.thesportsdb.com/api/v1/json/1/eventsnext.php?id=133602' # next five events by team ID (paid) use this for upcoming team games - 'https://www.thesportsdb.com/api/v2/json/APIKEY/livescore.php?l=4380' #live scores + url = 'https://www.thesportsdb.com/api/v1/json/{}/lookuptable.php?l=4328&s=2020-2021'.format(api_key) # premier league table + 'https://www.thesportsdb.com/api/v1/json/{}/eventsnext.php?id=133602'.format(api_key) # next five events by team ID (paid) use this for upcoming team games + r = requests.get(url) all_data = r.json() @@ -326,7 +326,11 @@ def updateSports(api_key): json.dump(premier_teams, open( "csv/sports/premier_league/team_stats.json", 'w+' )) - url = 'https://www.thesportsdb.com/api/v1/json/1/eventsseason.php?id=4328&s=2020-2021' # all events in premier league + #url = 'https://www.thesportsdb.com/api/v1/json/{}/eventsseason.php?id=4328&s=2020-2021'.format(api_key) # all past events in premier league + + url ='https://www.thesportsdb.com/api/v1/json/{}/eventspastleague.php?id=4328'.format(api_key) #last 15 events on the league (premium only) + + print(url) r = requests.get(url) all_data = r.json() @@ -336,9 +340,10 @@ def updateSports(api_key): events = [] - for i in range(len(all_data['events'][i])): + for i in range(len(all_data['events'])): event = {} event['date'] = all_data['events'][i]['dateEvent'] + print(event['date']) event['time'] = all_data['events'][i]['strTime'] event['home_team'] = all_data['events'][i]['strHomeTeam'] event['home_score'] = all_data['events'][i]['intHomeScore'] @@ -350,8 +355,13 @@ def updateSports(api_key): json.dump(events, open( "csv/sports/premier_league/past_games.json", 'w+' )) - url ='https://www.thesportsdb.com/api/v1/json/1/eventsnextleague.php?id=4328' #next 15 events on the league (premium only) + url ='https://www.thesportsdb.com/api/v1/json/{}/eventsnextleague.php?id=4328'.format(api_key) #next 15 events on the league (premium only) + + url = 'https://www.thesportsdb.com/api/v2/json/{}/livescore.php?l=4380'.format(api_key) #live scores + print(all_data) + + @@ -399,6 +409,9 @@ if __name__ == '__main__': currency_key = '862dbb6d1101ce0c5136' sports_key = '97436974' + updateSports(sports_key) + sys.exit() + updateCurrencies(currency_key) diff --git a/csv/crypto.csv b/csv/crypto.csv index 3a9b710..eceb78b 100644 --- a/csv/crypto.csv +++ b/csv/crypto.csv @@ -1,3 +1,3 @@ symbol,name,base,current,24hr change -BTC,bitcoin,usd,41446,3.248036397011369 -ETH,ethereum,gbp,1853.43,1.422507551227988 +BTC,bitcoin,usd,39051,-4.251547889353901 +ETH,ethereum,gbp,1717.96,-6.393401847745126 diff --git a/csv/currency.json b/csv/currency.json index db3afc4..bfcf9b0 100644 --- a/csv/currency.json +++ b/csv/currency.json @@ -1 +1 @@ -["USD", {"AUD": [1.3001, 1.2959], "CAD": [1.2189, 1.2167], "CHF": [0.90015, 0.89903], "EUR": [0.8259, 0.82563], "GBP": [0.71151, 0.7092], "JPY": [110.08, 109.77], "NZD": [1.403, 1.4002]}] \ No newline at end of file +["USD", {"AUD": [1.2965, 1.3001], "CAD": [1.2177, 1.2189], "CHF": [0.89871, 0.90015], "EUR": [0.82481, 0.8259], "GBP": [0.70793, 0.71151], "JPY": [109.86, 110.08], "NZD": [1.3981, 1.403]}] \ No newline at end of file diff --git a/csv/current_weather.json b/csv/current_weather.json index c8a8761..700ec80 100644 --- a/csv/current_weather.json +++ b/csv/current_weather.json @@ -1 +1 @@ -{"main_weather": "Clouds", "description": "overcast clouds", "temp": 29.6, "min_temp": 28.91, "max_temp": 30.21, "feels_like": 35.96, "humidity": 78, "clouds": 100, "wind_speed": 0.45, "wind_direction": 332, "visibility": 10000, "uv": 0, "rain_chance": 0.49} \ No newline at end of file +{"main_weather": "Clouds", "description": "overcast clouds", "temp": 29.83, "min_temp": 28.91, "max_temp": 30.21, "feels_like": 36.83, "humidity": 79, "clouds": 100, "wind_speed": 0.45, "wind_direction": 27, "visibility": 10000, "uv": 0, "rain_chance": 0.63} \ No newline at end of file diff --git a/csv/daily_weather.json b/csv/daily_weather.json index 88adc8c..ba2a50e 100644 --- a/csv/daily_weather.json +++ b/csv/daily_weather.json @@ -1 +1 @@ -[{"main_weather": "Rain", "description": "light rain", "min_temp": 28.77, "max_temp": 30.09}, {"main_weather": "Rain", "description": "moderate rain", "min_temp": 28.25, "max_temp": 30.18}, {"main_weather": "Rain", "description": "moderate rain", "min_temp": 28.38, "max_temp": 30.34}, {"main_weather": "Rain", "description": "light rain", "min_temp": 28.71, "max_temp": 30.54}, {"main_weather": "Rain", "description": "light rain", "min_temp": 28.64, "max_temp": 30.36}, {"main_weather": "Rain", "description": "light rain", "min_temp": 28.8, "max_temp": 30.44}, {"main_weather": "Rain", "description": "moderate rain", "min_temp": 27.04, "max_temp": 29.26}, {"main_weather": "Rain", "description": "moderate rain", "min_temp": 26.78, "max_temp": 27.71}] \ No newline at end of file +[{"main_weather": "Rain", "description": "moderate rain", "min_temp": 28.39, "max_temp": 29.91}, {"main_weather": "Rain", "description": "light rain", "min_temp": 28.62, "max_temp": 30.31}, {"main_weather": "Rain", "description": "light rain", "min_temp": 28.85, "max_temp": 30.66}, {"main_weather": "Rain", "description": "light rain", "min_temp": 28.45, "max_temp": 30.88}, {"main_weather": "Rain", "description": "light rain", "min_temp": 28.72, "max_temp": 30.97}, {"main_weather": "Rain", "description": "moderate rain", "min_temp": 26.93, "max_temp": 29.19}, {"main_weather": "Rain", "description": "moderate rain", "min_temp": 26.54, "max_temp": 28.14}, {"main_weather": "Rain", "description": "moderate rain", "min_temp": 26.46, "max_temp": 27.82}] \ No newline at end of file diff --git a/csv/last_update.csv b/csv/last_update.csv index f9afdfe..94f2a06 100644 --- a/csv/last_update.csv +++ b/csv/last_update.csv @@ -1 +1 @@ -15/06/2021 14:34:09 +16/06/2021 14:19:52 diff --git a/csv/news.csv b/csv/news.csv index fa6d8d8..65e6807 100644 --- a/csv/news.csv +++ b/csv/news.csv @@ -1,21 +1,21 @@ headline,source,date,time -Hungary vs Portugal LIVE: Euro 2020 latest score^ goals and updates from fixture today - The Independent,Independent,2021-06-15,16:37:47Z -Smash Bros Ultimate DLC reveal: Tekken's Kazuya revealed as next Fighters Pass 2 brawler - Express,Express,2021-06-15,16:32:33Z -Duterte retains GCQ with restrictions in NCR Plus - The Manila Times,The Manila Times,2021-06-15,16:30:00Z -Noul sistem de operare mobil pentru care 4 milioane de dezvoltatori dezvolta aplicatii - Dojotech.ro,Dojotech.ro,2021-06-15,16:23:19Z -SC orders Disini: Pay government ₧1 billion in damages for $2.2-billion nuke plant | Joel R. San Juan - Business Mirror,Businessmirror.com.ph,2021-06-15,16:14:00Z -MP Yasmin Ratansi put herself in conflict of interest by employing foster sister: ethics commissioner - CBC.ca,CBC News,2021-06-15,16:13:03Z -Chicago mass shooting: 8 shot^ 4 fatally^ in Englewood home - Chicago Sun-Times,Suntimes.com,2021-06-15,16:10:07Z -China^ Its Military Might Expanding^ Accuses NATO of Hypocrisy - The New York Times,New York Times,2021-06-15,16:09:49Z -US retail sales fell in May; UK jobless rate drops and payrolls rise – business live - The Guardian,The Guardian,2021-06-15,16:07:54Z -Beats Studio Buds vs Apple AirPods Pro: the noise-cancelling earbuds compared - TechRadar,TechRadar,2021-06-15,16:06:16Z -India vs Afghanistan^ Highlights^ FIFA World Cup 2022 Qualifiers: India held to 1-1 draw - Firstpost,Firstpost,2021-06-15,16:02:53Z -Cicadas that come out every 17 years may emerge more often in the future - Science Magazine,Science Magazine,2021-06-15,16:00:00Z -Converge investing P1 billion for new data center - Philstar.com,Philippine Star,2021-06-15,16:00:00Z -Garland announces national strategy to combat domestic terrorism^ invoking US Capitol riot - CNN ,CNN,2021-06-15,15:55:00Z -Average Canadian house price up 38% compared to last year^ but down from March - CBC.ca,CBC News,2021-06-15,15:48:45Z -'Pure insanity': Emails detail Trump's pressure on Justice Department to overturn election - NBC News,NBC News,2021-06-15,15:48:26Z -UW astronomer redefines the scientific hero as part of The Great Courses - UW News,UW News,2021-06-15,15:46:44Z -Gone Girl actor Lisa Banes dies 10 days after hit-and-run - Independent.ie,Independent.ie,2021-06-15,15:44:00Z -Electrons can form a strange 2-D 'Flatland' in a superconductor - Games Bollyinside - BollyInside,Bollyinside.com,2021-06-15,15:43:49Z -BREAKING | There are no babies^ admits father of ‘Tembisa 10’ - News24,News24,2021-06-15,15:41:38Z +US scientists develop coating to capture airborne droplets - The Straits Times,The Straits Times,2021-06-16,16:36:07Z +Royal Ascot 2021^ day two: Love wins Prince of Wales Stakes – live! - The Guardian,The Guardian,2021-06-16,16:34:37Z +Turkey vs Wales^ Euro 2020 live: score and latest updates from Group A - The Telegraph,Telegraph.co.uk,2021-06-16,16:29:01Z +European Union to recommend lifting travel restrictions on American tourists - USA TODAY,USA Today,2021-06-16,16:18:45Z +PH rep to UNHRC did not consult gov’t on vote to probe Israel over Gaza abuses – Duterte - INQUIRER.net,Inquirer.net,2021-06-16,16:17:00Z +IMF cuts PHL growth projection to 5.4% | Bianca Cuaresma - Business Mirror,Businessmirror.com.ph,2021-06-16,16:16:00Z +Skeletal remains recovered from Crosshaven identified as Barry Coughlan - Irish Examiner,Irish Examiner,2021-06-16,16:14:00Z +Baba Ijesha: Magistrate court rule for Nollywood actor Olarenwaju James to remain for detention till July 13 - BBC News,BBC News,2021-06-16,16:13:46Z +Over-the-counter fungicide holds potential to disrupt steroid hormone levels - News-Medical.Net,News-Medical.Net,2021-06-16,16:12:00Z +How to enable Google's unified Gmail interface - TechRepublic,TechRepublic,2021-06-16,16:07:49Z +New computational topology strategy to identify existing medicines for treating COVID-19 - News-Medical.net,News-Medical.Net,2021-06-16,16:07:00Z +JBL releases new headphones^ earphones for every lifestyle - BusinessWorld Online,BusinessWorld Online,2021-06-16,16:03:16Z +Lina Khan^ Big Tech skeptic^ named FTC chair mere hours after confirmation - Ars Technica,Ars Technica,2021-06-16,16:01:57Z +PHL is polio free again^ thanks to mass inoculation drive | Claudeth Mocon-Ciriaco - Business Mirror,Businessmirror.com.ph,2021-06-16,16:01:00Z +'Confident' A5 residents line up early for COVID-19 vaccination in Manila - GMA News,GMA News,2021-06-16,16:00:52Z +Connecticut confirms 2 Powassan virus infections: What to know about tick-borne illness - Fox News,Fox News,2021-06-16,16:00:35Z +Ghislaine Maxwell subjected to raw sewage in New York jail^ lawyer says - The Guardian,The Guardian,2021-06-16,16:00:00Z +Putin and Biden end summit^ schedule separate news conferences - The Straits Times,The Straits Times,2021-06-16,15:59:18Z +Putin and Biden end summit after less than 4 hours of talks - Rappler,Rappler,2021-06-16,15:57:00Z +Driver has 'heart attack' at the wheel and crashes into cars near school - Liverpool Echo,Liverpool Echo,2021-06-16,15:53:52Z diff --git a/csv/settings.csv b/csv/settings.csv index faff67f..2a9a10f 100644 --- a/csv/settings.csv +++ b/csv/settings.csv @@ -1,2 +1,2 @@ speed,brightness -s,9 \ No newline at end of file +f,9 \ No newline at end of file diff --git a/csv/sports/premier_league/past_games.json b/csv/sports/premier_league/past_games.json index c787825..c4940d5 100644 --- a/csv/sports/premier_league/past_games.json +++ b/csv/sports/premier_league/past_games.json @@ -1 +1 @@ -[{"date": "2020-09-12", "time": "14:00:00", "home_team": "Crystal Palace", "home_score": "1", "away_team": "Southampton", "away_score": "0", "round": "1"}, {"date": "2020-09-12", "time": "11:30:00", "home_team": "Fulham", "home_score": "0", "away_team": "Arsenal", "away_score": "3", "round": "1"}, {"date": "2020-09-12", "time": "16:30:00", "home_team": "Liverpool", "home_score": "4", "away_team": "Leeds", "away_score": "3", "round": "1"}, {"date": "2020-09-12", "time": "19:00:00", "home_team": "West Ham", "home_score": "0", "away_team": "Newcastle", "away_score": "2", "round": "1"}, {"date": "2020-09-13", "time": "15:30:00", "home_team": "Tottenham", "home_score": "0", "away_team": "Everton", "away_score": "1", "round": "1"}, {"date": "2020-09-13", "time": "13:00:00", "home_team": "West Brom", "home_score": "0", "away_team": "Leicester", "away_score": "3", "round": "1"}, {"date": "2020-09-14", "time": "19:15:00", "home_team": "Brighton", "home_score": "1", "away_team": "Chelsea", "away_score": "3", "round": "1"}, {"date": "2020-09-14", "time": "17:00:00", "home_team": "Sheffield United", "home_score": "0", "away_team": "Wolves", "away_score": "2", "round": "1"}, {"date": "2020-09-19", "time": "19:00:00", "home_team": "Arsenal", "home_score": "2", "away_team": "West Ham", "away_score": "1", "round": "2"}, {"date": "2020-09-19", "time": "11:30:00", "home_team": "Everton", "home_score": "5", "away_team": "West Brom", "away_score": "2", "round": "2"}, {"date": "2020-09-19", "time": "14:00:00", "home_team": "Leeds", "home_score": "4", "away_team": "Fulham", "away_score": "3", "round": "2"}, {"date": "2020-09-19", "time": "16:30:00", "home_team": "Man United", "home_score": "1", "away_team": "Crystal Palace", "away_score": "3", "round": "2"}, {"date": "2020-09-20", "time": "15:30:00", "home_team": "Chelsea", "home_score": "0", "away_team": "Liverpool", "away_score": "2", "round": "2"}, {"date": "2020-09-20", "time": "18:00:00", "home_team": "Leicester", "home_score": "4", "away_team": "Burnley", "away_score": "2", "round": "2"}, {"date": "2020-09-20", "time": "13:00:00", "home_team": "Newcastle", "home_score": "0", "away_team": "Brighton", "away_score": "3", "round": "2"}, {"date": "2020-09-20", "time": "11:00:00", "home_team": "Southampton", "home_score": "2", "away_team": "Tottenham", "away_score": "5", "round": "2"}, {"date": "2020-09-21", "time": "17:00:00", "home_team": "Aston Villa", "home_score": "1", "away_team": "Sheffield United", "away_score": "0", "round": "2"}, {"date": "2020-09-21", "time": "19:15:00", "home_team": "Wolves", "home_score": "1", "away_team": "Man City", "away_score": "3", "round": "2"}, {"date": "2020-09-26", "time": "11:30:00", "home_team": "Brighton", "home_score": "2", "away_team": "Man United", "away_score": "3", "round": "3"}, {"date": "2020-09-26", "time": "19:00:00", "home_team": "Burnley", "home_score": "0", "away_team": "Southampton", "away_score": "1", "round": "3"}, {"date": "2020-09-26", "time": "14:00:00", "home_team": "Crystal Palace", "home_score": "1", "away_team": "Everton", "away_score": "2", "round": "3"}, {"date": "2020-09-26", "time": "16:30:00", "home_team": "West Brom", "home_score": "3", "away_team": "Chelsea", "away_score": "3", "round": "3"}, {"date": "2020-09-27", "time": "15:30:00", "home_team": "Man City", "home_score": "2", "away_team": "Leicester", "away_score": "5", "round": "3"}, {"date": "2020-09-27", "time": "11:00:00", "home_team": "Sheffield United", "home_score": "0", "away_team": "Leeds", "away_score": "1", "round": "3"}, {"date": "2020-09-27", "time": "13:00:00", "home_team": "Tottenham", "home_score": "1", "away_team": "Newcastle", "away_score": "1", "round": "3"}, {"date": "2020-09-27", "time": "18:00:00", "home_team": "West Ham", "home_score": "4", "away_team": "Wolves", "away_score": "0", "round": "3"}, {"date": "2020-09-28", "time": "16:45:00", "home_team": "Fulham", "home_score": "0", "away_team": "Aston Villa", "away_score": "3", "round": "3"}, {"date": "2020-09-28", "time": "19:00:00", "home_team": "Liverpool", "home_score": "3", "away_team": "Arsenal", "away_score": "1", "round": "3"}, {"date": "2020-10-03", "time": "11:30:00", "home_team": "Chelsea", "home_score": "4", "away_team": "Crystal Palace", "away_score": "0", "round": "4"}, {"date": "2020-10-03", "time": "14:00:00", "home_team": "Everton", "home_score": "4", "away_team": "Brighton", "away_score": "2", "round": "4"}, {"date": "2020-10-03", "time": "16:30:00", "home_team": "Leeds", "home_score": "1", "away_team": "Man City", "away_score": "1", "round": "4"}, {"date": "2020-10-03", "time": "19:00:00", "home_team": "Newcastle", "home_score": "3", "away_team": "Burnley", "away_score": "1", "round": "4"}, {"date": "2020-10-04", "time": "13:00:00", "home_team": "Arsenal", "home_score": "2", "away_team": "Sheffield United", "away_score": "1", "round": "4"}, {"date": "2020-10-04", "time": "18:15:00", "home_team": "Aston Villa", "home_score": "7", "away_team": "Liverpool", "away_score": "2", "round": "4"}, {"date": "2020-10-04", "time": "11:00:00", "home_team": "Leicester", "home_score": "0", "away_team": "West Ham", "away_score": "3", "round": "4"}, {"date": "2020-10-04", "time": "15:30:00", "home_team": "Man United", "home_score": "1", "away_team": "Tottenham", "away_score": "6", "round": "4"}, {"date": "2020-10-04", "time": "11:00:00", "home_team": "Southampton", "home_score": "2", "away_team": "West Brom", "away_score": "0", "round": "4"}, {"date": "2020-10-04", "time": "13:00:00", "home_team": "Wolves", "home_score": "1", "away_team": "Fulham", "away_score": "0", "round": "4"}, {"date": "2020-10-17", "time": "14:00:00", "home_team": "Chelsea", "home_score": "3", "away_team": "Southampton", "away_score": "3", "round": "5"}, {"date": "2020-10-17", "time": "11:30:00", "home_team": "Everton", "home_score": "2", "away_team": "Liverpool", "away_score": "2", "round": "5"}, {"date": "2020-10-17", "time": "16:30:00", "home_team": "Man City", "home_score": "1", "away_team": "Arsenal", "away_score": "0", "round": "5"}, {"date": "2020-10-17", "time": "19:00:00", "home_team": "Newcastle", "home_score": "1", "away_team": "Man United", "away_score": "4", "round": "5"}, {"date": "2020-10-18", "time": "13:00:00", "home_team": "Crystal Palace", "home_score": "1", "away_team": "Brighton", "away_score": "1", "round": "5"}, {"date": "2020-10-18", "time": "18:15:00", "home_team": "Leicester", "home_score": "0", "away_team": "Aston Villa", "away_score": "1", "round": "5"}, {"date": "2020-10-18", "time": "11:00:00", "home_team": "Sheffield United", "home_score": "1", "away_team": "Fulham", "away_score": "1", "round": "5"}, {"date": "2020-10-18", "time": "15:30:00", "home_team": "Tottenham", "home_score": "3", "away_team": "West Ham", "away_score": "3", "round": "5"}, {"date": "2020-10-19", "time": "19:00:00", "home_team": "Leeds", "home_score": "0", "away_team": "Wolves", "away_score": "1", "round": "5"}, {"date": "2020-10-19", "time": "16:30:00", "home_team": "West Brom", "home_score": "0", "away_team": "Burnley", "away_score": "0", "round": "5"}, {"date": "2020-10-23", "time": "19:00:00", "home_team": "Aston Villa", "home_score": "0", "away_team": "Leeds", "away_score": "3", "round": "6"}, {"date": "2020-10-24", "time": "14:00:00", "home_team": "Fulham", "home_score": "1", "away_team": "Crystal Palace", "away_score": "2", "round": "6"}, {"date": "2020-10-24", "time": "19:00:00", "home_team": "Liverpool", "home_score": "2", "away_team": "Sheffield United", "away_score": "1", "round": "6"}, {"date": "2020-10-24", "time": "16:30:00", "home_team": "Man United", "home_score": "0", "away_team": "Chelsea", "away_score": "0", "round": "6"}, {"date": "2020-10-24", "time": "11:30:00", "home_team": "West Ham", "home_score": "1", "away_team": "Man City", "away_score": "1", "round": "6"}, {"date": "2020-10-25", "time": "19:15:00", "home_team": "Arsenal", "home_score": "0", "away_team": "Leicester", "away_score": "1", "round": "6"}, {"date": "2020-10-25", "time": "14:00:00", "home_team": "Southampton", "home_score": "2", "away_team": "Everton", "away_score": "0", "round": "6"}, {"date": "2020-10-25", "time": "16:30:00", "home_team": "Wolves", "home_score": "1", "away_team": "Newcastle", "away_score": "1", "round": "6"}, {"date": "2020-10-26", "time": "17:30:00", "home_team": "Brighton", "home_score": "1", "away_team": "West Brom", "away_score": "1", "round": "6"}, {"date": "2020-10-26", "time": "20:00:00", "home_team": "Burnley", "home_score": "0", "away_team": "Tottenham", "away_score": "1", "round": "6"}, {"date": "2020-10-30", "time": "20:00:00", "home_team": "Wolves", "home_score": "2", "away_team": "Crystal Palace", "away_score": "0", "round": "7"}, {"date": "2020-10-31", "time": "15:00:00", "home_team": "Burnley", "home_score": "0", "away_team": "Chelsea", "away_score": "3", "round": "7"}, {"date": "2020-10-31", "time": "17:30:00", "home_team": "Liverpool", "home_score": "2", "away_team": "West Ham", "away_score": "1", "round": "7"}, {"date": "2020-10-31", "time": "12:30:00", "home_team": "Sheffield United", "home_score": "0", "away_team": "Man City", "away_score": "1", "round": "7"}, {"date": "2020-11-01", "time": "12:00:00", "home_team": "Aston Villa", "home_score": "3", "away_team": "Southampton", "away_score": "4", "round": "7"}] \ No newline at end of file +[{"date": "2021-05-23", "time": "15:00:00", "home_team": "Wolves", "home_score": "1", "away_team": "Man United", "away_score": "2", "round": "38"}, {"date": "2021-05-23", "time": "15:00:00", "home_team": "West Ham", "home_score": "3", "away_team": "Southampton", "away_score": "0", "round": "38"}, {"date": "2021-05-23", "time": "15:00:00", "home_team": "Sheffield United", "home_score": "1", "away_team": "Burnley", "away_score": "0", "round": "38"}, {"date": "2021-05-23", "time": "15:00:00", "home_team": "Man City", "home_score": "5", "away_team": "Everton", "away_score": "0", "round": "38"}, {"date": "2021-05-23", "time": "15:00:00", "home_team": "Liverpool", "home_score": "2", "away_team": "Crystal Palace", "away_score": "0", "round": "38"}, {"date": "2021-05-23", "time": "15:00:00", "home_team": "Leicester", "home_score": "2", "away_team": "Tottenham", "away_score": "4", "round": "38"}, {"date": "2021-05-23", "time": "15:00:00", "home_team": "Leeds", "home_score": "3", "away_team": "West Brom", "away_score": "1", "round": "38"}, {"date": "2021-05-23", "time": "15:00:00", "home_team": "Fulham", "home_score": "0", "away_team": "Newcastle", "away_score": "2", "round": "38"}, {"date": "2021-05-23", "time": "15:00:00", "home_team": "Aston Villa", "home_score": "2", "away_team": "Chelsea", "away_score": "1", "round": "38"}, {"date": "2021-05-23", "time": "15:00:00", "home_team": "Arsenal", "home_score": "2", "away_team": "Brighton", "away_score": "0", "round": "38"}, {"date": "2021-05-19", "time": "19:15:00", "home_team": "West Brom", "home_score": "1", "away_team": "West Ham", "away_score": "3", "round": "37"}, {"date": "2021-05-19", "time": "17:00:00", "home_team": "Tottenham", "home_score": "1", "away_team": "Aston Villa", "away_score": "2", "round": "37"}, {"date": "2021-05-19", "time": "17:00:00", "home_team": "Newcastle", "home_score": "1", "away_team": "Sheffield United", "away_score": "0", "round": "37"}, {"date": "2021-05-19", "time": "17:00:00", "home_team": "Everton", "home_score": "1", "away_team": "Wolves", "away_score": "0", "round": "37"}, {"date": "2021-05-19", "time": "18:00:00", "home_team": "Crystal Palace", "home_score": "1", "away_team": "Arsenal", "away_score": "3", "round": "37"}] \ No newline at end of file diff --git a/csv/tickers.csv b/csv/tickers.csv index 492aeb6..3cd5bc9 100644 --- a/csv/tickers.csv +++ b/csv/tickers.csv @@ -1,4 +1,4 @@ name,current,opening -MSFT,258.05,259.775 -NFLX,492.27,501.23 -GOOG,2519.23,2530.44 +MSFT,254.9199,259.4 +NFLX,486.83,495 +GOOG,2494.04,2524.95 diff --git a/final.ppm b/final.ppm index 8d49351948965b5634d4b093ff6ff324240a9f33..093470a0f56411145365e185088b2f695484111e 100755 GIT binary patch delta 9623 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 delta 9371 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 delta 12712 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