Spaces:
Runtime error
Runtime error
| 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 | |
| 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.") |