45 lines
1.8 KiB
Python
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) |