Об этом проекте

ticktick-py-v2 — это Python-обёртка для неофициального эндпоинта TickTick `api/v2`, который используется веб-приложением и десктоп-клиентами. Автор позиционирует его как альтернативу официальному OAuth-API TickTick, который охватывает задачи и проекты, но предоставляет привычки только для чтения и не имеет эндпоинтов для фокусировки/помидоро. Что предоставляет библиотека, согласно README: - Задачи и проекты: чтение активных задач и списков проектов, создание задач, завершение задач, а также обогащение объектов задач свойствами проектов, такими как названия проектов. - Привычки: чтение отметок (например, после определённой даты) и публикация отметок, что, по мнению автора, позволяет восстанавливать историю привычек из других источников данных. - Фокусировка/Помидоро: чтение сессий фокусировки за день, проверка активности текущей сессии и добавление записей о прошлых сессиях (с метками начала/конца). - Календарные события: получение всех событий. Заметки по дизайну из README: - API представлено в виде простых функций, а не классов с состоянием; каждый вызов принимает необязательный аргумент `headers`, поэтому заголовки авторизации можно получить один раз через `get_authenticated_ticktick_headers()` и повторно использовать, или получать их заново при каждом вызове (что быстро, если логин закэширован на диске). - Аутентификация использует обычную сессию логина (cookie), а не OAuth. Учётные данные можно передать через переменные окружения `TICKTICK_EMAIL` и `TICKTICK_PASSWORD`, при этом headless-сессия Selenium обрабатывает логин и кэширует cookie; альтернативно, cookie можно экспортировать вручную в файл `.ticktick-cookies.json`. - Возвращаемые значения — это экземпляры pydantic `BaseModel`, которые можно преобразовать с помощью `.model_dump()` или `.model_dump(by_alias=True)` для получения полей в формате camelCase, используемом TickTick. Установка выполняется через `pip install ticktick-py-v2`; тесты запускаются с помощью pytest в директории `tests/`. Репозиторий организован на модули `cookies_login.py`, `events.py`, `focus.py`, `habits.py`, `tasks.py`, а также внутренние директории `utils/` и `web/`. README чётко указывает на основной компромисс: это неофициальный, реверс-инжиниринговый API, который аутентифицируется через сессию пользователя и может сломаться, если TickTick изменит свои внутренние эндпоинты. В разделе о вкладе предлагается сообщать о нераскрытых эндпоинтах, таких как краевые случаи повторяющихся задач, подзадачи и напоминания, а также предоставлять детали неудачных запросов/ответов при изменении эндпоинтов. Лицензия — Apache 2.0.