J.BF Story

[N2T] Mac에서 N2T 설치 시 문제 해결 본문

TOOL

[N2T] Mac에서 N2T 설치 시 문제 해결

J.BF 2023. 8. 6. 20:26

Mac M1 Ventura 13.4

pip 21.2.4 / python 3.9

N2T는 Notion에서 작성한 글을 티스토리에 편하게 올릴 수 있도록 한 Python기반 프로그램이다.

정리는 Notion으로 많이 하는데 Notion에 있는 것을 티스토리에 올리려니 생성 뿐만 아니라 수정도 번거로워서 사용하게 되었다 (노션에서 HTML로 변환해서 올려야하고.. 수정하러 들어가면 틀이 다 깨지고.. 티스토리 작성 방법도 노션보다 생산성이 낮고..)

금방 설치할 수 있을 줄 알고 시작했으나… 예상치 못한 문제가 많아 생각보다 오래걸렸다…

이 글을 통해 다른 분들이 설치 시간을 줄이는데 조금이나 도움이 되었으면 좋겠다

설치

기본 설치는 공식 게시글에 잘 정리되어있으니 참고해서 사용하면 된다!

문제 해결

  • config.py의 설정변수
    • REDIRECT_URI: 주소 맨뒤에 / 지우기
  • 카카오 2차인증 때문에 막힐 수 있음 → 티스토리 ACCESS_TOKEN으로 로그인하기!
    • 티스토리 Access token 발급 방법
      1. 주소창에 다음 URL에 client_id, redirect_uri를 채운 후 들어가기
        https://www.tistory.com/oauth/authorize?client_id={client_id}&redirect_uri={redirect_uri}&response_type=code
      1. 아래 페이지가 나오면 정상적으로 한 것! ‘허가하기’ 버튼 누르기
      1. 아래 페이지처럼 URL에 나오는 code 부분 확인 (기억해둘 것!) (code: 재사용 불가능, 1시간 이내 1번 사용 가능)
      1. ‘개발자 도구 > Network’로 들어가기
      1. 주소창에 다음 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
      1. 다음과 같은 페이지에 Network에 200이 왔는지 확인 (에러 페이지 났다고 놀라지 말 것!)
        • 까먹고 개발자 도구를 안열었거나 새로고침하면 확인이 불가하거나 400에러로 접근이 불가하니 조심하자
      1. Network의 Preview를 통해 access token 확인하기
    • 발급받은 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()
    • 프로그램 실행 시 발행할 것 없다고 나온다!! (제일 힘들었던 파트..)
      • 노션에 업데이트한지 얼마 안됐다면 조금 기다려보기
      • 될 때까지 프로그램 여러 번 돌려보기 (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])

소감

  • 생각보다 설치하는데 오래걸려서.. 수동으로 발행하는 것이 더 빠르지 않을까 생각이 들었지만 들인 시간이 아까워서 어떻게든 성공시켰다
  • 커뮤니티가 적어서 오류를 잡는데 여러 방법을 시도해 보았다
    • notion API 문서, github를 참조하면서 제공하는 함수의 종류와 기능을 익혔다
    • 직접 python 라이브러리 코드에 해석하면서 프린트를 찍으면서 어디에서 막히는지 분석하려고 했다

Uploaded by N2T

Comments