import os import datetime 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 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 delete_calendar_event(date_str: str, event_title: str) -> str: """ Google Calendar'dan belirtilen tarih ve başlığa sahip etkinlikleri siler. Args: date_str (str): Etkinliğin silineceği tarih (YYYY-MM-DD, DD-MM-YYYY veya DD/MM/YYYY formatında olabilir). event_title (str): Silinecek etkinliğin başlığı (tam veya bir kısmı). Returns: str: Etkinliklerin silinme durumuna 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"] target_date = None for fmt in formats_to_try: try: target_date = datetime.datetime.strptime(date_str, fmt).date() break except ValueError: continue if not target_date: return "Geçersiz tarih formatı. Lütfen፦MM-DD, DD-MM-YYYY veya DD/MM/YYYY formatlarından birini kullanın." start_of_day = datetime.datetime(target_date.year, target_date.month, target_date.day, 0, 0, 0, tzinfo=datetime.timezone.utc).isoformat() + 'Z' end_of_day = datetime.datetime(target_date.year, target_date.month, target_date.day, 23, 59, 59, 999999, tzinfo=datetime.timezone.utc).isoformat() + 'Z' events_result = service.events().list(calendarId='primary', timeMin=start_of_day, timeMax=end_of_day, singleEvents=True, q=event_title).execute() events = events_result.get('items', []) deleted_count = 0 for event in events: start = event.get('start', {}).get('dateTime') if start and datetime.datetime.fromisoformat(start[:-1]).date() == target_date: try: service.events().delete(calendarId='primary', eventId=event['id']).execute() deleted_count += 1 except HttpError as error: return f"Etkinlik silinirken bir hata oluştu: {error}" if deleted_count > 0: return f"{target_date.strftime('%d-%m-%Y')} tarihinde başlığı '{event_title}' olan {deleted_count} etkinlik silindi." else: return f"{target_date.strftime('%d-%m-%Y')} tarihinde başlığı '{event_title}' olan bir etkinlik bulunamadı." except HttpError as error: return f'Google Calendar hatası: {error}' if __name__ == '__main__': print("Bu dosya bir araç modülüdür ve doğrudan çalıştırılmamalıdır.")