From acea6018a6902aa5eecd00a08545d618f3156dbe Mon Sep 17 00:00:00 2001 From: Marcos Marado Date: Sat, 3 Oct 2020 17:28:10 +0100 Subject: [PATCH] Do not crash with malformed visitors.json files If the visitors.json file does not contain a valid JSON file, reset it, and act as if it was empty. --- botany.py | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/botany.py b/botany.py index 6d199c8..780fa4f 100755 --- a/botany.py +++ b/botany.py @@ -229,20 +229,24 @@ class Plant(object): visitors_this_check = [] if os.path.isfile(visitor_filepath): with open(visitor_filepath, 'r') as visitor_file: - data = json.load(visitor_file) - if data: - for element in data: - if element['user'] not in self.visitors: - self.visitors.append(element['user']) - if element['user'] not in visitors_this_check: - visitors_this_check.append(element['user']) - # prevent users from manually setting watered_time in the future - if element['timestamp'] <= int(time.time()): - guest_timestamps.append(element['timestamp']) - try: - self.update_visitor_db(visitors_this_check) - except: - pass + try: + data = json.load(visitor_file) + if data: + for element in data: + if element['user'] not in self.visitors: + self.visitors.append(element['user']) + if element['user'] not in visitors_this_check: + visitors_this_check.append(element['user']) + # prevent users from manually setting watered_time in the future + if element['timestamp'] <= int(time.time()): + guest_timestamps.append(element['timestamp']) + try: + self.update_visitor_db(visitors_this_check) + except: + pass + with open(visitor_filepath, 'w') as visitor_file: + visitor_file.write('[]') + except: with open(visitor_filepath, 'w') as visitor_file: visitor_file.write('[]') else: