Spaces:
Runtime error
Runtime error
File size: 3,273 Bytes
f44789d | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | 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.") |