From bf8899b8fb6fb0942cf9a04d6e5ab09ea159574e Mon Sep 17 00:00:00 2001 From: Eriks K Date: Thu, 30 Apr 2020 15:15:32 +0300 Subject: [PATCH] For those times when erepublik responds with unusable campign list --- discord_bot.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/discord_bot.py b/discord_bot.py index 1d1c56b..a4cbe04 100644 --- a/discord_bot.py +++ b/discord_bot.py @@ -74,13 +74,18 @@ def timestamp_to_datetime(timestamp: int) -> datetime.datetime: def get_battle_page(): global __last_battle_update_timestamp, __last_battle_response if int(datetime.datetime.now().timestamp()) >= __last_battle_update_timestamp + 60: + dt = datetime.datetime.now() r = requests.get('https://erep.lv/battles.json') - __last_battle_response = r.json() - __last_battle_update_timestamp = __last_battle_response.get('last_updated', int(datetime.datetime.now().timestamp())) - d = timestamp_to_datetime(__last_battle_update_timestamp//3600*3600) - os.makedirs(f"{d:%F/%H}/", exist_ok=True) - with open(f"{d:%F/%H}/{__last_battle_update_timestamp}.json", 'w') as f: + os.makedirs(f"{dt:%F/%H}/", exist_ok=True) + with open(f"{dt:%F/%H}/{int(dt.timestamp())}.json", 'w') as f: f.write(r.text) + try: + __last_battle_response = r.json() + except JSONDecodeError: + logger.warning(f"Received non json response from erep.lv/battles.json! " + f"Located at '{dt:%F/%H}/{int(dt.timestamp())}.json'") + return get_battle_page() + __last_battle_update_timestamp = __last_battle_response.get('last_updated', int(dt.timestamp())) return __last_battle_response