본문 바로가기
Python

[파이썬] 티스토리 API 자동 포스팅

by 퍼포먼스마케팅코더 2022. 6. 20.
반응형

 

바빠서 시간이 부족하거나 파이썬 코딩이 처음인 사람들이 많다. 누구나 손쉽게 코딩을 배우고 바로 업무자동화,디지털마케팅 등에 쓰일만한 여러 가지 파이썬 코드를 만들고 있다. 이에 파이썬 티스토리 API 자동 포스팅 를 통해 파이썬 코드 공유드린다. 오늘은 파이썬 티스토리 API 자동 포스팅 하는 방법 을 가져왔다. 이제 티스토리를 통해 어떻게 API로 포스팅하는지를 알아보자. 주요 텍스트 및 이미지까지 업로드 하는 방법을 통해 파이썬으로 자동 포스팅을 할 수 있는 방법이 무엇인지를 알아본다.

 

 

먼저 똑같이 티스토리 API 키를 발급받아야된다. 먼저 아래 사이트로 가서 앱 등록 이후 API 키를 발급받자.

 

https://www.tistory.com/guide/api/manage/register

 

TISTORY

나를 표현하는 블로그를 만들어보세요.

www.tistory.com

 

파이썬 티스토리 API 키 발급받기

티스토리 API 키를 발급받기 위해선 아래에 앱 등록을 가보면 써야될 부문들이 몇 군데 있다.  이제 하나씩 처리해보도록 하자.

 

 

티스토리 API 자동 포스팅

 

아래를 보면 서비스명, 설명, 서비스 URL, CallBack 이렇게 작성해야된다.

해당 부문을 꼭 확인하고 넘어가자. 이외 반드시 읽기, 쓰기 체크도 있어야된다. 이후 오픈 API 이용약관을 읽어보고 

체크하면 넘어가면 된다. 서비스 URL엔 본인 티스토리 주소를 입력하면 된다.

티스토리 API 자동 포스팅

 

이제 app id와 secret key를 발급받았다. 이제 파이썬으로 넘어가서 코딩을 해보자.

티스토리 API 자동 포스팅

 

파이썬 티스토리 API authentication 코드 발급받기

파이썬으로 코딩하기 위해서 아래를 보면 이전에 써둔 app id 와 secret key를 입력하면 된다. 그리고 callback_url 공란엔 본인 티스토리 주소를 입력하면 된다. 해당 코드를 치면 또 다른 URL이 나오는데, 이때 해당 URL을 클릭한다. 

 

#access_token 받기1

import requests
import re

app_id = ''  #appid키 입력
secret_key = '' #secret_key 키 입력

callback_uri ='' #티스토리 주소 입력

# authentication_code 얻기 
url = 'https://www.tistory.com/oauth/authorize?client_id=' + app_id + '&redirect_uri=' + callback_uri + '&response_type=code'

print(url) #url 클릭

 

파이썬 티스토리 API access token 발급받기

해당 URL을 클릭하면 추가로 ~을 허용하시겠습니까? 라는 문구가 나온다. 주저없이 허용하기를 클릭하고 넘어간다. 

그럼 해당 URL이 바뀔텐데, 그 바뀐 URL 내부에 code = """""""  이런 부문이 있을것이다. 

해당 코드란이 바로 authentication 코드이다. 잘 기록하여 하기 코드 authentication_code 란에 입력해두자.

그리고 파이썬 코딩 코드 실행. 그러면 최종 access_token 발급이 완료된다.

#access_token 받기 & 인증
 
authentication_code = '' #해당 code 입력

url_2 = 'https://www.tistory.com/oauth/access_token'

params = { 'client_id': app_id, 
          'client_secret': secret_key, 
          'redirect_uri': callback_uri, 
          'code': authentication_code, 
          'grant_type': 'authorization_code' }

res = requests.get(url_2, params=params)

if res.status_code == 200: 
    print(res.text.replace('access_token=','')) 
else: 
    print(res) #access_token 최종 받기

 

파이썬 티스토리 API access token 인증확인

최종 access_token을 가지고 이제 입력하면 된다. 

밑에 보면은 티스토리 API 가 정상적으로 작동되는지 확인하는 파이썬 코딩 인증 확인 공간이다. 

appid, access_token 을 입력하고, 이외 callback URL에 본인 티스토리 주소를 입력한다. 

마지막으로 본인 티스토리의 blogname.tistory.com 여기에서 blogname 부문만 또 입력하면 된다.

그리고 코드 실행. 200 이 뜨면 정상적인 인증이 완료된 것이다.

#access_token을 통한 인증확인

import requests 

appid = ""  #앱ID 입력
access_token = "" #access_token 입력
callback_url = ""  #티스토리 주소 입력
blogName = "" #티스토리 주소 입력

url = "https://www.tistory.com/apis/category/list"
params = { 'access_token': access_token, 
              'output': 'json',
              'blogName': blogName }

res = requests.get(url, params=params)
if res.status_code == 200:
    res_json = res.json()
    print(res_json)

 

파이썬 티스토리 API 자동 포스팅 이미지 업로드

이제 파이썬 코딩으로 API 포스팅을 해볼까? 이전과 똑같다. 

먼저 blogname 에 본인꺼 입력하고, access_token으로 입력한 이후 test_image_path 란에 이미지를 등록해둔다.

밑에 tags 란은 태그 키워드이다. 이외 title은 제목이며, content는 본문 내용이다. 아직까지 티스토리 html 작업까지도 지원되기 때문에, html 소스로 작성을 해봤다. 물론 그냥 파이썬으로 작성해도 된다. 이후 해당 코드를 실행하여 최종 response 200 코드를 받으면은 최종 티스토리 API를 통한 파이썬 자동 포스팅이 완료된다.

 

 

#이미지 업로드

import requests 
import json

blogName = '' #티스토리 블로그 이름 입력
access_token = '' # 액세스토큰입력
tistory_url = 'https://www.tistory.com/apis/post/write' #url

test_image_path = '' 이미지 디렉토리 입력

files = {'uploadedfile': open(test_image_path, 'rb')}
params = {'access_token': access_token, 'blogName': blogName, 'targetUrl': blogName, 'output': 'json'}
rd = requests.post('https://www.tistory.com/apis/post/attach', params=params, files=files)
item = json.loads(rd.text)
test_image = item["tistory"]["replacer"]

tags = "테스트1, 테스트2, 테스트3, 테스트4"  #태그는 쉼표로 구분

title = '[테스트] 테스트입니다.'  #제목
content = '<p data-ke-size="size16">테스트입니다.</p>' #본문
content += '<p data-ke-size="size16">테스트입니다.</p>'
content += '<p>'+ test_image +'</p>'

parameters = {
    'access_token' : access_token,
    'output' : '{output-type}',
    'blogName' : blogName,
    'title' : title,
    'content' : content,
    'visibility' : '3',
    'category' : '48508',
    'tag' : tags,
    'acceptComment' : '1'
}

requests.post(tistory_url, params=parameters)  #최종완료 Response가 200일시 완료임.
반응형

댓글