#calendar_reader.py from google.oauth2.credentials import Credentials from googleapiclient.discovery import build import datetime import pytz from smolagents import tool @tool def get_todays_events() -> list[str]: """ Get today's events from Google Calendar in formatted string form. Returns a list of event descriptions for the current day. """ creds = Credentials.from_authorized_user_file('data/token.json',['https://www.googleapis.com/auth/calendar.readonly']) service = build('calendar', 'v3', credentials=creds) now = datetime.datetime.now(pytz.timezone("Europe/Istanbul")) start_of_day = now.replace(hour=0, minute=0, second=0, microsecond=0) end_of_day = now.replace(hour=23, minute=59, second=59, microsecond=999999) events_result = service.events().list( calendarId='primary', timeMin=start_of_day.isoformat(), timeMax=end_of_day.isoformat(), singleEvents=True, orderBy='startTime' ).execute() events = events_result.get('items', []) unique = set() formatted_events = [] for event in events: summary = event.get('summary', 'İsimsiz Etkinlik') start = event['start'].get('dateTime') end = event['end'].get('dateTime') if not start or not end: continue # tüm günlük veya eksik bilgiler varsa geç if (summary, start) in unique: continue # yinelenenleri atla unique.add((summary, start)) start_dt = datetime.datetime.fromisoformat(start) end_dt = datetime.datetime.fromisoformat(end) formatted = f"{summary}. ({start_dt.strftime('%H : %M')} - {end_dt.strftime('%H : %M')} / {start_dt.strftime('%d - %m - %Y')})" formatted_events.append(formatted) return formatted_events