워드프레스 이미지 업로드 위한 파이썬[Python] 코드 만들기

워드프레스 이미지 업로드 위한 파이썬 코드 만들기

 

최근에 파이썬을 이용하여 워드프레스에 글을 자동으로 업로드하는 코드를 작성하였습니다. 글을 업로드하는 기능은 비교적 쉽게 구현할 수 있었지만, 이미지를 함께 업로드하는 코드를 만드는게 너무 어려웠습니다.  인터넷을 열심히 검색한 끝에 해결 방법을 찾았고, 이를 정리하여 공유하고자 합니다.

https://iamgus.tistory.com/710

 

참고한 자료 및 코드 완성 과정

워드프레스에서는 /wp-json/wp/v2/posts 엔드포인트를 사용하여 글을 작성할 수 있으며, 기본적인 인증 과정이 필요합니다. 그러나 이미지를 업로드하려면 /wp-json/wp/v2/media 엔드포인트를 활용해야 하는데, 이 부분에서 시행착오를 많이 겪었습니다.

우선, 이미지를 업로드하려면 다음과 같은 과정이 필요합니다:

  1. 이미지 파일을 준비한다.
  2. HTTP 요청을 통해 워드프레스에 이미지를 업로드한다.
  3. 응답으로 받은 이미지 URL을 활용하여 글에 첨부한다.

이를 구현한 코드의 핵심 부분을 정리하면 다음과 같습니다.

 

전체코드

import base64
import requests
import json

site_name = “사이트주소”
wp_user = “ID”
wp_password = “어플리케이션 비밀번호”

# 인증 정보 생성
wp_credentials = f”{wp_user}:{wp_password}”
wp_token = base64.b64encode(wp_credentials.encode()).decode(“utf-8”)
wp_header = {
“Authorization”: f”Basic {wp_token}”,
“Content-Type”: “application/json”
}

# API URL
posts_api_url = f”https://{site_name}/wp-json/wp/v2/posts”
media_api_url = f”https://{site_name}/wp-json/wp/v2/media”

# 이미지 업로드
img_name = “업로드할 그림파일.png”
with open(img_name, “rb”) as file:
files = {“file”: (img_name, file, “image/png”)}
media_headers = {
“Authorization”: f”Basic {wp_token}”,
“Content-Disposition”: f’attachment; filename=”{img_name}”‘,
“Content-Type”: “multipart/form-data”,
}
upload_res = requests.post(media_api_url, headers=media_headers, files=files)
upload_res.raise_for_status() # 오류 발생 시 예외 처리

upload_data = upload_res.json()
image_url = upload_data.get(“source_url”)

if not image_url:
print(“이미지 URL을 가져올 수 없습니다.”)
exit()

# 글쓰기
title = “이미지업로드입니다.”
content = f'<img src=”{image_url}” alt=”사진” class=”wp-image-34″ style=”width:619px;height:auto”/><p>이미지 업로드입니다.</p>’

data = {“title”: title, “content”: content, “status”: “publish”}

# 게시글 작성 요청
res = requests.post(posts_api_url, headers=wp_header, json=data)
res.raise_for_status() # 오류 발생 시 예외 처리

print(“글 작성 완료:”, res.json().get(“link”))

 

코드 설명

  1. 이미지 업로드
    • 로컬 이미지 파일을 열어 POST 요청을 통해 업로드합니다.
    • 성공적으로 업로드되면 응답 데이터에서 source_url을 가져옵니다.
    • 실패하면 오류 메시지를 출력하고 종료합니다.
  2. 글 작성
    • 업로드된 이미지의 URL을 사용하여 글 내용을 생성합니다.
    • POST 요청을 통해 게시글을 작성하고 즉시 공개합니다.

실행 결과

코드를 실행하면 이미지가 먼저 업로드되고, 이후 해당 이미지가 포함된 글이 자동으로 워드프레스에 잘 게시됩니다.

워드프레스 자동화를 고려하는 분들에게 이 글이 도움이 되길 바랍니다!