notion-py 간단히 사용해보기

시작

현재 사용하고 있는 데스크탑의 사양은 다음과 같다. 아는 지인분께 3~4년전 중고로 구매해서, 그래픽 카드와 램만 업그레이드 하고 사용하고 있다.

i7-6700, RAM 32GB, GTX1660, SSD 500GB

하지만 최근에 데스크탑을 바꾸기로 마음을 먹었는데, 그 이유는 다음과 같다.

첫 번째, 로컬에서 작업을 하다보면 리소스를 풀로 잡아먹으면서 이륙하려고 하는 경우가 있다. Docker 도 사용하고, 기본 IDE도 2~3개 이상 키고 (Intellij, Android Studio, Visual Studio Code) 하다보니 그런 것 같기도 하다.

두 번째, 최근에 푹 빠진 게임인 ‘Micosoft Flight Simulator’ 가 현재 최저 옵션으로 평균 24프레임도 안 나온다. 프리징 걸리거나, 중요한 착륙때 10프레임 이하가 나오는 일도 빈번하다.

그래서, 가격이 널뛰는 요즘이지만 새롭게 맞춰보기로 결정했고, 아래와 같은 사양으로 결정했다.

Ryzen 9 5900X, RAM 64GB, RTX 3070, SSD 1TB

그리고 이에 맞춰 적당한 부품을 선택했다. 아직 최종은 아니지만, Tracking 용도로 Notion에 아래와 같이 데이터베이스를 작성했다.

이 데이터베이스를 작성하고 올렸다가 톡방의 친구에게 이 말을 듣고, 이를 실제로 계획에 옮겨보기로 했다.

그래서, 생각해둔 방안은 다음과 같다.

  1. 데이터베이스의 각 행(Row)마다 가격비교 사이트의 URL, 원하는 가격을 적어둔다.
  2. 스크립트가 데이터베이스의 행에 적혀진 URL를 들어가서 ‘가격’을 읽어내고, 이를 ‘원하는 가격’ 과 비교한다.
  3. ‘가격’이 ‘원하는 가격’보다 낮으면 텔레그램 봇으로 통해 알려준다. (sendMessage API 사용)

이 중, 1번을 위하여 notion-py (https://github.com/jamalex/notion-py) 를 이용하게 되었고, 이 글에서는 포인트만 잡아서 공유해보려고 한다.

참고로, Notion의 공식 API는 현재 비공개 베타(https://www.notion.so/api-beta) 중으로 차후 이 방법이 달라질 수 있다.

패키지 설치 & 임포트

pip3 install notion
from notion.client import NotionClient

client = NotionClient(token_v2=notion_token)

여기서 notion_tokennotion.so 에 로그인하면 나오는 토큰으로, 브라우저의 ‘개발자 도구’ 내 저장소 > 쿠키 > token_v2 값이다.

데이터베이스 접근

Notion에서 데이터베이스나 갤러리 등은 고유한 URL를 가지고 있는데, 이는 데이터베이스의 ‘링크 복사’ 기능으로 가져올 수 있다.

링크 복사 기능으로 얻어온 링크로 접근하게 되며, 아래 코드로 전체 row를 가져올 수 있다.

collection_view = client.get_collection_view(collection_url)
result = collection_view.default_query().execute()

for row in result:
  print(row)

현재 데이터베이스는 아래와 같이 되어있는데, 각각 아래와 같이 접근이 가능하다.

print(row.name) # Ryzen 9 5900X
print(row.kind) # CPU
print(row.visited) # 2020-12-27 12:10:23
print(row.price) # 854000

데이터베이스 항목 수정하기

가격비교 사이트를 통해 가져온 ‘가격’ 을 Notion 데이터베이스에 반영하기 위해서는 row 객체의 각 필드에 값을 할당해주면 된다.

row.price = int(price)

데이터베이스상 price는 ‘숫자’ 값이므로 price의 자료형을 ‘int’로 변경해줄 필요가 있다.

해당 코드를 실행시 Notion에 바로 갱신되는 모습을 확인할 수 있다.