반응형
python 구글 블로거 블로그 스팟 이미지 업로드 및 자동 포스팅
구글 블로거 블로그 스팟 API 인증
먼저 아래와 같이 BlogID를 넣고 구글 블로거 API 인증을 해준다. 이걸 할 때는 pickle 같은 인증으로, 만일 해당 내용이 없다면 json 파일 내에 Auth 2.0 인증 키를 가져 오도록 설정되어 있다. 구글 드라이브도 있어야 한다고는 하지만, 이미지 업로드와 텍스트만 삽입할 거기 때문에 굳이 넣진 않았다. 이에 아래와 같이 구글 클라우드 쪽에 만들어 놓고 인증키만 받으면은 진행 끝. 최초 로그인 인증 이후부터는 계속 인증할 필요는 없는 셈이다.
# 구글 블로거 API 인증 (2번 해야됨)
import sys
import os
import pickle
from oauth2client import client
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
#hongdaearea.blogspot.com
BLOG_ID = "7084355431426392649" # hongdaearea.blogspot.com 잡부정보
#SCOPES = ['https://www.googleapis.com/auth/blogger', 'https://www.googleapis.com/auth/drive.file']
SCOPES = ['https://www.googleapis.com/auth/blogger']
def get_blogger_service_obj():
creds = None
if os.path.exists('auto_token.pickle'):
with open('auto_token.pickle', 'rb') as token:
creds = pickle.load(token)
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file(
'C:/Users/user/blogger/client_secret.json', SCOPES)
creds = flow.run_local_server(port=0)
# Save the credentials for the next run
with open('auto_token.pickle', 'wb') as token:
pickle.dump(creds, token)
blog_service = build('blogger', 'v3', credentials=creds)
drive_service = build('drive', 'v3', credentials=creds)
return drive_service,blog_service
drive_handler, blog_handler = get_blogger_service_obj()
구글 블로거 블로그 스팟 이미지 업로드 자동 포스팅
이미지 업로드로 호스팅을 하기 위해서 다른 곳의 이미지 호스팅을 썼다. 기본적으로 말하자면 블로그 스팟을 통해 이미지 업로드가 가능하냐라고 말한다면은 대답은 그렇다 이다. 블로그 스팟을 통해 이미지 업로드가 가능하며, 다만 HTML 형식을 통한 이미지로 업로드 해야 되는 번거로운 점이 있다. 이를 통한 파이썬 코딩을 통해 이미지와 메모장 등을 통해 업로드 하는 방식을 집어넣었으며, 이미지, 제목, 본문 등으로 구성하여 집어넣었다. 여기서 더 확장한다면은 제목 이외에 부제목와 같은 목차를 더더욱 구성을 하여 메모장 텍스트만 구비해서 진행된다면은 만사오케이지 않을까 싶다.
import os
import time
#이미지
img_urls = [ 'http://15.165.222.35/dd255u.jpg'
]
#메모장
txt_files = [ 'C:/Users/user/raw/down/health/105/105.txt'
]
#n = 0
for img_url,txt_file in zip(img_urls, txt_files) :
#path = 'C:/Users/user/raw/down/health/'+str(i)+'/'
#file_list = os.listdir(path)
#file_list_png = [file for file in file_list if file.endswith(".txt")]
file_list_png = [txt_file] #리스트화
for blog_content in file_list_png :
#txt_file_directory = str(path) + str(blog_content)
txt_file_directory = str(blog_content)
f = open(txt_file_directory, 'r', encoding='utf-8') #메모장 파일열기
content_list = f.readlines() #본문
blogger_title = content_list[0]
blogger_title_2 = blogger_title.replace("\ufeff", "")
content_list_2 = []
for i in content_list :
i = i.replace("\ufeff", "")
i_text = '<p>' + str(i) + '</p>' #html 넣자
content_list_2.append(i_text)
#이미지 삽입란
#img_url = img_url[n]
img_url = '"' + str(img_url) + '"'
content_list_3 = """
<div style="text-align: left;">
<div class="separator" style="clear: both; text-align: center;">
<p style="text-align: left;">
</p>
</div>
</div>
<div style="text-align: left;">
<div class="separator" style="clear: both; text-align: center;">
<a href="""+str(img_url)+""" imageanchor="1" style="margin-left: 1em; margin-right: 1em;">
<img border="0" data-original-height="640" data-original-width="720" height="284" src="""+str(img_url)+""" width="320"/>
</a>
</div>
<br/>
<pre style="background-color: white; border-radius: 0px; border: 0px; box-sizing: border-box; font-family: D2Coding; font-size: 12px; line-height: inherit; margin-bottom: 0px; margin-top: 0px; overflow-wrap: break-word; overflow: auto; padding: 1px 0px; vertical-align: baseline; white-space: pre-wrap; word-break: break-all;"><br/></pre>
</div>
"""
#제목
content_list_3 += """
</h1>
<h1 style="text-align: left;">
<b>
"""+blogger_title_2+"""
</b>
</h1>
"""
#본문
content_list_3 += str(content_list_2)
content_list_3 = content_list_3.replace("[", "")
content_list_3 = content_list_3.replace("\'", "")
content_list_3 = content_list_3.replace("\\n", "")
content_list_3 = content_list_3.replace(">,", ">")
content_list_3 = content_list_3.replace("\\u200b", "")
content_list_3 = content_list_3.replace('\'', '')
content_list_3 = content_list_3.replace(']', '')
#print(content_list_3)
keyword = str(blogger_title)
data = {
'title': blogger_title_2, #제목
'content': content_list_3, #본문
'labels' : keyword, #해시태그
'blog': {
'id': BLOG_ID, # The identifier of the Blog that contains this Post.
},}
posts = blog_handler.posts()
res = posts.insert(blogId=BLOG_ID, body=data, isDraft=False, fetchImages=True).execute()
#res
f.close() #파일닫기
print(str(blogger_title_2)+ "의 포스팅 완료")
time.sleep(20) #20초
#n+=1
반응형
'Python' 카테고리의 다른 글
[python] 파이썬 패키지 설치 목록 및 requirements 다운 (0) | 2022.10.27 |
---|---|
[python] 한국어 KR 자연어 처리 텍스트 마이닝 내용 정리 (0) | 2022.10.18 |
[python] 무료 이미지 호스팅 URL 가져오기 (0) | 2022.10.17 |
[python] 구글 포토 API 이미지 업로드 자동화 해보기 (0) | 2022.10.15 |
[python] 파이썬 코딩 메모장 내 다른 메모장으로 옮기기 (0) | 2022.10.12 |
댓글