Mac M1 Ventura 13.4pip 21.2.4 / python 3.9
N2T는 Notion에서 작성한 글을 티스토리에 편하게 올릴 수 있도록 한 Python기반 프로그램이다.
정리는 Notion으로 많이 하는데 Notion에 있는 것을 티스토리에 올리려니 생성 뿐만 아니라 수정도 번거로워서 사용하게 되었다
(노션에서 HTML로 변환해서 올려야하고.. 수정하러 들어가면 틀이 다 깨지고.. 티스토리 작성 방법도 노션보다 생산성이 낮고..)
금방 설치할 수 있을 줄 알고 시작했으나… 예상치 못한 문제가 많아 생각보다 오래걸렸다…
이 글을 통해 다른 분들이 설치 시간을 줄이는데 조금이나 도움이 되었으면 좋겠다
설치
기본 설치는 공식 게시글에 잘 정리되어있으니 참고해서 사용하면 된다!
문제 해결
- config.py의 설정변수
REDIRECT_URI
: 주소 맨뒤에/
지우기
- 카카오 2차인증 때문에 막힐 수 있음
→ 티스토리
ACCESS_TOKEN
으로 로그인하기!- 티스토리
Access token
발급 방법- 주소창에 다음 URL에
client_id
,redirect_uri
를 채운 후 들어가기https://www.tistory.com/oauth/authorize?client_id={client_id}&redirect_uri={redirect_uri}&response_type=code
- 아래 페이지가 나오면 정상적으로 한 것! ‘허가하기’ 버튼 누르기
- 아래 페이지처럼 URL에 나오는
code
부분 확인 (기억해둘 것!) (code: 재사용 불가능, 1시간 이내 1번 사용 가능)
- ‘개발자 도구 > Network’로 들어가기
- 주소창에 다음 URL에
client_id
,client_secret
,redirect_uri
,code
를 채운 후 들어가기https://www.tistory.com/oauth/access_token?client_id={client_id}&client_secret={client_secret}&redirect_uri={redirect_uri}&code={code}&grant_type=authorization_code
- 다음과 같은 페이지에 Network에 200이 왔는지 확인
(에러 페이지 났다고 놀라지 말 것!)
- 까먹고 개발자 도구를 안열었거나 새로고침하면 확인이 불가하거나 400에러로 접근이 불가하니 조심하자
- Network의 Preview를 통해
access token
확인하기
- 주소창에 다음 URL에
- 발급받은
access token
으로 로그인 하도록 코드 변경- config.py에
access token
필드 추가cfg = dotdict( TISTORY=dotdict( ... ACCESS_TOKEN={access_token}, ),
- main.py 수정
# upload할 페이지 체크해서 없으면 프로그램 종료 if len(self.pages) == 0: print('[완료] 발행할 할 페이지가 없습니다.') sys.exit(1) # # selenium 시작 # self.s_client = SeleniumClient(sleep_time=sleep_time, is_hide=(not selenium_debug)) # # selenium으로 kakao(tistory) 로그인, authorize code 발급받기(for OAuth) # try: # self.s_client.tistory_login(cfg.TISTORY.ID, cfg.TISTORY.PW) # except Exception as e: # print(e) # print('[오류] 카카오톡 로그인 실패') # sys.exit(1) # authorize_code = self.s_client.get_tistory_authorize_code(cfg.TISTORY.CLIENT_ID, cfg.TISTORY.REDIRECT_URI) # 위에서 발급받은 code로 tistory 로그인(access_token 발급받기) self.t_client = TistoryClient('authorize_code', cfg.TISTORY.SECRET_KEY, cfg.TISTORY.CLIENT_ID, cfg.TISTORY.REDIRECT_URI, cfg.TISTORY.BLOG_NAME, cfg.TISTORY.ACCESS_TOKEN) # selenium client 종료 # self.s_client.quit()
- config.py에
- 프로그램 실행 시 발행할 것 없다고 나온다!!
(제일 힘들었던 파트..)- 노션에 업데이트한지 얼마 안됐다면 조금 기다려보기
- 될 때까지 프로그램 여러 번 돌려보기 (6번 정도 돌려서 1번 되는 경우가 많은 것같다… 이유는 아직 못찾음)
- 멀티 아이디를 사용하는 경우, 다른 아이디로 해당 테이블을 접근하고 있는지
Token v2
확인하기
- 티스토리
참고
- 위에 올린 공식 게시글 댓글에도 많은 사람들이 해결 방법을 올려 참고하면 좋다!
- 테이블은 공식 게시글 것을 복제해오는 것이 맘편하다
- 하루에 티스토리에 15개까지만 이걸로 공개 발행 가능하다!
- 발행 상태 설정하기
- main.py에서 visibility값 수정
발행상태 (0: 비공개 [기본값], 1: 보호, 3: 발행)
resp_post = self.t_client.posting(title=title, content=content, visibility=3, # 0 category=category_id, tag=tags, modify_id=page[1])
- main.py에서 visibility값 수정
발행상태 (0: 비공개 [기본값], 1: 보호, 3: 발행)
소감
- 생각보다 설치하는데 오래걸려서.. 수동으로 발행하는 것이 더 빠르지 않을까 생각이 들었지만 들인 시간이 아까워서 어떻게든 성공시켰다
- 커뮤니티가 적어서 오류를 잡는데 여러 방법을 시도해 보았다
- notion API 문서, github를 참조하면서 제공하는 함수의 종류와 기능을 익혔다
- 직접 python 라이브러리 코드에 해석하면서 프린트를 찍으면서 어디에서 막히는지 분석하려고 했다
Uploaded by N2T