mirror of
https://github.com/b4tman/sync_ics2gcal
synced 2024-11-01 03:06:54 +00:00
54 lines
1.2 KiB
Python
54 lines
1.2 KiB
Python
|
import yaml
|
||
|
|
||
|
import dateutil.parser
|
||
|
import datetime
|
||
|
import logging
|
||
|
import logging.config
|
||
|
from gcal_sync import (
|
||
|
CalendarConverter,
|
||
|
GoogleCalendarService,
|
||
|
GoogleCalendar,
|
||
|
CalendarSync
|
||
|
)
|
||
|
|
||
|
|
||
|
def load_config():
|
||
|
with open('config.yml', 'r', encoding='utf-8') as f:
|
||
|
result = yaml.load(f)
|
||
|
return result
|
||
|
|
||
|
|
||
|
def get_start_date(date_str):
|
||
|
result = datetime.datetime(1,1,1)
|
||
|
if 'now' == date_str:
|
||
|
result = datetime.datetime.utcnow()
|
||
|
else:
|
||
|
result = dateutil.parser.parse(date_str)
|
||
|
return result
|
||
|
|
||
|
|
||
|
def main():
|
||
|
config = load_config()
|
||
|
|
||
|
if 'logging' in config:
|
||
|
logging.config.dictConfig(config['logging'])
|
||
|
|
||
|
calendarId = config['calendar']['google_id']
|
||
|
ics_filepath = config['calendar']['source']
|
||
|
srv_acc_file = config['service_account']
|
||
|
|
||
|
start = get_start_date(config['start_from'])
|
||
|
|
||
|
converter = CalendarConverter()
|
||
|
converter.load(ics_filepath)
|
||
|
|
||
|
service = GoogleCalendarService.from_srv_acc_file(srv_acc_file)
|
||
|
gcalendar = GoogleCalendar(service, calendarId)
|
||
|
|
||
|
sync = CalendarSync(gcalendar, converter)
|
||
|
sync.prepare_sync(start)
|
||
|
sync.apply()
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
main()
|