본문 바로가기
  • 이웃집 찰스
파이썬

워드프레스 rest api 자동포스팅 파이썬

by 리뷰하는 김과장 2022. 12. 2.

 

 
 

이번에는 rest api를 이용해서 파이썬으로 워드프레스에 자동포스팅 하는 방법에 대해 자세히 알아보는 시간 가지도록 하겠습니다. 바로 앞시간에는 XMLRPC 를 이용해서 워드프레스 자동포스팅 방법에 대해 알려드렸는데요. 이방법은 편하기는 한데 보안상의 문제가 좀 있어서 주의가 필요한 방법입니다.  rest api를 이용해서 파이썬으로 워드프레스에 자동포스팅 하는 방법에 대해 궁금하시다면 따라오세요~

 

 

 

 

 

 

1. rest api 자동포스팅 - 서론

 

rest api를 이용해서 파이썬으로 워드프레스에 자동포스팅하려면 여러가지 방법이 있지만 제가 성공한 방법을 알려드리도록 하겠습니다. 이상하게 저는 다른 방법으로는 안되고 유일하게 이 방법으로만 성공을 했네요~ 여러방법이 있지만 전부 만만치 않은 작업을 하셔야 할겁니다.

 

하지만 제가 소개하는 방법은 아주 쉽습니다. 제가 생각하기에는 가장 쉬운 방법이였다고 생각이 듭니다. 사실 다른 방법으로 시도해보았는데 전부 실패했고 이 방법만 성공했습니다. 다른 방법은 좀 어렵기도하고 성공하지도 못했답니다. ㅜ.ㅜ

 

자 그럼 시작하도록 하겠습니다. 따라오세요~

 

 

#워드프레스 #rest #api #자동포스팅 #파이썬

 

 

 

2. 워드프레스  사용자 새로추가

 

API 를 이용한 자동포스팅할때 사용자룰 구분하는것이 좋습니다. 기존 아이디와 비번을 사용하는것은 추천드리지 않습니다. 새로운 사용자를 하나 만들어서 사용하시는게 관리하는데 더 유리합니다. 수동으로 포스팅하는 사용자와 자동으로 포스팅하는 사용자를 분리해서 관리하기 위합입니다.

 

 

워드프레스 관리자 화면에서 사용자  클릭후 새로추가를 클릭해주세요.

 

 

 

 

1) 사용자명을 입력합니다.

2) 이메일을 입력합니다.

3) 자동으로 비밀번호가 생성되어 있습니다.

복사해서 기억하기 쉽게 메모장아니 엑셀같은곳에 저장해두세요.

4) 관리자로 변경합니다. 기본은 구독자 입니다. 구독자로 설정되어 있을경우 자동 포스팅이 안되니 주의하세요.

5) 사용자 추가 를 클릭하세요.

 

이렇게 하면 새로운 사용자가 추가됩니다.

 

 

#워드프레스 #rest #api #자동포스팅 #파이썬

 

 

 

3. rest api 자동포스팅 -  어플리케이션 비밀번호 생성하기

 

 

워드프레스 관리자 화면에 들어갑니다.

 

 

 

 

사용자 - 모든 사용자 를 클릭해서 들어가면 위 화면처럼 나옵니다.  좀 전에 만든 사용자를 클릭해서 사용자 편집 화면으로 들어가세요.

 

 

 

아래로 아래로 스크롤을 내리면 위와같이 응용프로그램 비밀번호 항목이 나옵니다.

새 응용프로그램 이름은 아무거나 입력하신후

새 응용 프로그램 비밀번호 추가 버튼을 클릭하세요.

 

그러면 비밀번호가 뜹니다.

 

비밀번호 형식은

BFz4 vknX pJ38 oFSP oo9g 7iAT

위와같은 형식입니다.  6개의 문자열입니다. 

 

요것은 매우 중요한것이기 때문에 복사해서 메모장에 잘 저장해두세요. 나중에 잊어버리면 확인할 방법이 없습니다.

 

이 비밀번호는 API 액세스시에 이용하므로, 외부에 누출되지 않도록 소중히 보관해 주세요.

 

외부로 누출되면 그 사람이 자유롭게 당신의 WordPress에 게시할 수 있습니다 (만약 누출되면 신속하게 Password를 비활성화하여 외부에서 API 액세스되지 않도록 합시다)

 

자 이렇게 해서 준비작업은 모두 끝이 났습니다. 다음으로 넘어가겠습니다.

 

 

#워드프레스 #rest #api #자동포스팅 #파이썬

 

 

 

4.  rest api 자동포스팅 - 파이썬 소스 공개

 

