2023.05.22 - [AI & 자동화/티스토리&파이썬] - 티스토리 api 자동 글쓰기 1 ( access_token )

2023.05.23 - [AI & 자동화/티스토리&파이썬] - 티스토리 api 자동 글쓰기 2 ( 파이썬 실습-글 목록 가져오기 )

 

Access_token 을 통해서 API 가 정상적으로 동작하는 것을 확인하였다. 

이제 간단한 글을 업로드 하는 작업을 진행해 보자.

기본 코드는 아래와 같으며 수정할 사항은 access_token내 블로그 url 부분이다. 

import requests

def upload_to_tistory(title, content, access_token, blog_name):
    url = f"https://www.tistory.com/apis/post/write?access_token={access_token}&output=json"
    params = {
        "title": title,
        "content": content,
        "visibility": 0,  # 0: 비공개, 1: 보호, 3: 발행
        "blogName": blog_name,
    }

    response = requests.post(url, data=params)
    if response.status_code == 200:
        print("글이 성공적으로 업로드되었습니다.")
    else:
        print(f"글 업로드 실패. 응답 코드: {response.status_code}")
        print(response.text)

# 업로드할 글의 제목과 내용 설정
title = "GPT"
content = "<p>GPT3</p>"

# Tistory API에서 발급한 액세스 토큰과 블로그명 설정
access_token = "여기에 토큰 값 넣고 "
blog_name = "여기에 블로그 주소 넣고 "

# 티스토리에 글 업로드
upload_to_tistory(title, content, access_token, blog_name)

위 처럼 업로드 하게 되면 카테고리가 없고 비공개로 처리 되기 때문에 몇 가지 조치를 해줘야 한다. 


1. 카테고리를 지정하는 방법

특정 카테고리에 글을 업로드 위해서는 카테고리 아이디를 알아야 한다. (기본값 : 0)

Categoty ID 값을 확인 하는 방법은 아래와 같다.

import requests


def category_list(access_token, blog_name):
    url = f"https://www.tistory.com/apis/category/list?output=json&blogName={blog_name}&access_token={access_token}"

    response = requests.get(url)
    data = response.json()

    if response.status_code == 200:
        print("Success")
        print(data)
    else:
        print(f"실패. 응답 코드: {response.status_code}")
        print(response.text)

# Tistory API에서 발급한 액세스 토큰과 블로그명 설정
access_token = "68afe8001e8c5649ade87fe"
blog_name = "https://bard-google.tistory.com/"

# 티스토리에 글 업로드
category_list(access_token, blog_name)

위 파이썬 코드를 실행하면 아래와 같은 결과가 나온다

읽기 좀 어렵게 되어 있으나 천천히 들여다 보면 확인할 수 있다. 

일단 API_Contents 카테고리에 글을 업로드할 예정이라서 확인해 보니 ID 는 아래처럼 나온다

{'id': '1130770', 'name': 'API_Contents',


2. 글 업로드 하기 

카테고리 아이디를 확인했으니 글을 포스팅 해보자 (ID:1130770)

소스코드를 보면 아래와 같다. 

visibility:  발행상태 (0: 비공개 - 기본값, 1: 보호, 3: 발행)

0으로 하면 비공개로 글이 업로드 되므로 처음에는 0으로 진행하여 테스트를 한 다음

3 으로 값을 변경해 주는 것이 좋다.

import requests

def upload_tistory_post(blog_name, access_token, category_id, title, content):
    url = f'https://www.tistory.com/apis/post/write'
    params = {
        'output': 'json',
        'blogName': blog_name,
        'access_token': access_token,
        'title': title,
        'content': content,
        'visibility' : 3,
        'category': category_id
    }

    response = requests.post(url, params=params)
    data = response.json()

    if 'tistory' in data and 'status' in data['tistory'] and data['tistory']['status'] == '200':
        print('Post uploaded successfully.')
    else:
        print('Failed to upload post.')

# 사용 예시
blog_name = 'YOUR_BLOG_NAME'
access_token = 'YOUR_ACCESS_TOKEN'
category_id = 'YOUR_CATEGORY_ID'
title = '제목'
content = '본문 내용'

upload_tistory_post(blog_name, access_token, category_id, title, content)

 

API_Contents 카테고리에 가면 'API_Title"  제목으로 글이 업로드 된 것을 확인 할 수 있다. 

https://bard-google.tistory.com/category/AI%20%26%20%EC%9E%90%EB%8F%99%ED%99%94/API_Contents

API 를 사용하여 파이썬으로 작성된 글

 

이제 할 일은 자동으로 글을 수집하고 가공하는 작업이다. 

수집된 데이터를 HTML 형식으로 저장하고

파일이 생성되면 자동으로 업로드하게 구성하면 된다. 

+ Recent posts