pagination fix
This commit is contained in:
@@ -230,6 +230,7 @@ def get_all_gcal_events(service, from_now=False):
|
|||||||
Retrieves all gcal events with custom property blechreizEvent=True.
|
Retrieves all gcal events with custom property blechreizEvent=True.
|
||||||
|
|
||||||
These are all events that have been created by this script.
|
These are all events that have been created by this script.
|
||||||
|
Handles pagination so all events are returned regardless of count.
|
||||||
"""
|
"""
|
||||||
if from_now:
|
if from_now:
|
||||||
now = datetime.datetime.now()
|
now = datetime.datetime.now()
|
||||||
@@ -237,21 +238,32 @@ def get_all_gcal_events(service, from_now=False):
|
|||||||
else:
|
else:
|
||||||
min_time = "2000-01-01T00:00:00-00:00"
|
min_time = "2000-01-01T00:00:00-00:00"
|
||||||
|
|
||||||
|
all_items = []
|
||||||
|
page_token = None
|
||||||
|
|
||||||
try:
|
try:
|
||||||
events = (
|
while True:
|
||||||
service.events()
|
kwargs = dict(
|
||||||
.list(
|
|
||||||
calendarId="primary",
|
calendarId="primary",
|
||||||
singleEvents=True,
|
singleEvents=True,
|
||||||
maxResults=1000,
|
maxResults=250, # max allowed per page by the API
|
||||||
orderBy="startTime",
|
orderBy="startTime",
|
||||||
timeMin=min_time,
|
timeMin=min_time,
|
||||||
timeMax="2100-01-01T00:00:00-00:00",
|
timeMax="2100-01-01T00:00:00-00:00",
|
||||||
privateExtendedProperty="blechreizEvent=true",
|
privateExtendedProperty="blechreizEvent=true",
|
||||||
)
|
)
|
||||||
.execute()
|
if page_token:
|
||||||
)
|
kwargs["pageToken"] = page_token
|
||||||
return events.get("items", [])
|
|
||||||
|
response = service.events().list(**kwargs).execute()
|
||||||
|
all_items.extend(response.get("items", []))
|
||||||
|
|
||||||
|
page_token = response.get("nextPageToken")
|
||||||
|
if not page_token:
|
||||||
|
break
|
||||||
|
|
||||||
|
logger.info(f"Fetched {len(all_items)} GCal events (all pages)")
|
||||||
|
return all_items
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Failed to retrieve GCal events: {e}")
|
logger.error(f"Failed to retrieve GCal events: {e}")
|
||||||
return []
|
return []
|
||||||
|
|||||||
Reference in New Issue
Block a user