Files
2026-05-18 06:40:19 +00:00

45 lines
1.8 KiB
Python

import csv
from icalendar import Calendar, Event, Alarm
from datetime import datetime, timedelta
import pytz
#Subject,Start Date,Start Time,End Date,End Time,Description,Location
#Meeting,10-08-2024,10.00,10-08-2024,11.00,Project discussion,Conference Room
#Typ;Temat;Rozpoczęcie;Koniec;Postęp;Miejsce;Priorytet;Kategoria;Załączniki;Czas trwania;Status;Data Utworzenia;Zmiany;Zakończone;Przypomnienie;Powtarzalność;Terminarz;Uczestnicy;Tagi;Notatki
def csv_to_ical(csv_file_path, ical_file_path, date_format='%d.%m.%Y'):
cal = Calendar()
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')
# Dodajemy przypomnienie
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)
cal.add_component(event)
with open(ical_file_path, mode='wb') as ical_file:
ical_file.write(cal.to_ical())
# Ścieżki do plików CSV i iCal
csv_file_path = 'events.csv'
ical_file_path = 'events.ics'
# Wywołanie funkcji
csv_to_ical(csv_file_path, ical_file_path)