글 작성하기
티스토리 api의 gitbook을 살펴보면 글 작성하는 api는 다음과 같다.
POST https://www.tistory.com/apis/post/write?
access_token={access-token}
&output={output-type}
&blogName={blog-name}
&title={title}
&content={content}
&visibility={visibility}
&category={category-id}
&published={published}
&slogan={slogan}
&tag={tag}
&acceptComment={acceptComment}
&password={password}
- blogName: 블로그명(필수)
- title: 글 제목 (필수)
- content: 글 내용
- visibility: 발행상태 (0: 비공개 - 기본값, 1: 보호, 3: 발행)
- category: 카테고리 아이디 (기본값: 0)
- published: 발행시간 (TIMESTAMP 이며 미래의 시간을 넣을 경우 예약. 기본값: 현재시간)
- slogan: 문자 주소
- tag: 태그 (',' 로 구분)
- acceptComment: 댓글 허용 (0, 1 - 기본값)
- password: 보호글 비밀번호
즉, 'https://www.tistory.com/apis/post/write?'라는 주소에 각 파라미터들을 넣어 post 요청을 보내는 것이다.
1. 카테고리명 확인하기
나는 '야구 기록'이라는 카테고리 안에 글을 자동으로 작성할 것이기 때문에 이 카테고리의 아이디가 필요하다.
카테고리 목록 api를 이용해서 카테고리의 아이디를 알아낼 수 있다.
https://www.tistory.com/apis/category/list?
access_token={access-token}
&output={output-type}
&blogName={blog-name}
- access-token : 발급받은 access-token
- output : output type (ex. json)
- blogName : 블로그명
각 파라미터를 넣은 후 주소창에 해당 주소를 입력하면 다음과 같은 결과물을 얻을 수 있다.
여기서 id 값이 해당 카테고리의 id값이 된다.
2. content 작성
이제는 각 파라미터들을 채워가는 일만 남았다.
def autoPosting():
url = 'https://www.tistory.com/apis/post/write?'
global keyEnter
keyEnter = '<h3 data-ke-size="size23"> </h3>'
title = '{}의 야구 기록'.format(date)
content = '<p style="text-align: right;" data-ke-size="size16">이 글은 python 프로그램에 의해 자동으로 업로드된 글입니다.</p>'
content += keyEnter + keyEnter
content += postingResult()
content += postingGraph()
content += postingPlayerRecord()
content를 작성하는 방법은 html 태그를 이용해 작성하고 싶은 내용을 붙여나가면 된다.
어떻게 작성해야 할지 감이 잡히지 않을 때는 직접 티스토리 글쓰기에서 원하는 내용을 써본 후 html 모드로 바꿔 태그들을 확인하면 된다.
3. POST 요청 보내기
content를 모두 작성했다면 각 파라미터들을 넣고 requests 모듈을 이용해 post 요청을 보내면 된다.
import requests
import json
def autoPosting():
url = 'https://www.tistory.com/apis/post/write?'
global keyEnter
keyEnter = '<h3 data-ke-size="size23"> </h3>'
title = '{}의 야구 기록'.format(date)
content = '<p style="text-align: right;" data-ke-size="size16">이 글은 python 프로그램에 의해 자동으로 업로드된 글입니다.</p>'
content += keyEnter + keyEnter
content += postingResult()
content += postingGraph()
content += postingPlayerRecord()
parameters = {
'access_token': access_token,
'output': 'json',
'blogName': blogName,
'title': title,
'content': content,
'visibility': '3',
'category': categoryId,
'tag': '한화이글스',
}
rq = requests.post(url, params=parameters)
posting = json.loads(rq.text)["tistory"]
if(posting['status'] == '200'):
# 정상 작동 확인
print("Posting... status", posting["status"])
else:
print("Posting Error : ", posting["error_message"])
나는 사진 업로드와 사진과 관련된 글을 입력하는 것은 따로 함수를 두었다.
그리고 파라미터를 줄 때 output을 json 형식으로 받아 이 내용을 posting이라는 변수에 저장했다.
즉, posting 안에 응답 내용이 들어있는 것이다.
status가 200이라면 정상적으로 글이 업로드되었다는 문구를 출력하도록 했고 status가 200이 아니라면(오류가 있다면) 에러메세지를 출력하도록 했다.
+) 나는 깃헙에 커밋할 예정이었기 때문에 다른 파이썬 파일을 하나 만들어 그 안에 access token, blogName, categoryID 등을 저장한 후 .gitignore에 적어두었다.
따로 어디 올리지 않을 예정이라면 파라미터에 바로 적어도 문제는 없지만 개인정보이니 다른 파일에 적고 import 하는 것을 추천한다.
자세한 내용은 다음 페이지에서 확인할 수 있다.
https://tistory.github.io/document-tistory-apis/apis/v1/post/write.html
'Python' 카테고리의 다른 글
Python&티스토리 api로 kbo 경기 기록 자동 포스팅하기(7) (0) | 2021.06.22 |
---|---|
Python&티스토리 api로 kbo 경기 기록 자동 포스팅하기(6) (0) | 2021.06.17 |
Python&티스토리 api로 kbo 경기 기록 자동 포스팅하기(4) (0) | 2021.06.17 |
Python&티스토리 api로 kbo 경기 기록 자동 포스팅하기(3) (0) | 2021.06.17 |
Python&티스토리 api로 kbo 경기 기록 자동 포스팅하기(2) (0) | 2021.06.14 |
댓글