본문 바로가기
프로그래밍/Python

[Python] 티스토리 API를 사용하여 작성글 쓰기(1)

by 코딩연습생 2021. 1. 12.
반응형

안녕하세요

 

코딩연습생입니다~

 

저번 포스팅에 이어 파이썬 언어를 통해 티스토리 API를 사용하여 자동 업로드를 구현 두번째 포스팅 입니다

 

https://codingman.tistory.com/147?category=762038

 

[Python] 티스토리 API 사용을 위한 Access_token 구하기

안녕하세요 코딩연습생입니다~ 이번 포스팅은 파이썬 언어를 통해 티스토리 API를 사용하여 자동 업로드를 구현해 볼려고 합니다 구현에 앞서 몇가지 준비사항들이 필요한데 1. Token 키를 알아야

codingman.tistory.com

저번 포스팅에서 티스토리 API 사용시 꼭 필요한 Access_Token을 얻는 방법을 소개했습니다

 

이번에는 이어서 글을 올리고자 하는 카테고리 ID를 취득하는 방법을 작성해 보도록 할께요

 

이번 포스팅은 파이썬 환경에서 동작합니다

 

제가 사용한 파이썬의 환경은 아래와 같습니다

 

* 동작 환경

   1) Python 3.6

   2) requests

   3) webbrowser

   4) json

 

저는 example.py라는 파일을 하나 만들고

 

제일 상단에 다음과 같이 패키지를 선언해줬습니다

 

아래 패키지 목록중 settings는 경로를 지정해놓은 별도 py 파일이므로 여기서 설명은 생략 하도록 하겠습니다

# coding=utf-8
from PIL import Image, ImageDraw, ImageFont
import textwrap
import requests
import webbrowser
from datetime import datetime
import os
from pandas import DataFrame
import settings
import time
import json

 

다음 하단에 전 포스팅에서 얻은 정보를 셋팅해 줄겁니다

 

# client_id  == app_id
client_id = ""
# client_secret = Secret_Key
Secret_Key = ""
# code 는 access_token 을 받기 위한 중간 인증코드, 한시간 내 한번만 사용됨.
code = ""
# access_token 최종인증키 유효기간동안 사용가능
access_token = ""

# 티스토리 주소의 아이디나 전체주소
blog_name = "codingman.tistory.com"

# 콜백주소는 자신의 티스토리 주소를 사용해도 되고, 끝에 /는 넣지 않는다.
redirect_uri = "http://codingman.tistory.com"
state_param = "bm"  # 임의의 문자열
output_type = "json"

requests_headers = {  # 없어도 동작됨
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"
}

 

소스코드가 이해가 안되실거 같아서 빨간색으로 표기된 영역에 알맞은 정보 값을 넣어주시면 됩니다

 

설명은 주석으로 작성되어 있으니 어렵지 않으실거 같습니다

 

이제 파이썬의 코드를 클래스로 만들기 위해 구조를 먼저 선언하겠습니다

 

class message_write:
	    def __init__(self):
        super().__init__()

        # 먼저 코드를 생성하고,
        if not code:
            auth_url = f'https://www.tistory.com/oauth/authorize?client_id={client_id}&redirect_uri={redirect_uri}&response_type=code&state={state_param}'
            webbrowser.open(auth_url)
            print('주소창에서 코드 값을 복사하세요. ?code= 이하')
            # r = requests.get(auth_url)
            # print(r.text)

        # 이후에 액세스 토큰을 받아야 한다. 이게 좀 귀찮고 낮설다.
        if code and (not access_token):
            print('acess token 시도중...')
            token_url = f'https://www.tistory.com/oauth/access_token?client_id={client_id}&client_secret={Secret_Key}&redirect_uri={redirect_uri}&code={code}&grant_type=authorization_code'
            r = requests.get(token_url)
            print(r.text)

        self.get_write()
 
 if __name__ == "__main__":
    # 실행
    message_write()
    #get_category()
    #get_write()

 

이렇게 message_write라는 클래스를 만들고

 

모듈별 실행을 위해 __main__을 잡으주고  py파일 제일 먼저 실행될 부분인 __init__에 다음과 같이 코딩해 줍니다

 

다음 각각의 정보를 확인하는 모듈을 넣어볼께요

 

현재 나의 블로그의 정보를 확인하는 모듈입니다

 

    def get_info(self):
        info_url = f'https://www.tistory.com/apis/blog/info?access_token={access_token}&output={output_type}'
        r = requests.get(info_url, headers=requests_headers)
        print(r.text)
        return r.text

 

너무 정보가 뒤죽박죽 나와서 그냥 쉽게 블로그에 대한 속성 값이 나옵니다

 

두번째는 게시된 포스팅글에 대한 속성 값을 조회하는 방법입니다

 

    def get_list(self, page_number):
        url = f'https://www.tistory.com/apis/post/list?access_token={access_token}&output={output_type}&blogName={blog_name}&page={page_number}'
        r = requests.get(url, headers=requests_headers)
        print(r.text)
        return r.text

 

세번째 블로그의 카테고리 ID를 조회 하는 방법입니다

 

    def get_category(self):
        url = f'https://www.tistory.com/apis/category/list?access_token={access_token}&output={output_type}&blogName={blog_name}'
        r = requests.get(url, headers=requests_headers)
        r = r.json()['tistory']['item']['categories']
        for i in r:
            print(f'{i["name"]} ({i["id"]})')
        return r

 

카테고리 명과 (ID) 값을 확인 하실수 있습니다

 

이렇게 현재 나의 블로그의 속성을 확인 하는 방법에 대해 알아 보았습니다

 

이번 포스팅에서 확인한 카테고리 ID를 가지고 글을 업로드하는 방법을 다음시간에 포스팅 해보도록

 

하겠습니다

 

반응형

댓글