Анонс icalendar_light 0.2.0 и обновление раздела «События» на нашем сайте
Про импорт событий из календарей в формате iCalendar (.ics)
Чтобы нам всем быть чуть более осведомлёнными о том, какие мероприятия происходят в мире Python, я решил немного модернизировать раздел События. Помимо косметических изменений на страницах событий (перемены в расположении описаний, добавление карты, указывающей на место проведения), была добавлена публикация грядущих событий роботом.
Теперь робот ежедневно будет смотреть, а не добавились ли события в общие календари Python. Если он обнаружит новое событие в календаре, то опубликует его на сайте. Кажется, так будет удобнее, чем мониторить разные источники типа
Календари Python можно выгружать в формате iCalendar (.ics), а для разбора этого формата требуется какой-нибудь инструмент. На PyPI можно обнаружить немало пакетов для работы с этим форматом, некоторые из них общего назначения, некоторые заточены под конкретные задачи и каркасы.
Мне нужен был пакет общего назначения и я попробовал одноимённый icalendar. Попробовав, сильно расстроился — календарь в 200Кб разбирался десятки секунд. Наверняка этому есть причина и обоснование, но разбираться с этим не хотелось. В довесок, для удобной работы с событиями в календаре нужно было ещё ставить
Так появился легковесный icalendar_light. Он довольно шустро читает события из
Если поставить этот пакет командой
Приложение
Возвращаясь к разделу
Если заметите какие-то странности с событиями — можете смело рассказывать об этом здесь.
Следите за событиями.
Теперь робот ежедневно будет смотреть, а не добавились ли события в общие календари Python. Если он обнаружит новое событие в календаре, то опубликует его на сайте. Кажется, так будет удобнее, чем мониторить разные источники типа
TimePad
, Meetup
и проч.На заметку
Если у вас есть сообщество с периодическими встречами, или вы проводите какое-либо единичное мероприятие, связанное с Питоном, вы можете добавить его в общие календари Python — так о мероприятии узнает больше людей. Условия добавления опсаны по ссылке (англ.).
Календари Python можно выгружать в формате iCalendar (.ics), а для разбора этого формата требуется какой-нибудь инструмент. На PyPI можно обнаружить немало пакетов для работы с этим форматом, некоторые из них общего назначения, некоторые заточены под конкретные задачи и каркасы.
Мне нужен был пакет общего назначения и я попробовал одноимённый icalendar. Попробовав, сильно расстроился — календарь в 200Кб разбирался десятки секунд. Наверняка этому есть причина и обоснование, но разбираться с этим не хотелось. В довесок, для удобной работы с событиями в календаре нужно было ещё ставить
icalevents
. А хотелось попроще и побыстрее, при этом поддержка всех возможностей RFC 5545
для решения задачи не требовалась, умение конструировать календари — тоже.Так появился легковесный icalendar_light. Он довольно шустро читает события из
.ics
и представляет в виде именованных кортежей. Поддерживает периодические события. from icalendar_light.toolbox import Calendar
for event in Calendar.iter_events_from_file('my_calendar.ics'):
print(Calendar.event_stringify(event))
# Или получим события грядущие в следующие 5 дней
# из iCalendar, представленного списком строк (lines):
events = Calendar.iter_events_upcoming(lines, days_forward=5)
Если поставить этот пакет командой
pip install icalendar_light[cli])
, то у вас появится консольная утилита, которая может показывать запланированные события: ; Вывести события на следующие 5 дней:
$ icalendar_light upcoming my_calendar.ics --days 5
Приложение
icalendar_light
разрабатывается открыто на GitHub, заинтересовавшиеся могут принять участие.Возвращаясь к разделу
События
на нашем сайте. На первых порах новые события будут появляться тихо (не будет оповещений в ВК, TG и проч.). Ежели всё пойдёт хорошо и событий не будет слишком много, то оповещения включим, чтобы было ещё удобнее.Если заметите какие-то странности с событиями — можете смело рассказывать об этом здесь.
Следите за событиями.
На заметку
Читайте нас в Twitter. Ссылка в самом низу страницы.