import json
import requests
from urllib.parse import urljoin
from datetime import datetime

WP_URL = 'https://blog.XXX.com/'  #자신의 워드프레스 주소
WP_USERNAME = 'XXXXX@gmail.com'  #워드프레스 사용자이름
WP_PASSWORD = 'BF*4 v*nX pJ38 o*SN oo9g **k*' #어플리케이션 비밀번호
status = 'draft' #즉시발행:publish, 임시저장:draft
slug = 'python-auto-post-rest-api-test' #슬러그를 입력하세요

title = '파이썬 자동포스팅' #글의 제목
content = '여기에 내용을 적으세요' #본문내용을 적을것. html 로 적으면 된다
category_ids = [22] #카테고리 아이디는 글/카테고리/ 해당카테고리에 커서를 가져가면 하다나에 카테고리 아이디값이 나온다. 숫자다
tag_ids = [21] #태그아이디도 카테고리 아이디 찾는 방법과 동일
media_id=None   #이번에는 이미지 업로드를 하지 않을거기 때문에 None 을 입력했습니다. 
#추후에 이미지를 업로드 하게 된다면 업로드 된 이미지의 아이디를 입력하시면 특성이미지로 설정이 됩니다.

#===============================================================
#===============================================================

user_ = WP_USERNAME
pass_ = WP_PASSWORD

payload = {"status": status,
            "slug": slug,
            "title": title,
            "content": content,
            "date": datetime.now().isoformat(),
            "categories": category_ids,
            "tags": tag_ids}
if media_id is not None:
    payload['featured_media'] = media_id

res = requests.post(urljoin(WP_URL, "wp-json/wp/v2/posts"),
                    data=json.dumps(payload),
                    headers={'Content-type': "application/json"},
                    auth=(user_, pass_))

if res.ok:
    print("성공 code:{res.status_code}")    
else:
    print(f"실패 code:{res.status_code} reason:{res.reason} msg:{res.text}")

 

 

수정해야 할부분은 

 

WP_URL = 'https://blog.XXX.com/'  #자신의 워드프레스 주소
WP_USERNAME = 'XXXXX@gmail.com'  #워드프레스 사용자이름
WP_PASSWORD = 'BF*4 v*nX pJ38 o*SN oo9g **k*' #어플리케이션 비밀번호
status = 'draft' #즉시발행:publish, 임시저장:draft
slug = 'python-auto-post-rest-api-test' #슬러그를 입력하세요

title = '파이썬 자동포스팅' #글의 제목
content = '여기에 내용을 적으세요' #본문내용을 적을것. html 로 적으면 된다
category_ids = [22] #카테고리 아이디는 글/카테고리/ 해당카테고리에 커서를 가져가면 하다나에 카테고리 아이디값이 나온다. 숫자다
tag_ids = [21] #태그아이디도 카테고리 아이디 찾는 방법과 동일
media_id=None   #이번에는 이미지 업로드를 하지 않을거기 때문에 None 을 입력했습니다. 
#추후에 이미지를 업로드 하게 된다면 업로드 된 이미지의 아이디를 입력하시면 특성이미지로 설정이 됩니다.

 

위 내용입니다.

 

하나하나 살펴보겠습니다.

 


 

WP_URL = 'https://blog.XXX.com/'  #자신의 워드프레스 주소

 

자신의 워드프레스 주소를 입력하세요. 마지막에 / 를 붙이는것을 잊지 마세요 요거 하나 때문에 에러가 발생할수도 있습니다.

 


WP_USERNAME = 'XXXXX@gmail.com'  #워드프레스 사용자이름
WP_PASSWORD = 'BF*4 v*nX pJ38 o*SN oo9g **k*' #어플리케이션 비밀번호

 

워드프레스 사용자 이름과 어플리케이션 비밀번호를 입력하세요. 어플리케이션 비밀번호는 아까 메모장에 복사해놓으라고 한 그것을 입력하셔야 합니다.

 

6개의 문자열로 된 비밀번호 입니다.

 


status = 'draft' #즉시발행:publish, 임시저장:draft

 

일단 임시저장으로 테스트해보는게 좋겠죠~ 나중에 익숙해지면 바로 즉시 발행으로 바꾸시면 됩니다.

즉시 발행은

 

status = 'publish

 

이렇게 수정하시면 됩니다.

 


slug = 'python-auto-post-rest-api-test'  #슬러그를 입력하세요

 

 

