프로젝트 소개
ticktick-py-v2는 TickTick의 비공식 `api/v2` 엔드포인트를 감싸는 Python 래퍼로, 웹 앱과 데스크톱 클라이언트에서 사용하는 내부 인터페이스입니다. 저자는 이를 작업과 프로젝트만 다루고 습관은 읽기 전용이며 집중/포모도로 엔드포인트가 없는 공식 OAuth API의 대안으로 소개합니다.
README에 따르면 이 라이브러리는 다음과 같은 기능을 제공합니다:
- 작업 및 프로젝트: 활성 작업과 프로젝트 목록을 읽고, 작업을 생성하고, 작업을 완료하며, 프로젝트 이름과 같은 프로젝트 속성으로 작업 객체를 풍부하게 만듭니다.
- 습관: 특정 날짜 이후의 체크인 기록을 읽고 체크인을 게시할 수 있으며, 이는 다른 데이터 소스에서 습관 기록을 백필하는 데 유용합니다.
- 집중/포모도로: 하루 오프셋 동안 집중 세션을 읽고, 세션이 현재 실행 중인지 확인하며, 과거 세션에 대한 기록을 추가할 수 있습니다(시작/종료 타임스탬프).
- 캘린더 이벤트: 모든 이벤트를 검색합니다.
설계 노트:
- API는 상태가 있는 클라이언트 클래스 대신 일반 함수로 노출됩니다. 각 호출은 선택적 `headers` 인수를 받아들여, `get_authenticated_ticktick_headers()`를 통해 인증 헤더를 한 번 가져와 재사용하거나, 로그인 캐시 후 매번 새로 가져올 수 있습니다.
- 인증은 OAuth가 아닌 일반 로그인 세션(쿠키)을 사용합니다. 자격 증명은 `TICKTICK_EMAIL` 및 `TICKTICK_PASSWORD` 환경 변수를 통해 제공되며, 헤드리스 Selenium 세션이 로그인을 처리하고 쿠키를 캐시합니다. 또는 쿠키를 수동으로 `.ticktick-cookies.json` 파일로 내보낼 수 있습니다.
- 반환 값은 pydantic `BaseModel` 인스턴스로, `.model_dump()` 또는 `.model_dump(by_alias=True)`를 사용하여 TickTick의 네이티브 camelCase 필드 이름으로 변환할 수 있습니다.
설치는 `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입니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.