Daily-Plan-Agent / tools /calendar_reader.py
alicemputer's picture
revizasyon
f84033a
#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