calendar-agent / tools /add_events.py
alicemputer's picture
ProAgenta temel işlevler kazandırıldı ve gradio arayüzü oluşturuldu.
f44789d
import os
import datetime
from datetime import timedelta
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
from smolagents import tool
# Google Calendar API servisini oluştur (her tool çağrıldığında yeniden oluşturulabilir)
def get_calendar_service():
creds = Credentials.from_authorized_user_file(os.path.join(os.getcwd(), 'data', 'token.json'), ['https://www.googleapis.com/auth/calendar'])
service = build('calendar', 'v3', credentials=creds)
return service
@tool
def add_calendar_event(date_str: str, time: str, description: str) -> str:
"""
Google Calendar'a belirtilen tarih ve saatte yeni bir etkinlik ekler.
Args:
date_str (str): Etkinliğin tarihi (YYYY-MM-DD, DD-MM-YYYY veya DD/MM/YYYY formatında olabilir).
time (str): Etkinliğin başlangıç saati (HH:MM formatında).
description (str): Etkinliğin açıklaması.
Returns:
str: Etkinliğin başarıyla eklenip eklenmediğine dair bir mesaj.
"""
service = get_calendar_service()
if not service:
return "Google Calendar servisine bağlanılamadı."
try:
# Tarih formatını esnek bir şekilde işlemeye çalış
formats_to_try = ["%Y-%m-%d", "%d-%m-%Y", "%d/%m/%Y"]
event_date = None
for fmt in formats_to_try:
try:
event_date = datetime.datetime.strptime(date_str, fmt).date()
break
except ValueError:
continue
if not event_date:
return "Geçersiz tarih formatı. Lütfen YYYY-MM-DD, DD-MM-YYYY veya DD/MM/YYYY formatlarından birini kullanın."
start_time_str = f"{event_date.isoformat()}T{time}:00"
end_time_str = (datetime.datetime.fromisoformat(start_time_str) + timedelta(hours=1)).isoformat()
event = {
'summary': description,
'start': {
'dateTime': start_time_str,
'timeZone': 'Europe/Istanbul',
},
'end': {
'dateTime': end_time_str,
'timeZone': 'Europe/Istanbul',
},
}
created_event = service.events().insert(calendarId='primary', body=event).execute()
return f"'{description}' etkinliği {event_date.strftime('%d-%m-%Y')} saat {time}'e eklendi. Etkinlik bağlantısı: {created_event.get('htmlLink')}"
except ValueError:
return "Geçersiz saat formatı. Lütfen HH:MM formatında girin."
except HttpError as error:
return f'Google Calendar hatası: {error}'
if __name__ == '__main__':
# Bu bölüm sadece bu dosyanın doğrudan çalıştırılması durumunda devreye girer.
# Agent bağlamında kullanılmayacak.
print("Bu dosya bir araç modülüdür ve doğrudan çalıştırılmamalıdır.")