ru24.pro
Работа
Октябрь
2024
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
21
22
23
24
25
26
27
28
29
30
31

Google Calendar - Python

0
Задача: Написать классы на Python для взаимодействия с календарем Google через Google API Workspace, который будет работать на сервере без GUI и интерактивности. Код должен уметь подключаться к аккаунту google, управлять календарями и событиями в них. Обязательно реализовать обработку ошибок и исключений.

Код разбить на 3 класса:
Class GAPIWorkspace - управляет авторизацией Google API Workspace.
Class GCalendar - работает с календарями Google. Содержит методы: create, delete, select, edit, eventlist, get.
Class GEvent - работает с событиями в календаре Google. Содержит методы: create, delete, select, edit.

- Платформа: Debian GNU/Linux 11.
- Язык программирования: Python3, поддержка версии 3.9.2.
- Код оформить в виде классов для дальнейшего использования.

Вспомогательные скрипты и документы:
- Мануал по установке требуемых зависимостей
- Рабочий пример использования кода

Пример предполагаемого использования:

IDuserOAuth={Oauth json data}
credsfile='./creds.json'
gconn=GAPIWorkspace(IDuserOAuth, filename=credsfile)

calendar=GCalendar(gconn)
data={'name':'Календарь123', 'description':'Описание календаря', 'timezone':'GMT+03:00', 'share':['user(a)gmail.com',]}
c1=calendar.create(data)
calendar.delete(c1)
data={'name':'Календарь456', 'descr_inc':'Описание календаря'}
c2=calendar.select(data)
data={'name':'МойКалендарь', 'description':'Описание календаря', 'timezone':'GMT+02:00', 'share':['anotheruser(a)gmail.com',]}
c2=calendar.edit(c2, data)

calendar.get(c2)
event=GEvent(calendar)
elist=[]
data={'from':'1729223248', 'till':'1729335458', 'limit':10}
elist=calendar.eventlist(c2, data)
for e in elist:
e=event.edit(e, alarm={'type':'message', 'time':'1800'})

calendar.get(c2)
event=GEvent(calendar)
edata={'name':'Мероприятие1', 'timestamp':'1729223248', 'duration':'3600', 'description':'Описание мероприятия', 'alarm':[{'type':'message', 'time':'1800'}]}
e1=event.create(edata)
event.delete(e1)
edata={'name':'Мероприятие2', 'timestamp':'1729223248', 'descr_inc':'Описание мероприятия'}
e2=event.select(edata)
edata={'name':'МоеМероприятие', 'timestamp':'1729335458', 'duration':'1800', 'description':'Описание мероприятия', 'alarm':[{'type':'message', 'time':'3600'}]}
e2=event.edit(e2, edata)