41 lines
1.3 KiB
Python
41 lines
1.3 KiB
Python
#!/usr/bin/env python3
|
|
# -*- encoding: utf-8 -*-
|
|
|
|
import datetime
|
|
import hashlib
|
|
import json
|
|
|
|
import pytz
|
|
from ics import Calendar, Event
|
|
|
|
from .cli import parseArguments
|
|
|
|
|
|
def main():
|
|
args = parseArguments()
|
|
should_transpose = args.column.value == 'time'
|
|
table = args.format[args.origin[args.path]].parse(should_transpose)
|
|
table.interpret_lang(
|
|
'EN,ES,PT'.split(','),
|
|
args.lang,
|
|
args.content.as_index()
|
|
)
|
|
arg_ts = (args.year, args.month, args.day)
|
|
table.interpret_line_labels_as_time_series(arg_ts)
|
|
events = table.get_column_sequences()
|
|
calendar = Calendar()
|
|
for ((start, end), place, (name, description, language)) in events:
|
|
ev = json.dumps((int(start.timestamp()), int(end.timestamp()),
|
|
place, name, description, language))
|
|
evh = hashlib.md5(ev.encode('ascii')).hexdigest()
|
|
start = args.timezone.localize(start)
|
|
end = args.timezone.localize(end)
|
|
calendar_event = Event(name=name, begin=start,
|
|
end=end, location=place, uid=f'{evh}@table2ics')
|
|
if description != '':
|
|
calendar_event.description = description
|
|
if language != '':
|
|
calendar_event.classification = language
|
|
calendar.events.add(calendar_event)
|
|
print(calendar)
|