Как перенести учебное расписание в календарь iPhone с помощью Python

    Если вы хотите автоматизировать добавление учебного расписания в приложение «Календарь» на iPhone, чтобы оно отображалось в Things 3, проще всего использовать формат iCalendar (.ics). Этот универсальный стандарт поддерживается Apple, Google и любыми CalDAV-серверами. Ниже разберём три рабочих подхода - от самого простого до гибкого.

    Почему .ics - лучший выбор для синхронизации с iPhone

    Файлы .ics (iCalendar) можно открыть на любом устройстве Apple - календарь автоматически добавит события. Вам не нужны сторонние библиотеки, кроме встроенной icalendar для Python. Главное преимущество: после импорта расписание синхронизируется через iCloud и появляется в Things 3.

    Способ 1: Генерация .ics-файла и импорт вручную

    Этот метод подходит, если вы готовы раз в семестр запускать скрипт и открывать файл на iPhone. Напишите код, который создаёт события с датами, временем, названием предмета и местом. Затем отправьте .ics себе по email или через AirDrop - календарь сам предложит добавить события.

    Пример базового скрипта

    from icalendar import Calendar, Event
    from datetime import datetime
    
    cal = Calendar()
    event = Event()
    event.add('summary', 'Математика')
    event.add('dtstart', datetime(2025, 3, 1, 9, 0, 0))
    event.add('dtend', datetime(2025, 3, 1, 10, 30, 0))
    event.add('location', 'Ауд. 301')
    cal.add_component(event)
    
    with open('schedule.ics', 'wb') as f:
        f.write(cal.to_ical())

    Сохраните файл, откройте на iPhone - расписание появится в календаре.

    Способ 2: Автоматическая синхронизация через Google Календарь

    Если нужно, чтобы расписание обновлялось без ручного импорта, используйте Google Calendar API. Вы создаёте отдельный календарь в Google, а скрипт через API добавляет туда события. Затем на iPhone подключаете этот календарь через «Настройки → Пароли и учётные записи → Добавить учётную запись → Google». Все изменения будут синхронизироваться автоматически.

    Необходимые шаги

    • Получить API-ключ и OAuth 2.0 credentials в Google Cloud Console.
    • Установить библиотеку google-api-python-client.
    • Написать скрипт, который авторизуется и создаёт события через events().insert().

    Готовый пример кода есть в официальной документации Google. Этот способ сложнее, но даёт полный контроль и автоматизацию.

    Способ 3: Прямая запись в iCloud календарь (CalDAV)

    Технически вы можете отправлять запросы к CalDAV-серверу Apple, но это требует глубоких знаний протокола и авторизации через Apple ID. Для новичков такой путь не рекомендуется - проще использовать Google Календарь как промежуточное звено, а на iPhone подключить его.

    Что выбрать новичку

    Если вы делаете скрипт для себя и не хотите возиться с API - остановитесь на генерации .ics. Это займёт 15 минут. Если нужно постоянное обновление - используйте Google Calendar API. Оба варианта полностью совместимы с приложением «Календарь» на iPhone и Things 3.

    Полезные библиотеки Python

    • icalendar - создание и парсинг .ics файлов.
    • google-api-python-client - работа с Google Calendar API.
    • requests - для CalDAV (если решитесь).

    Часто задаваемые вопросы