Рубрики
Без рубрики

Общий календарь для инженерных конференций по программному обеспечению в Великобритании

Как я использовал GitHub и Python, чтобы включить данные CSV в календарь. Теги с конференциями, обучением, Python.

Я сделал вещь! Это календарь для конференций технических конференций по программному обеспечению в Великобритании, но данные хранятся в файле CSV, к которому кто-либо может отправлять запросы на тягу.

На самом деле мне не нравится собираться все так, но они приличный способ изучать вещи. Если у меня есть бюджет обучения и разработки, доступное через мою работу, то я хочу убедиться, что я получаю максимальную из этого.

Есть множество блогов сообщений, перечисляющих хорошие конференции для разработчиков, но всякий раз, когда я смотрю на них, я нахожу, что я только что пропустил конференцию, я получил бы самую ценность, или она возрастела. Последние пару мест, которые я работал, у нас были внутренние списки интересных конференций, но даже так, я обычно не смогу смотреть на них в нужное время. Я подумал, что лучший способ отслеживать было бы сочетать его с моим календарем, поэтому я могу посмотреть, что подходит и игнорирует события в прошлом.

Я хочу избежать низкого качества и устаревшей информации, поэтому я решил ограничить свой календарь к событиям, которые подтвердили даты, и вы можете купить билеты, а не предполагать, что конференции будут работать каждый год.

Я решил сохранить данные в репозитории GitHub, потому что я думаю, что это хороший простой способ управлять открытыми данными. Для кого-нибудь легко внести свой вклад, и я могу просмотреть вклад, как они приходят.

Это довольно произвольное ограничение – я живу в Великобритании, поэтому это события (обычно), наиболее удобные, чтобы добраться до меня, и я подумал, что если бы я не ограничивал приспособление, там будет слишком много событий для календарь будет полезен на практике. Если вы хотите то же самое для других областей, я рекомендую высказать репо и создать еще один календарь. Мне было бы интересно узнать, если вы сделаете это!

Вы можете импортировать события в приложение календаря, используя ICAL экспорт . Вы также можете Просмотр календаря напрямую Отказ

Вы можете добавить события по Сделать запрос на тягу против файла CSV .

Я действительно ненавижу Google API

Я написал какой-то код для интерфейса с API Google Calendar. Это была самая сложная часть проекта, потому что документация API Google заставляет меня заплакать. Код мне нужно было настроить клиент (который я закончил копирование из другого проекта):

        self.calendar_id = os.environ['CALENDAR_ID']
        client_secret_dict = ast.literal_eval(os.environ['CLIENT_SECRET_JSON'])
        credentials = ServiceAccountCredentials.from_json_keyfile_dict(
            client_secret_dict, scopes=self.SCOPES)
        http = credentials.authorize(Http())
        self.calendar = build('calendar', 'v3', http=http)

Секрет клиента – учетные данные для учетной записи службы, который настроен в Google Cloud. Затем я предоставил этот счет чтения/записи/записи на календаре в самом календаре Google. Это взяло меня некоторое время, чтобы выяснить.

NamedTupes отлично работает для сопоставления данных

Я представляю события, используя NamedTuple :

class Event(NamedTuple):
    """
    A calendar entry for a conference
    """
    start_date: date
    end_date: date
    website: Optional[str]
    description: str
    title: str

Именованный кортеж – это вид типа ценностей – означает, что два экземпляра считаются равными, если все его поля равны.

Это полезно при сравнении того, что находится в файле CSV, к какому Google Calendar. Это означает, что я могу использовать события в качестве клавиш в словари и использовать набор арифметики на них:

        events_to_remove = existing_event_set - desired_events
        events_to_add = desired_events - existing_event_set

        ids_to_remove = {existing_events[event] for event in events_to_remove}

Это позволило мне разбить мой код на следующие шаги:

  1. Прочитайте все от CSV и все от API
  2. Работайте, что нужно изменить
  3. На самом деле выполнять изменения

Это оказалось довольно хорошим узором, который облегчил установку тестирования моего кода.

Действия GitHub действительно удобны

Я использую два Действия GitHub Рабочие процессы на этом проекте:

  • один для непрерывной интеграции (запуск тестов, когда я нажимаю код)
  • один для фактически синхронизации календаря Google

Это второй раз, когда я использовал действия GitHub, и я думаю, что это фантастически. В прошлом я, вероятно, использовал бы что-то вроде Heroku, чтобы на самом деле запустить скрипт, но приятно не настроить другой сервис, и я могу сделать его только спусковым крючком, когда код/данные изменения.

Оригинал: “https://dev.to/matmooredev/a-shared-calendar-for-software-engineering-conferences-in-the-uk-5581”