diff --git a/database_caller.py b/database_caller.py index 653ef38..aba4107 100755 --- a/database_caller.py +++ b/database_caller.py @@ -26,7 +26,7 @@ try: last_updates = json.load(f) f.close() last_updates['stocks']['force'] = True - #last_updates['weather']['force'] = True + last_updates['sports_l']['force'] = True f = open('csv/last_updates.json', 'w') json.dump(last_updates, f) f.close() @@ -673,72 +673,179 @@ def updateLeagueTables(api_key, logf): #logf.write('\n ' + "".join(traceback.format_exception(sys.exc_info()[0], sys.exc_info()[1], sys.exc_info()[2]))) #logf.close() - + +def updatePLtime(): + + f = open('csv/live_games.json') + + try: + all_settings = json.load(f) + f.close() + + try: + for league in all_settings['leagues']: + if league == 'PREMIERLEAGUE': + subprocess.run(["sudo", "pkill", "-f", "live_pl.py"], shell=False) + premierleague = subprocess.Popen(["python3", "live_pl.py"], shell=False) + except: + pass + except: + pass + + def updateLeagueEvents(api_key, time, logf): url = 'https://bm7p954xoh.execute-api.us-east-2.amazonaws.com/default/ScriptsAPI/sports?{}='.format(time) if time == 'past': - f = open('csv/past_games.json') elif time == 'upcoming': - f = open('csv/upcoming_games.json') elif time == 'livescore': f = open('csv/live_games.json') - - try: all_settings = json.load(f) - f.close() - leagues = all_settings['leagues'].keys() - leagues_info = {} - - for league in leagues: - - if league == 'PREMIERLEAGUE': - url += 'PREMIERLEAGUE,' - else: - url += league + ',' - url = url[:-1] # remove last comma - url += '&apiKey=' + api_key - - r = requests.get(url) - - all_data = r.json() - - for league in all_data.keys(): - events = [] - for d in all_data[league]: - event = {} - event['date'] = d['dateEvent'] + + if time == 'livescore': + try: + leagues_info = {} + for league in all_settings['leagues']: + events = [] + if league == 'NFL': + subprocess.run(["sudo", "pkill", "-f", "live_nfl.py"], shell=False) + nfl = subprocess.Popen(["python3", "live_nfl.py"], shell=False) + events.append('Filled') + leagues_info[league.upper()] = events + if league == 'NBA': + subprocess.run(["sudo", "pkill", "-f", "live_nba.py"], shell=False) + nba = subprocess.Popen(["python3", "live_nba.py"], shell=False) + events.append('Filled') + leagues_info[league.upper()] = events + if league == 'NHL': + subprocess.run(["sudo", "pkill", "-f", "live_nhl.py"], shell=False) + nhl = subprocess.Popen(["python3", "live_nhl.py"], shell=False) + events.append('Filled') + leagues_info[league.upper()] = events + if league == 'MLB': + subprocess.run(["sudo", "pkill", "-f", "live_mlb.py"], shell=False) + mlb = subprocess.Popen(["python3", "live_mlb.py"], shell=False) + events.append('Filled') + leagues_info[league.upper()] = events + if league == 'PREMIERLEAGUE': + subprocess.run(["sudo", "pkill", "-f", "live_pl.py"], shell=False) + premierleague = subprocess.Popen(["python3", "live_pl.py"], shell=False) + events.append('Filled') + leagues_info[league.upper()] = events + if league == 'MLS': + subprocess.run(["sudo", "pkill", "-f", "live_mls.py"], shell=False) + mls = subprocess.Popen(["python3", "live_mls.py"], shell=False) + events.append('Filled') + leagues_info[league.upper()] = events + + all_settings['leagues'] = leagues_info + + f = open( "csv/live_games.json", 'w+' ) + json.dump(all_settings, f) + f.close() + except: + pass + + else: + + leagues = all_settings['leagues'].keys() + leagues_info = {} + + for league in leagues: - if time == 'live': - - event['progess'] = d['strProgress'] - event['status'] = d['strStatus'] + if league == 'PREMIERLEAGUE': + url += 'PREMIERLEAGUE,' else: + url += league + ',' + url = url[:-1] # remove last comma + url += '&apiKey=' + api_key + + r = requests.get(url) + + all_data = r.json() + + for league in all_data.keys(): + ten_or_fifteen = slice(None) + events = [] + if (league == 'PGA') or (league == 'LPGA') or (league == 'PGA_EU'): + ten_or_fifteen = slice(5) + else: + ten_or_fifteen = slice(None) + for d in all_data[league][ten_or_fifteen]: + event = {} + event['date'] = d['dateEvent'] - event['round'] = d['intRound'] - event['time'] = d['strTime'] - event['home_team'] = d['strHomeTeam'] - - event['away_team'] = d['strAwayTeam'] - - if time != 'upcoming': - event['away_score'] = d['intAwayScore'] - event['home_score'] = d['intHomeScore'] - - events.append(event) - leagues_info[league.upper()] = events - all_settings['leagues'] = leagues_info + if time == 'live': + event['progess'] = d['strProgress'] + event['status'] = d['strStatus'] + else: + if (league == 'PGA') or (league == 'LPGA') or (league == 'PGA_EU'): + event['date'] = d['dateEvent'] + event['event'] = d['strEvent'].replace("\u2019","'") + event['venue'] = d['strVenue'].replace("\u2019","'") + event['city'] = d['strCity'].replace("\u2019","'") + event['country'] = d['strCountry'] + event['season'] = d['strSeason'] + else: + event['round'] = d['intRound'] + event['time'] = d['strTime'] + event['home_team'] = d['strHomeTeam'] + event['away_team'] = d['strAwayTeam'] + + if time != 'upcoming': + if (league == 'PGA') or (league == 'LPGA') or (league == 'PGA_EU'): + event['golf_standings'] = d['strResult'] - f = open( "csv/{}_games.json".format(time), 'w+' ) - json.dump(all_settings, f) - f.close() + rank = ['n1', 'n2', 'n3', 'n4', 'n5', 'n6', 'n7', 'n8', 'n9', 'n10', 'T1', 'T2', 'T3', 'T4', 'T5', + 'T6', 'T7', 'T8', 'T9', 'T10'] + + def convert(string): + string = repr(string).replace('/', '') + li = list(string.split('\\')) + return li + + str3 = convert(event['golf_standings']) + + players = [] + + + for each in str3: + each = each.replace('nT', 'T', 1) + if each[:2] in rank: + try: + first_space = each.find(' ', 1) + second_space = each.find(' ', 4) + first_name = each[first_space:second_space].lstrip() + initial = first_name[0] + '.' + each = each.replace(first_name,initial) + except: + pass + interator = each.find('-') + if interator < 0: + interator = 0 + interator2 = each[interator:interator + 3] + result = each.split(interator2, 1)[0] + interator2 + players.append(result.rstrip()) + + event['golf_standings'] = players + else: + event['away_score'] = d['intAwayScore'] + event['home_score'] = d['intHomeScore'] + + events.append(event) + leagues_info[league.upper()] = events + all_settings['leagues'] = leagues_info + + f = open( "csv/{}_games.json".format(time), 'w+' ) + json.dump(all_settings, f) + f.close() except: pass #logf = open('log.txt', "a") @@ -819,7 +926,11 @@ def updateAll(api_key, weather_key, logf): if weather_key: updateWeather(weather_key, logf) - + +past_espn_time = True +past_pl_time = True + + if __name__ == '__main__': logf = open("log.txt", "a") @@ -1059,16 +1170,36 @@ if __name__ == '__main__': # sports live sports_time = datetime.strptime(last_updates['sports_l']['time'], "%d/%m/%Y %H:%M:%S") NY_time = datetime.now(NY_zone).replace(tzinfo=None) - diff = (NY_time - sports_time).total_seconds()/60 #minutes - if last_updates['sports_l']['force'] or diff >= update_frequencies['sports']:# or msg == 'S': + espn_time = "17:00Z" + espn_time_est = "12:00" + # if datetime.now(pytz.utc).strftime("%H:%MZ") < espn_time: + if datetime.now(pytz.timezone('America/New_York')).strftime("%H:%M") < espn_time_est: + past_espn_time = True + if last_updates['sports_l']['force'] or (datetime.now(pytz.timezone('America/New_York')).strftime("%H:%M") >= espn_time_est and past_espn_time):# or msg == 'S': + # if last_updates['sports_l']['force'] or (datetime.now(pytz.utc).strftime("%H:%MZ") >= espn_time and past_espn_time):# or msg == 'S': sports_time = NY_time.strftime("%d/%m/%Y %H:%M:%S") - #updateSports(api_key) last_updates['sports_l']['time'] = sports_time last_updates['sports_l']['force'] = False + past_espn_time = False update_process = Process(target = updateLeagueEvents, args = (api_key, 'livescore',logf)) update_process.start() update_processes.append(update_process) - + + #sports live (premier league) + pl_time = "12:00Z" + NY_time = datetime.now(NY_zone).replace(tzinfo=None) + sports_time = datetime.strptime(last_updates['sports_l']['time'], "%d/%m/%Y %H:%M:%S") + if datetime.now(pytz.utc).strftime("%H:%MZ") < pl_time: + past_pl_time = True + if datetime.now(pytz.utc).strftime("%H:%MZ") >= pl_time and past_pl_time:# or msg == 'S': + sports_time = NY_time.strftime("%d/%m/%Y %H:%M:%S") + past_pl_time = False + last_updates['sports_l']['time'] = sports_time + last_updates['sports_l']['force'] = False + update_process = Process(target = updatePLtime) + update_process.start() + update_processes.append(update_process) + # sports past sports_time = datetime.strptime(last_updates['sports_p']['time'], "%d/%m/%Y %H:%M:%S") NY_time = datetime.now(NY_zone).replace(tzinfo=None)