May 17, 2026, 11:40 PM
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user