본문 바로가기

파이썬

파이썬! 시작부터 힘들다면? 차근 차근 따라가는 튜토리얼 - 5. 파이썬을 이용해서 Blogger 에 글을 올려보자!

 

 

녕하세요, 오늘은 구글 버전의 블로그인 Blogger에 파이썬 코드로 포스팅 하는 것을 알려드릴게요.

오늘은 과정이 조금 복잡할 수 있으니 천천히 잘 따라오시길 바랄게요.

 

파이썬으로 포스팅을 하려면 구글의 승인을 받아 API 키와 인증정보를 가져와야 해요.

 

 

사용자 인증정보를 발급 받는 순서

 

순서부터 알려드리고 이미지로 보기 쉽게 정리해볼게요.

 

1. 구글 클라우드 대시보드에 접속을 합니다.

2. 프로젝트를 생성합니다.

3. Blogger API 사용을 설정합니다.

4. 개인 정보를 입력해서 OAuth 2.0 토큰을 가져옵니다.

 

이미지 가이드

 

 

이제 이미지를 보면서 따라오세요.

https://console.cloud.google.com/apis/dashboard  로 이동

 

 

 

대표사진 삭제

사진 설명을 입력하세요.

 

 

파이썬 코드로 블로거에 글 등록

여기까지 하셨으면 거의 다한거에요.

 

자 그럼, 터미널을 열어서 관련 모듈을 설치해봅시다.

 

pip install google-api-python-client

 

명령어로 google-api-python-client 모듈을 설치하시구요,

pip install google-api-python-client
 

위에 과정중에 14번을 통해 받은 json 파일을 경로에 가져다 줍니다.

데이터 중에 블로그 id는 관리자 페이지 URL에 있는 숫자입니다.

https://www.blogger.com/blog/posts/{요기!!}

 
import pickle
from pathlib import Path
from googleapiclient import discovery
from google.auth.transport.requests import Request
from google_auth_oauthlib.flow import InstalledAppFlow


CLIENT_SECRET = 'credentials.json' #OAuth 인증 json 파일
SCOPES = ['https://www.googleapis.com/auth/blogger'] #블로거 OAuth Scope


def get_blogger_service_obj():
creds = None
if Path("auto_token.pickle").exists(): #토큰 파일이 있으면 생성해서
 with open('auto_token.pickle', 'rb') as token: #토큰 값을 읽어서 credit에 저장
 creds = pickle.load(token)
if not creds or not creds.valid: #credit이 존재하지 않거나 유효하지 않을 때
 if creds and creds.expired and creds.refresh_token: #만료 됐거나 하면 새로요청함.
  creds.refresh(Request())
 else: #이도 저도 아니고 다 없으면
#토큰값과 scope를 가지고 서버에 접속해서 credit을 생성
flow = InstalledAppFlow.from_client_secrets_file(CLIENT_SECRET, SCOPES)
creds = flow.run_local_server(port=0)
with open('auto_token.pickle', 'wb') as token: #인증한 결과를 토큰파일로 저장.
pickle.dump(creds, token)
return discovery.build('blogger', 'v3', credentials=creds) #블로거와 연결


#블로그 글 포스팅
def blog_posting(blog_id, title, content, hashtags, draft=False):
blogger_service = get_blogger_service_obj() #블로거와 연결후에
posts = blogger_service.posts() #포스트할 객체를 불러옴
data = { #데이터는
'title': title, #글 제목
'content': content, #글 내용
'labels': hashtags, #해시태그
'blog': { #블로그 id
'id': blog_id
 }
}


response = posts.insert(blogId=blog_id, #데이터를 담아서
body=data, #포스트를 요청
isDraft=draft, #draft True는 임시저장
fetchImages=True).execute() #False는 바로저장


print("printing the page id:", response['id'])
return response['id'] #포스팅 성공시 글 id 넘어옴
 

 

파이썬으로 블로거 자동 포스팅 결과

 

 

보시다시피 잘 등록됐습니다!

이미지 썸네일도 잘 들어갔고 텍스트도 문제 없이 전송됐네요.

 

챗 GPT를 괴롭혀가며 한참을 개발에 매진해서 원클릭으로 글을 등록하는 파이썬 프로그램을 만들었는데

손 볼 곳도 많고 가끔씩 문제도 있지만 뿌듯하네요..

궁금해 하실지는 모르겠지만 그 과정도 조금씩 올려볼까 합니다.

 

오늘도 봐주셔서 감사합니다~

 

 

반응형