슬러그는 아시는 분은 아실텐데 슬러그가 바로 포스팅한 게시물의 주소가 됩니다. 영어로 입력하시는것이 좋으며 핵심 키워드를 조합해서 입력하시면 SEO 에 도움이 됩니다. 저 같은경우 제목을 영어로 번역한후 공백을 "-"로 치환해서 슬러그로 사용합니다. SEO 에 조금이라도 도움이 된다면 놓치지 말고 신경을 쓰는게 좋겠죠~

 


title = '파이썬 자동포스팅' #글의 제목
content = '여기에 내용을 적으세요' #본문내용을 적을것. html 로 적으면 된다

 

포스팅의 제목과 본문 내용입니다. 본문내용은 HTML 로 입력하시면 됩니다. 이것은 아마 미리 준비해두셨을테니 설명을 생략하도록 하겠습니다.

 


category_ids = [22] #카테고리 아이디는 글/카테고리/ 해당카테고리에 커서를 가져가면 하다나에 카테고리 아이디값이 나온다. 숫자다
tag_ids = [21] #태그아이디도 카테고리 아이디 찾는 방법과 동일

 

카테고리 아이디와 태그 아이디는 직접 찾아서 적으셔야 합니다. 앞서 소개한 XMLRPC 를 이용한 자동포스팅과 조금 틀린부분이 이부분입니다. 아이디를 찾는 방법도 알려드릴께요.

 

워드프레스 관리자화면에서  글 - 카테고리를 클릭하시면 모든 카테고리 리스트가 나옵니다. 카테고리 중 하나에 마우스 커서를 올려놓으면 하단에 URL 이 뜹니다.

 

위 이미지를 보시면 Python  이라는 카테고리에 마우스를 가져갔고 그랬더니 하단에 주소가 나오는데 그중에서도 자세히 잘보시면 category&tag_id=22  라는 부분이 보입니다. 따라서 Python이라는 카테고리 아이디는 22 입니다.

 

태그도 마찮가지 입니다. 워드프레스 관리자 화면에서 글- 태그 를 클릭합니다. 원하는 태그에 마우스를 가져가면 하단에 주소가 나옵니다. 거기에서 tag_id=21 이런씩으로 숫자가 나오는것을 확인할수가 있습니다. 

 


media_id=None   #이번에는 이미지 업로드를 하지 않을거기 때문에 None 을 입력했습니다. 

 

이번에는 이미지 업로드를 하지 않을거기 때문에  media_id=None 으로 설정을 했습니다. 추후에 이미지 업로드를 하게 된다면 이미지의 아이디를 추출해서 특성이미지로 설정하는 방법까지 알려드리도록 하겠습니다.

 


"date": datetime.now().isoformat(),

 

이 부분이 보일겁니다. 이것을 발행일자를 적는부분입니다. 우리는 즉시발행을 할것이기 때문에 주석처리해도 즉시발행하는데 아무 문제가 없습니다. 나중에 예약발행할때 이부분을 수정해서 날짜를 하루나 이틀 뒤로 설정해서 사용하면 좋을것 같기는 합니다. 

 

설명하는김에 날짜를 연산하는 방법도 알아보도록 하겠습니다.

 

import datetime
now = datetime.datetime.now() # 현재시간
now_after_1 = now + datetime.timedelta(days=1)  #현재보다 하루 뒤
now_hours_1 = now + datetime.timedelta(hours=1) #현재보다 1시간 뒤
now_minutes_1 = now + datetime.timedelta(minutes=1) #현재보다 1분뒤

 

주석이 있어서 따로 설명은 하지 않겠습니다.

위위 같이 하루뒤 한시간뒤 1분뒤의 시간을 구할수가 있습니다.

위 소스를 참고해서  적절히 수정하면 원하는 예약시간을 설정하실수가 있습니다. 

하지만 예약발행을 사용하지 않으실거라면

"date": datetime.now().isoformat(),

이 부분을 주석처리하시기 바랍니다.

 

 

 

5.  rest api 자동포스팅 - 마무리

 

 

이렇게 해서 rest api를 이용해서 파이썬으로 워드프레스에 자동포스팅 하는 방법에 대해 자세히 알아보았습니다. rest api를 이용해서 파이썬으로 워드프레스에 자동포스팅 하는 방법에 대해 궁금하셨던분들에게는 유용한 정보가 되었을듯합니다. 다음에는 rest api 를 이용해서 워드프레스 자동포스팅할때 이미지를 첨부하는 방법까지 알아보도록 하겠습니다.  다음편도 기대해주세요~   그럼 이번 포스팅은 여기까지 하도록 하겠습니다. 오늘도 행복한 하루 되세요~ ^^

 

 

#워드프레스 #rest #api #자동포스팅 #파이썬

 

 

 

♥공감은 고래도 춤추게 합니다~ ^^

 

댓글