From 8a9fa7a9541a3de9b3a33ddb7e6b9e2aaecc7591 Mon Sep 17 00:00:00 2001 From: Rufei Zhou Date: Thu, 10 Apr 2025 15:14:32 -0700 Subject: [PATCH] summary outcome output --- src/events_plus/scrapers/sakuracon.py | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/src/events_plus/scrapers/sakuracon.py b/src/events_plus/scrapers/sakuracon.py index e52ca3d..67d8abe 100755 --- a/src/events_plus/scrapers/sakuracon.py +++ b/src/events_plus/scrapers/sakuracon.py @@ -207,7 +207,14 @@ def update_gcal(scraped_events, tracks, cfg): for e in scraped_events: events_by_track[e["tag_title"]].append(e) - + + action_taken_map = { + "added": [], + "updated": [], + "deleted": [], + "unchanged": [], + "other": [], + } for track_name, events in events_by_track.items(): batch = service.new_batch_http_request() track_gcal_id = gcal_map[track_name] @@ -218,6 +225,7 @@ def update_gcal(scraped_events, tracks, cfg): end = datetime.fromisoformat(e["end_calendar"]) if start >= end: + action_taken_map["other"].append(e) raise Exception((f"Event {e['title']} (uid: {ical_uid}) has an invalid duration, {start} -> {end}")) e_content = { @@ -258,17 +266,20 @@ def update_gcal(scraped_events, tracks, cfg): # if changes exist, update existing event if not changed: - print(f"Event {e['title']} (uid: {ical_uid}) seems to be the same, leaving as is") + action_taken_map["unchanged"].append(e) + #print(f"Event {e['title']} (uid: {ical_uid}) seems to be the same, leaving as is") else: print(f"Updating event {e['title']} (ical: {ical_uid}/g: {g_e['id']})") pprint.pp(jd.diff(g_content, e_content, syntax="symmetric"), depth=3) + action_taken_map["updated"].append(e) # print(e_content) # print(g_content) g_e.update(gcal_body) - batch.add(service.events().patch(calendarId=track_gcal_id, eventId=g_e["id"], body=g_e), callback=batch_exception_handler) + batch.add(service.events().update(calendarId=track_gcal_id, eventId=g_e["id"], body=g_e), callback=batch_exception_handler) batchlen += 1 else: # if event is new, insert print(f"Event {e['title']} (uid: {ical_uid}) seems to be new, adding...") + action_taken_map["added"].append(e) #service.events().insert(calendarId=track_gcal_id, body=gcal_body).execute() batch.add(service.events().insert(calendarId=track_gcal_id, body=gcal_body), callback=batch_create_handler) batchlen += 1 @@ -297,6 +308,7 @@ def update_gcal(scraped_events, tracks, cfg): for event in gcal_events: if "iCalUID" not in event or event["iCalUID"] not in uids and event["status"] != "cancelled": cal = gcalevent_gcal_map[event["id"]] + action_taken_map["unchanged"].append(event) print(f"gcal event g {event['id']} not in latest scrape, deleting...") service.events().delete(calendarId=cal, eventId=event["id"]).execute() @@ -304,6 +316,13 @@ def update_gcal(scraped_events, tracks, cfg): except HttpError as error: print(f"An error occurred: {error}") print(gcal_body) + + print("-------------------------") + print("Summary:") + summary_map = {} + for k,v in action_taken_map.items(): + summary_map[k] = len(v) + pprint.pp(summary_map, indent=2) def clear_gcals(cfg):