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.")