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

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

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

 

 

 

 

XMLRPC 를 이용해서 워드프레스 자동포스팅 방법을 바로 앞에 포스팅에서 설명했습니다. 이번에는 파이썬으로 이미지를 첨부하는 방법까지 알아보도도록 하겠습니다. XMLRPC 를 이용해서 워드프레스 자동포스팅 방법을 확인하고 싶다면 여기를 클릭해서 확인하시고 다시 오시기 바랍니다. 파이썬으로 이미지 첨부하는 방법에 대해 알아보고 싶다면 따라오세요~

 

 

 

 

1. 파이썬 XMLRPC 를 이용한 이미지 첨부 -  함수

 

이미지를 첨부하는것도 XMLRPC 를 이용해서 업로드합니다. 여기서 중요한것은 이미지를 업로드 한후 그 이미지의 url  과 id 를 결과값으로 받아오는게 포인트 입니다.

 

소스코드는 아래와 같습니다.

 

import os
from wordpress_xmlrpc import Client, WordPressPost
from wordpress_xmlrpc.methods.users import GetUserInfo
from wordpress_xmlrpc.methods.posts import GetPosts, NewPost
from wordpress_xmlrpc.methods import media

class WordPressAuto:

    def __init__(self):

        self.id="autobot"
        self.password="PxxxxxxnW0HjMXCLy8cq****"   
        self.url="https://xxx.com/xmlrpc.php" 
        self.which="draft"
        self.wp = Client(self.url, self.id, self.password)

    def wp_auto_post(self,title,content,attachment_id,category:list):
        post = WordPressPost()      
        post.post_status = self.which
        post.title = title        
        post.content = content
        post.thumbnail = attachment_id
        post.terms_names = {
        "category": category
        }
        self.wp.call(NewPost(post))

    def wp_upload_image(self,in_image_file_name, out_image_file_name):   
        if os.path.exists(in_image_file_name):
            with open(in_image_file_name, 'rb') as f:
                binary = f.read()
            data = {
                "name": out_image_file_name,
                "type": 'image/png',
                "overwrite": True,
                "bits": binary
            }
            response = self.wp.call(media.UploadFile(data))
            media_id = response['id']
            media_url = response['url']            
            print(in_image_file_name.split('/')
                [-1], 'Upload Success : id=%s' % media_id)
            return {"image_id": media_id, "image_url":  media_url}
        else:
            print(in_image_file_name.split('/')[-1], 'NO IMAGE')

 

 

위 소스에서 수정할 부분 알려드립니다.

 

self.id="autobot"
self.password="PxxxxxxnW0HjMXCLy8cq****"   
self.url="https://xxx.com/xmlrpc.php" 
self.which="draft"

 

1) 워드프레스 아이디

2) 워드프레스 비밀번호

3) 자신의 워드프레스 사이트 주소 ( https://xxx.com ) 이부분만 수정하세요

4) 즉시발행하실거면 publish 입력하시고 임시저장 할려면 draft 입력하세요.

 

 

여기까지 파이썬 XMLRPC 를 이용한 이미지 첨부 함수 부분 이였습니다. 

 

 

 

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

 

 

 

 

2. 파이썬 XMLRPC 를 이용한 이미지 첨부 - 예시

 

 

 

 

실제로 이미지를 업로드하고 자동포스팅 하는 방법을 예제로 알려드릴께요.

일단 위에 소개한 함수부분을 먼저 입력한후 아래 소스를 입력하시면 됩니다.

 

wp_auto=WordPressAuto()

title="제목입니다."
category=['카테고리']
file='test.png'
adress=f'''d:/{file}'''
result = wp_auto.wp_upload_image(adress, file)
img_id=result["image_id"]
img_url=result["image_url"]
html=f''' <p>본문내용을 html로 적으세요</p><br />
[caption id="attachment_{img_id}" align="aligncenter" width="500"]
<img class="size-full wp-image-{img_id}" src="{img_url}" alt="{title}" width="500" height="500"> 
{title}[/caption]
<p>&nbsp;</p><br />

'''

wp_auto.wp_auto_post(title=title,content=html,attachment_id=img_id,category=category)

 

수정해야 할부분 설명해드릴께요

 

title="제목입니다."
category=['카테고리']
file='test.png'
adress=f'''d:/{file}'''

 

1) 포스팅 제목을 입력하세요.

2) 카테고리 이름을 입력하세요.

3) 업로드할 이미지 파일 이름을 입력하세요. 

4) 업로드할 이미지의 전체 경로를 지정해주세요.

 

 


result = wp_auto.wp_upload_image(adress, file)
img_id=result["image_id"]
img_url=result["image_url"]

 

위 명령어로 인해 이미지 파일의  아이디이미지 파일의 url 이렇게 두가지를 변수로 받았습니다. 이 두가지 변수를 어떻게 활용하는지 아래를 보세요.

 


html=f''' <p>본문내용을 html로 적으세요</p><br />
[caption id="attachment_{img_id}" align="aligncenter" width="500"]
<img class="size-full wp-image-{img_id}" src="{img_url}" alt="{title}" width="500" height="500"> 
{title}[/caption]
<p>&nbsp;</p><br />

'''

 

업로드한 이미지의 아이디와  이미지 주소를 변수로 받아서 그 변수를 활용해서 위와같은 소스를 만든다음 본문내용에 적당한곳에 위치시키면 됩니다.

 

위 소스중에 이미지와 관련된 html 은

 

[caption id="attachment_{img_id}" align="aligncenter" width="500"]
<img class="size-full wp-image-{img_id}" src="{img_url}" alt="{title}" width="500" height="500"> 
{title}[/caption]

 

이 부분입니다.

 


wp_auto.wp_auto_post(title=title,content=html,attachment_id=img_id,category=category)

 

위 소스는 최종적으로 글을 발행하는 핵심 명령어 입니다.  attachment_id=img_id 이 부분은 금방 올린 이미지를 특성이미지로 지정한다는 의미입니다. 티스토리로 치면 썸네일 대표이미지로 설정하는것과 같습니다.

 

저는 자동으로 워드프레스에 포스팅하는것 까지는 알고 있었는데 이미지 첨부도 할수있을까? 왜 이미지 첨부하는 내용은 잘 찾기가 힘들까 궁금했습니다. 하지만 조금만 더 자세히 구글에서 검색해보니 관련 내용이 있었습니다. 저도 공부할겸 내용도 정리할겸 이렇게 포스팅 해보았습니다. 실제로 제 워드프레스에서 이미지 첨부 성공했음을 알려드립니다. 여러분들도 한번 도전해보세요~

 

 

임시글로 성공한 인증샷 입니다.

 

 

첨부한 이미지 세부정보도 확인해보니 대체텍스트와 캡션 그리고  이미지 크기 까지 제대로 적용된것을 확인할수가 있었습니다.

 

 

다음에는  REST API 를 이용해서 파이썬으로 워드프레스 자동포스팅 방법에 대해 포스팅 하도록 해보겠습니다.    다음편도 기대해주세요~

 

 

 

이렇게 해서 XMLRPC 를 이용해서 워드프레스 자동포스팅하는 방법중에서도 이미지를 첨부하는 방법에 대해 알아보았습니다.   다음에는 더욱 유용한 정보로 찾아올것을 약속드리며 이번 포스팅은 여기까지 하도록 하겠습니다. 오늘도 행복한 하루 되세요~ ^^

 

 

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

 

 

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

 

 

 

댓글