Синхронизируем календарь из Telegram в macOS

Разные люди используют разные приложения для личных календарей и менеджеров задач. Кто-то пользуется стандартными Google Keep или Apple Reminders. Кто-то хочет кучи разных функций и использует что-то типа TickTick. Я человек простой и пользуюсь или встроенным в операционную систему календарем, или отложенными сообщениями самому себе в Telegram, как способ вести свой еженедельник. Недавно я решил синхронизировать события из Телеги в мой МакОС календарь.

Задача, в общем, очень простая. У меня есть личный календарь в macOS. Он автоматически синхронизируется на мой айфон через iCloud. Также у меня установлен Telegram на мобильном телефоне и компьютере, где я добавляю разные дела «на завтра» с помощью отложенный сообщений самому себе в свой личный чат. Цель — видеть эти сообщения, как события в моем календаре операционной системы.

Удивительно, но обе программы — Telegram и macOS — предоставляют все нужные API публично, бесплатно, доступно для всех, без каких-то требований к аккаунтам разработчика, или оплаты за что либо.

В случае Телеграма, их API довольно нестандартное, и вы, скорей всего, захотите использовать какой-нибудь готовый клиент. Я вайбкодил решение с помощью https://github.com/LonamiWebs/Telethon.

В случае macOS есть быстрый и правильный способ — использовать EventKit из Swift или Objective-C. А есть медленный и костыльный способ, но позволяющий получить результат за пару минут — это использование либо AppleScript, либо JavaScript for Automation (JXA). Я пошел по пути наименьшего сопротивления, так как JXA позволяет не тратить время на разбирание со свифтом и просто реализовать три нужные мне функции — получить события, добавить событие, и обновить событие. Это работает медленно (до 20 секунд на вызов), но кого это волнует, если я выполняю синхронизацию каждый час-два?

Финальное решение получилось оформить в виде одного файла с питоном, который я запускаю фоново через launchd. Посмотреть можно тут — https://github.com/Hixon10/telegram-scheduled-messages-to-macos-calendar.

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

Категории: Программирование