https://www.anaconda.com/products/distribution 파이썬 3.0 version 아나콘다 설치

Anaconda prompt로 python 버전을 확인한다.

cmd를 통해 아나콘다 버전을 확인한다.
+Jupyter Notebook : 웹 브라우저상에서 코드를 단계적으로 실행해볼 수 있는 프로그램
http://127.0.0.1:8889/?token=05c4a24efeb830be8db7cfa73aa95c8cec341706796b84cd
파이썬으로 HTTP 통신이 필요한 프로그램을 작성할 때 가장 많이 사용되는 라이브러리
특히 원격에 있는 API를 호출할 대 주로 사용한다.
pip install requests : 파이썬의 패키지 매니저인 pip를 이용하여 requests 패키지 설치
🔴SSL 인증 error 해결 방법🔴

🔴Warning 메시지 숨기기🔴
Jupyter Notebook을 사용할 경우 향후 버전 업그레이드 될 경우 변경될 사항을 알려주기 위하여 warning message를 출력한다. 이럴 경우 warnings 라이브러리를 사용하여 숨기거나/ 다시 보이게 할 수 있다.
import warnings
#경고 메시지 숨기기
warningsfilterwarnings(action = 'ignore')
#숨겼던 경고 메시지를 다시 보이게 하기
warings.filterwarnings(action = 'default')
requests로 Rest API 호출하기
| requests.get() | Get 요청 |
|---|---|
| requests.post() | Post 요청 |
| requests.put() | Put 요청 |
| requests.delete() | Delete 요청 |
requests 라이브러리가 제공하는 HTTP 요청 이름에 해당하는 함수
현재 Python으로 공개된 Notion API가 두가지가 있습니다.
pip install notion-client 설치notion-py/notion at master · jamalex/notion-py
🔴Unofficial ? Official?🔴
| 비공식 API | 공식 API |
|---|---|
| 사용자가 쓰기 쉽게 개발된 API | 사용하기 어렵지만 Notion API Reference에 기술된 API 명 그대로 사용 |
| 오류 발생 시, 클라이언트 개발자가 디버깅 해주기 전까지 기능 사용 힘들다. | 오류 발생 시, 파이썬에서 직접 디버깅해서 호출 한 뒤 사용 가능하다. |
client 변수 = 노션 접속을 한 내용이 저장 이때 token 값이 필요하다.
get_block(page url) = 제어할 노션 페이지를 설정한다. 페이지의 제목과 블록들을 제어할 수 있다.
from notion.client import NotionClient
# Obtain the `token_v2` value by inspecting your browser cookies on a logged-in (non-guest) session on Notion.so
client = NotionClient(token_v2="9e1277377147e8156ee3cd5320ff15382ed7f06acf52603306bc82179a0dd869cdf9c48d33c37fba73f18c0de2912bf1341ce2299bf7898c80fff02892dbae64a38d8b9d8f6b00237b7677e9603f") #시크릿 토큰 값
# Replace this URL with the URL of the page you want to edit
page = client.get_block("https://www.notion.so/Hello-Notion-Task-39928068200848a4bfb4b8f827098bbe") #notion page url
print("The Notion title is:", page.title) # 노션 페이지 제목 확인
page.title = "노션 페이지 title 변경 완료" #노션 페이지의 제목을 자동으로 바꾸기
print("The title has now changed:", page.title) # 바뀐 노션 페이지 제목 확인
노션 페이지의 제목이 자동으로 바뀜을 확인

🔴ERROR🔴
requests.exceptions.HTTPError: Invalid input.은 notion api가 변경되어 발생하는 오류이다.
import inspect
import notion
print(inspect.getfile(notion)) # notion 모듈의 위치
notion 모듈의 위치를 위와 같이 찾아 store.py와 clinet.py 파일 중 limit 값이 크게 설정되어 있기 때문에 limit = 100000을 limit=100으로 수정한다.

from notion.client import NotionClient
# Obtain the `token_v2` value by inspecting your browser cookies on a logged-in (non-guest) session on Notion.so
client = NotionClient(token_v2="9e1277377147e8156ee3cd5320ff15382ed7f06acf52603306bc82179a0dd869cdf9c48d33c37fba73f18c0de2912bf1341ce2299bf7898c80fff02892dbae64a38d8b9d8f6b00237b7677e9603f") #시크릿 토큰 값
# Replace this URL with the URL of the page you want to edit
page = client.get_block("https://www.notion.so/Hello-Notion-Task-39928068200848a4bfb4b8f827098bbe") #notion page url
for child in page.children:
print(child.title)


