
워드프레스 이미지 업로드 위한 파이썬[Python] 코드 만들기
워드프레스 이미지 업로드 위한 파이썬 코드 만들기
최근에 파이썬을 이용하여 워드프레스에 글을 자동으로 업로드하는 코드를 작성하였습니다. 글을 업로드하는 기능은 비교적 쉽게 구현할 수 있었지만, 이미지를 함께 업로드하는 코드를 만드는게 너무 어려웠습니다. 인터넷을 열심히 검색한 끝에 해결 방법을 찾았고, 이를 정리하여 공유하고자 합니다.
https://iamgus.tistory.com/710
참고한 자료 및 코드 완성 과정
워드프레스에서는 /wp-json/wp/v2/posts
엔드포인트를 사용하여 글을 작성할 수 있으며, 기본적인 인증 과정이 필요합니다. 그러나 이미지를 업로드하려면 /wp-json/wp/v2/media
엔드포인트를 활용해야 하는데, 이 부분에서 시행착오를 많이 겪었습니다.
우선, 이미지를 업로드하려면 다음과 같은 과정이 필요합니다:
- 이미지 파일을 준비한다.
- HTTP 요청을 통해 워드프레스에 이미지를 업로드한다.
- 응답으로 받은 이미지 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”))
코드 설명
- 이미지 업로드
- 로컬 이미지 파일을 열어
POST
요청을 통해 업로드합니다. - 성공적으로 업로드되면 응답 데이터에서
source_url
을 가져옵니다. - 실패하면 오류 메시지를 출력하고 종료합니다.
- 로컬 이미지 파일을 열어
- 글 작성
- 업로드된 이미지의 URL을 사용하여 글 내용을 생성합니다.
POST
요청을 통해 게시글을 작성하고 즉시 공개합니다.
실행 결과
코드를 실행하면 이미지가 먼저 업로드되고, 이후 해당 이미지가 포함된 글이 자동으로 워드프레스에 잘 게시됩니다.
워드프레스 자동화를 고려하는 분들에게 이 글이 도움이 되길 바랍니다!