Pythonを使ってBloggerに記事を投稿する

2020年5月4日  2020年10月3日 
Pythonを使ってBloggerに記事を投稿する方法を調べました。

まずはOAuth 2.0のユーザー認証の事前準備を行います。

基本な流れは下記の通りです。

1.Google API Consoleでプロジェクトを作成します。
Google API Console

2.下記のサイトを参考に、「Blogger API v3」を有効にします。
Enable APIs for your project

3.下記のサイトを参考に、Credentialsを作成します。
Create authorization credentials

4.作成したCredentialsの「client_secrets.json」をダウンロードします。

これで事前準備完了です。


次は実行環境に必要なライブラリを下記のコマンドでインストールします。
pip install --upgrade google-api-python-client
pip install --upgrade oauth2client

依存関係の問題を排除するために仮想環境を利用した方が良いと思います。
仮想環境は下記の記事を参考に作成します。
Pythonの仮想環境を作成する

これでようやく実装する準備が整いました。
あとは実装するだけです。

Bloggerに投稿するコードは下記の通りです。
作成した「client_secrets.json」はコードファイルと同じフォルダに保存します。

import os

from googleapiclient import discovery
from googleapiclient.http import build_http
from oauth2client import client, file, tools

scope='https://www.googleapis.com/auth/blogger'
blog_id = '自分のブログID'

client_secrets = os.path.join(os.path.dirname(__file__), 'client_secrets.json')

flow = client.flow_from_clientsecrets(
    client_secrets,
    scope=scope,
    message=tools.message_if_missing(client_secrets)
)

storage = file.Storage('blogger.dat')
credentials = storage.get()
if credentials is None or credentials.invalid:
    credentials = tools.run_flow(flow, storage, flags)

http = credentials.authorize(http=build_http())
service = discovery.build('blogger', 'v3', http=http)

body_json = {
    "kind" : "blogger#post",
    "blog" : {
        "id" : blog_id
    },
    "title" : "記事のタイトル",
    "content" : "記事の本文",
    "labels" : ["ラベル1", "ラベル2"]
}
posts = service.posts()
request = posts.insert(blogId=blog_id, body=body_json, isDraft=True)
request.execute()

これでようやくPythonを使ってBloggerに投稿することができました。
けっこう時間かかったー。
次はTwitter APIあたりをいじってみようと思います。

環境

Windows 10 Pro
Python 3.8.2

参考サイト

Blogger API: Getting Started
Blogger API v3

ー記事をシェアするー
B!
タグ

コメント

このブログを検索

自己紹介

自分の写真
yayao
Unityを使って、モバイルゲームを作っています。
人気の投稿