From 63f62dc1239becd89471b166bd219f446c249895 Mon Sep 17 00:00:00 2001 From: Peter Steiner Date: Wed, 5 Sep 2018 22:42:25 +0200 Subject: [PATCH] Add more error handling - when DEVICE_DETAIL is empty/None - when ACTIVITY_DETAIL gets HTTP error 500 - when a['activityName'] is None --- gcexport3.py | 44 ++++++++++++++++++++++++++------------------ 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/gcexport3.py b/gcexport3.py index 960d463..792c76d 100755 --- a/gcexport3.py +++ b/gcexport3.py @@ -472,23 +472,31 @@ def http_req(url, post=None, headers=None): URL_DEVICE_DETAIL + str(JSON_SUMMARY["metadataDTO"]["deviceApplicationInstallationId"]) ) - write_to_file( - ARGS.directory + "/" + str(a["activityId"]) + "_app_info.json", - DEVICE_DETAIL.decode(), - "a", - ) - JSON_DEVICE = json.loads(DEVICE_DETAIL) - # print(JSON_DEVICE) + if DEVICE_DETAIL: + write_to_file( + ARGS.directory + "/" + str(a["activityId"]) + "_app_info.json", + DEVICE_DETAIL.decode(), + "a", + ) + JSON_DEVICE = json.loads(DEVICE_DETAIL) + # print(JSON_DEVICE) + else: + print("Retrieving Device Details failed.") + JSON_DEVICE = None print("Activity details URL: " + URL_GC_ACTIVITY_DETAIL + str(a["activityId"])) - ACTIVITY_DETAIL = http_req(URL_GC_ACTIVITY_DETAIL + str(a["activityId"])) - write_to_file( - ARGS.directory + "/" + str(a["activityId"]) + "_activity_detail.json", - ACTIVITY_DETAIL.decode(), - "a", - ) - JSON_DETAIL = json.loads(ACTIVITY_DETAIL) - # print(JSON_DETAIL) + try: + ACTIVITY_DETAIL = http_req(URL_GC_ACTIVITY_DETAIL + str(a["activityId"])) + write_to_file( + ARGS.directory + "/" + str(a["activityId"]) + "_activity_detail.json", + ACTIVITY_DETAIL.decode(), + "a", + ) + JSON_DETAIL = json.loads(ACTIVITY_DETAIL) + # print(JSON_DETAIL) + except: + print("Retrieving Activity Details failed.") + JSON_DETAIL = None # Write stats to CSV. empty_record = "," @@ -496,7 +504,7 @@ def http_req(url, post=None, headers=None): csv_record += ( empty_record - if "activityName" not in a + if "activityName" not in a or not a["activityName"] else '"' + a["activityName"].replace('"', '""') + '",' ) @@ -628,7 +636,7 @@ def http_req(url, post=None, headers=None): ) csv_record += ( empty_record - if "productDisplayName" not in JSON_DEVICE + if not JSON_DEVICE or "productDisplayName" not in JSON_DEVICE else JSON_DEVICE["productDisplayName"] + " " + JSON_DEVICE["versionString"] @@ -691,7 +699,7 @@ def http_req(url, post=None, headers=None): ) csv_record += ( empty_record - if "metricsCount" + if not JSON_DETAIL or "metricsCount" not in JSON_DETAIL["com.garmin.activity.details.json.ActivityDetails"] else str( JSON_DETAIL["com.garmin.activity.details.json.ActivityDetails"][