May 17, 2026, 11:40 PM
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
import csv
|
||||
from datetime import datetime, timedelta
|
||||
from caldav import DAVClient, Calendar
|
||||
from caldav.elements import dav, cdav
|
||||
from icalendar import Event, Alarm
|
||||
|
||||
def csv_to_caldav(csv_file_path, caldav_url, username, password, calendar_name, date_format='%d.%m.%Y'):
|
||||
client = DAVClient(url=caldav_url, username=username, password=password)
|
||||
principal = client.principal()
|
||||
calendars = principal.calendars()
|
||||
|
||||
# Znalezienie kalendarza o podanej nazwie
|
||||
calendar = None
|
||||
for cal in calendars:
|
||||
if cal.name == calendar_name:
|
||||
calendar = cal
|
||||
break
|
||||
|
||||
if not calendar:
|
||||
raise ValueError(f"Kalendarz o nazwie '{calendar_name}' nie został znaleziony.")
|
||||
|
||||
with open(csv_file_path, mode='r', encoding='utf-8') as csv_file:
|
||||
csv_reader = csv.DictReader(csv_file, delimiter=';')
|
||||
|
||||
|
||||
for row in csv_reader:
|
||||
event = Event()
|
||||
|
||||
start_date = datetime.strptime(row['Start'], date_format).date()
|
||||
end_date = datetime.strptime(row['Koniec'], date_format).date() + timedelta(days=1)
|
||||
|
||||
event.add('summary', row['Temat'])
|
||||
event.add('dtstart', start_date)
|
||||
event.add('dtend', end_date)
|
||||
event.add('description', row['Tagi'])
|
||||
event.add('transp', 'TRANSPARENT')
|
||||
|
||||
# Dodanie przypomnienia
|
||||
alarm = Alarm()
|
||||
alarm.add('action', 'DISPLAY')
|
||||
alarm.add('description', 'Przypomnienie: ' + row['Temat'])
|
||||
alarm.add('trigger', timedelta(minutes=-30)) # Przypomnienie 30 minut przed
|
||||
event.add_component(alarm)
|
||||
|
||||
# Przesłanie zdarzenia do kalendarza CalDAV
|
||||
calendar.add_event(event.to_ical())
|
||||
|
||||
# Ścieżka do pliku CSV
|
||||
csv_file_path = 'events.csv'
|
||||
# Dane do logowania CalDAV
|
||||
caldav_url = 'https://cal.dexterlab.pl/remote.php/dav/'
|
||||
username = 'dexter'
|
||||
password = 'Proton!19'
|
||||
calendar_name = 'Holidays'
|
||||
|
||||
# Wywołanie funkcji
|
||||
csv_to_caldav(csv_file_path, caldav_url, username, password, calendar_name)
|
||||
|
||||
Reference in New Issue
Block a user