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

워드프레스 rest api 자동포스팅 이미지 첨부 파이썬

by 리뷰하는 김과장 2023. 3. 5.

 

 
 

앞서 포스팅한 "워드프레스 rest api 자동포스팅 퍼이썬"에 이어서 이번에는 이미지 까지 자동으로 등록하는 방법에 대해 알아보는 시간 가지도록 하겠습니다. 파이썬으로 워드프레스 자동포스팅 방법을 연구하시는분들에게 좋은 길잡이가 될것 같습니다. 파이썬으로 워드프레스 rest api  자동 이미지 첨부 하는 방법을 알고싶다면 따라오세요~

 

 

 

 

 

1. 워드프레스 자동포스팅 - 이미지 준비

 

이미지는 알아서 미리 준비해 두셔야겠죠.

제가 사용하는 방법은 파이썬으로 직접 이미지를 만들어서 저장합니다.

예전에 썸네일 이미지 파이썬으로 만드는 방법 에 대해 포스팅한적이 있는데 이 포스팅도 참고해보시기 바랍니다. 그냥 배경색상이 있고 중간에 글자만 눈에 뛰게 넣어서 이미지로 저장하는 방법입니다. 이번 포스팅에서도 이 방법으로 썸네일 이미지를 만들었습니다. 갈색배경에 흰색계열의 글자입니다. 워드프레스에서는 썸네일이라 하지 않고 특성이미지라고 하죠. 암튼 특성이미지를 하나 준비하셔야합니다.

 

저는 이런 방법으로 이미지를 하나 준비해두었습니다. 여러분은 여러분만의 방법으로 이미지를 준비해두셔야 겠습니다.

 

 

 

2. 워드프레스  rest api 자동포스팅 이미지 첨부 방법

 

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

WP_URL = 'https://***.***.com'  #자신의 워드프레스 주소
WP_USERNAME = 'autobot'  #워드프레스 사용자이름 
WP_PASSWORD = '**** j5np yNN1 neHg **** zPZA' #어플리케이션 비밀번호
status = 'publish' #즉시발행:publish, 임시저장:draft
slug = "슬러그 입력" #슬러그를 입력하세요
title = "글의 제목 입력" #글의 제목
category_ids = [10] #카테고리 아이디는 글/카테고리/ 해당카테고리에 커서를 가져가면 하다나에 카테고리 아이디값이 나온다. 숫자다
tag_ids = [11] #태그아이디도 카테고리 아이디 찾는 방법과 동일   
filename="test.jpg"  #이미지 파일이름
folder="폴더주소 입력"
filepath=folder + filename #이미지 파일 전체 주소

url = urljoin(WP_URL, '/wp-json/wp/v2/media/')  
f = open(filepath, 'rb')
image_data = f.read()
f.close()
espSequence = bytes(filename, "utf-8").decode("unicode_escape")  

headers = {
    'Content-Type': 'image/png',
    'Content-Disposition': 'attachment; filename=%s' % espSequence,                                 
}
res2 = requests.post(
    url,
    data=image_data,
    headers=headers,
    auth=(WP_USERNAME, WP_PASSWORD),
    )
media_info = res2.json()

media_id = media_info['id'] 
media_url = media_info['source_url'] 

img_contents = f'''[caption id="attachment_{media_id}" align="aligncenter" width="500"]<img class="size-full wp-image-{media_id}" src="{media_url}" alt="{title}" width="500" height="500"> {title}[/caption]
<p>&nbsp;</p><br />
<p>&nbsp;</p>
'''

html="본문내용을 html로 작성"
html= img_contents + html #이미지 넣는 코드를 html에 추가함
content = html #본문내용을 적을것. html 로 적으면 된다            

payload = {"status": status,
            "slug": slug,
            "title": title,
            "content": content,
            # "date": 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=(WP_USERNAME, WP_PASSWORD))
if res.ok:
    print(f'''성공 code:{res.status_code}
    {title}
    {WP_URL}
    {slug}
    {category_ids}
    {tag_ids}
    ''')   
else:
    print(f"실패 code:{res.status_code} reason:{res.reason} msg:{res.text}")

 

 

여기서 핵심부분은 여기 입니다.

filename="test.jpg"  #이미지 파일이름
folder="폴더주소 입력"
filepath=folder + filename #이미지 파일 전체 주소

 

이미지 파일 이름과 폴더주소를 잘 입력해주시면 됩니다.


그리고 이미지 파일을 업로드하는 코드는 이부분입니다.

res2 = requests.post(
    url,
    data=image_data,
    headers=headers,
    auth=(WP_USERNAME, WP_PASSWORD),
    )
media_info = res2.json()

media_id = media_info['id'] 
media_url = media_info['source_url'] 

 

이미지 파일을 업로드 한뒤 그 이미지의 아이디와 이미지url 을 얻었습니다. 이부분이 가장 중요한 부분이겠죠. 이미지의 아이디와 url 이 있어야 본문내용에 넣을수 있을테니 말이죠.

 


이제 이렇게 얻은 아이디와 url 로 html 을 작성해야 겠죠.

img_contents = f'''[caption id="attachment_{media_id}" align="aligncenter" width="500"]<img class="size-full wp-image-{media_id}" src="{media_url}" alt="{title}" width="500" height="500"> {title}[/caption]
<p>&nbsp;</p><br />
<p>&nbsp;</p>
'''
html="본문내용을 html로 작성"
html= img_contents + html #이미지 넣는 코드를 html에 추가함

 

위 코드가 이미지를 추가하는 html 을 만드는 코드입니다. 

 

만약 등록한 첫번째 이미지를 특성이미지로 설정하고 싶다면 워드프레스 플러그인으로 해결하실수가 있습니다. 첫번째 이미지를 특성이미지로 설정해주는 플러그인을 검색해서 설치하시면 쉽게 해결가능합니다. 요건 구글링해서 해결해 보시기 바립니다. 

 

 

 

 

이렇게 해서 파이썬으로 워드프레스 이미지 자동으로 넣는 방법에 대해 자세히 알아보았습니다. 파이썬으로 워드프레스 이미지 자동으로 넣는 방법에 대해 궁금하셨던분들에게는 유용한 정보가 되었을듯합니다. 다음에는 더욱 유용한 정보로 찾아올것을 약속드리며 이번 포스팅은 여기까지 하도록 하겠습니다. 오늘도 행복한 하루 되세요~ ^^

 

 

 

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

 

 

 

댓글