Display meeting links in calendar event output

Conference/meeting links (Google Meet, Zoom, etc.) were fetched from the
API but never included in get_events() output. Extract video entry point
from conferenceData (with hangoutLink fallback) and display it in all
three output modes: single detailed, multi detailed, and basic list.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Rein Lemmens
2026-03-12 21:08:16 +01:00
parent 38ad39bea6
commit e441ade35f

View File

@@ -172,6 +172,21 @@ def _preserve_existing_fields(
event_body[field_name] = new_value
def _get_meeting_link(item: Dict[str, Any]) -> str:
"""Extract video meeting link from event conference data or hangoutLink."""
conference_data = item.get("conferenceData")
if conference_data and "entryPoints" in conference_data:
for entry_point in conference_data["entryPoints"]:
if entry_point.get("entryPointType") == "video":
uri = entry_point.get("uri", "")
if uri:
return uri
hangout_link = item.get("hangoutLink", "")
if hangout_link:
return hangout_link
return ""
def _format_attendee_details(
attendees: List[Dict[str, Any]], indent: str = " "
) -> str:
@@ -448,6 +463,8 @@ async def get_events(
)
attendee_details_str = _format_attendee_details(attendees, indent=" ")
meeting_link = _get_meeting_link(item)
event_details = (
f"Event Details:\n"
f"- Title: {summary}\n"
@@ -456,6 +473,10 @@ async def get_events(
f"- Description: {description}\n"
f"- Location: {location}\n"
f"- Color ID: {color_id}\n"
)
if meeting_link:
event_details += f"- Meeting Link: {meeting_link}\n"
event_details += (
f"- Attendees: {attendee_emails}\n"
f"- Attendee Details: {attendee_details_str}\n"
)
@@ -494,10 +515,16 @@ async def get_events(
)
attendee_details_str = _format_attendee_details(attendees, indent=" ")
meeting_link = _get_meeting_link(item)
event_detail_parts = (
f'- "{summary}" (Starts: {start_time}, Ends: {end_time})\n'
f" Description: {description}\n"
f" Location: {location}\n"
)
if meeting_link:
event_detail_parts += f" Meeting Link: {meeting_link}\n"
event_detail_parts += (
f" Attendees: {attendee_emails}\n"
f" Attendee Details: {attendee_details_str}\n"
)
@@ -513,9 +540,12 @@ async def get_events(
event_details_list.append(event_detail_parts)
else:
# Basic output format
event_details_list.append(
f'- "{summary}" (Starts: {start_time}, Ends: {end_time}) ID: {item_event_id} | Link: {link}'
)
meeting_link = _get_meeting_link(item)
basic_line = f'- "{summary}" (Starts: {start_time}, Ends: {end_time})'
if meeting_link:
basic_line += f" Meeting: {meeting_link}"
basic_line += f" ID: {item_event_id} | Link: {link}"
event_details_list.append(basic_line)
if event_id:
# Single event basic output