왼쪽의 페이지의 정보를 오른쪽과 같이 출력한다. 테이블 형식은 별도의 코드를 추가해야 하므로 출력 되지 않는다.
from notion.block import TodoBlock(*)
참고: https://github.com/jamalex/notion-py/blob/master/notion/block.py
from notion.client import NotionClient
from notion.block import TodoBlock
client = NotionClient(token_v2="9e1277377147e8156ee3cd5320ff15382ed7f06acf52603306bc82179a0dd869cdf9c48d33c37fba73f18c0de2912bf1341ce2299bf7898c80fff02892dbae64a38d8b9d8f6b00237b7677e9603f") #시크릿 토큰 값
page = client.get_block("https://www.notion.so/Hello-Notion-Task-39928068200848a4bfb4b8f827098bbe") #notion page url
newchild1 = page.children.add_new(TodoBlock, title = "노션 한글 축하 영상 업로드")
newchild2 = page.children.add_new(TodoBlock, title = "조정경기장 사이클 타기")
print("자동 완성 완료")
다음과 같이 페이지에 할 일 목록이 생성된다. →
할 일 수행 완료를 하고 싶은 경우 →
newchild1.checked = True


video1 = page.children.add_new(VideoBlock) #VideoBlock 추가
video1.width = 600
video1.height = 300
#추가 할 비디오의 url 설정
video1.set_source_url("https://www.youtube.com/watch?v=OgXwu0eLDSs")

print("페이지 제목 확인: ", page.title)
answer = "예"
text = page.children.add_new(TextBlock)
text.title = "파이썬 API VideoBlock 활용 참고 영상 자동 추가 반복하기"
while answer =="예":
video = page.children.add_new(VideoBlock) #VideoBlock 추가
video.width = 600
video.height = 300
input_url = input("추가 할 비디오의 URL 주소를 입력하세요.")
video.set_source_url(input_url)
answer = input("추가로 비디오 블록을 생성할건가요?")
print("자동 완성 완료")


#코드 블록 자동 추가
from notion.client import NotionClient
from notion.block import CodeBlock
# 시크릿 토큰 값 설정
client = NotionClient(token_v2="f97b195d64663eaef0bf80854a83dc2ba44037ce2f3ee168b84ebdf565062d6837106813304fed63a89230e72f0030b678b6147ae36a5e2577c98194044038bedbe02f2c78e8fcdc9cc88fb8ad71")
#제어할 노션 페이지의 url
page = client.get_block("https://www.notion.so/Notion-API-Test-Page-50e64e6469bf425fa5a1ed07b9a1edff")
#todo block 생성
newchild1 = page.children.add_new(CodeBlock, language = "java", title="System.out.write(65);")
print("CodeBlock 생성 완료")

from notion.client import NotionClient
from notion.block import *
from notion.collection import *
from datetime import datetime
import notion
def get_today_str():
today = datetime.today()
return f'{today.year}년 {today.month}월 {today.day}일'
client = NotionClient(token_v2="9e1277377147e8156ee3cd5320ff15382ed7f06acf52603306bc82179a0dd869cdf9c48d33c37fba73f18c0de2912bf1341ce2299bf7898c80fff02892dbae64a38d8b9d8f6b00237b7677e9603f") #시크릿 토큰 값
# Replace this URL with the URL of the page you want to edit
page = client.get_block("https://www.notion.so/Hello-Notion-Task-39928068200848a4bfb4b8f827098bbe") #notion page url
## page.children을 print해보면 CollectionViewBlock 혹은 TableViewBlock이 존재한다고 나올겁니다.
myViewBlock = page.children[0] # 우리가 미리 만들어 놓은 테이블(ViewBlock)을 호출합니다.
new_row_of_my_table =myViewBlock.collection.add_row() # 우리가 만든 테이블의 데이터 모음을 collection이라고 부르는데 여기에 새로 가로 줄을 하나 추가해줍니다.
# 가로줄을 추가하는 순간 table view의 특성상 이름이 Untitled(안보임)인 페이지가 추가됩니다.
new_row_of_my_table.title = get_today_str()+' 체크리스트' # 새로운 가로줄의 이름을 설정하면 새로운 페이지가 눈에 보일 것입니다.
AM_check_list_toggle = myViewBlock.children.add_new(ToggleBlock, title='오전 체크리스트') # 누르면 펼쳐지고 또 다시 누르면 닫히는 Toggle 블럭을 우리가 새로 만든 페이지에 추가해줍니다.
## 위의 Toggle Block의 이름은 미리 title에서 지정해두었고 toggle의 하위 내용으로
## TodoBlock을 추가해줍니다.
AM_check_list_toggle.children.add_new(TodoBlock,title='8시 30분 전에 기상')
AM_check_list_toggle.children.add_new(TodoBlock,title='10시 30분 전에 출근')
AM_check_list_toggle.children.add_new(TodoBlock,title='새로운 메일 점검!')
# 이런식으로 추가해주세요.
+자동화 ) 윈도우에서는 ‘작업 스케줄러’를 사용하여 스크립트 실행을 예약 할 수 있다.
하지만 윈도우 작업 스케줄러는 사용자가 직접 조작해서 설정하는 GUI 방식인데 Cron은 운영체제와 상관없이 동일한 방식의 텍스트 편집만으로 설정이 가능하기 때문에 Cron을 사용하여 자동화 시스템을 만든다.
Cron = 미리 설정한 날짜, 시간에 따라 스크립트를 실행해주는 잡 스케줄러
http://www.nncron.ru/download.shtml 에서 nncronIt117.exe 설치
🔴ERROR🔴
Notion API 자체 문제
