Blogger APIとは?
Blogger APIは、GoogleのBloggerプラットフォームでブログを作成・管理するためのRESTful APIです。これを使うことで、プログラムからブログの投稿や管理、コメントの操作などを行うことができます。
Outh Client IDの取得
OuthクライアントIDを取得する方法はいくつかありますが、Bloggerページから作成する方法と、GoogleCloudコンソールから作成する方法の2つを紹介します。
BloggerAPIページから取得する
以下のAPIキー取得ページを少しスクロールして、Outhクライアントキーを取得をクリックします。
すると、プロジェクト名を入力する画面になるので、プロジェクト名を適当につけて、NEXTへ進みます。
Prduct名をつけて進みます。
Web browserを選択して、CREATEをクリックします。
認証情報が表示されるので必ずメモしておいてください。
Google CloudコンソールからのAPIキー取得
Google Cloud Consoleにログインします。
プロジェクトを作成するか、既存のプロジェクトを選択します。
「APIとサービス」から「有効なAPIとサービス」を選択し、「APIとサービスを有効にする」をクリックします。
APIライブラリでBloggerAPIを検索します。
BloggerAPIを有効にします。
認証情報を作成をクリックします。
認証情報作成のための必要事項を入力します。
ユーザーデータを選択して、Outhクライアントを作成します。
あるいは、「APIとサービス」> 「認証情報」 > 「認証情報を作成」>「OuthクライアントID」からも作成可能です。
アプリケーションはウェブアプリケーションを選択して、作成します。
クライアントIDやシークレットが表示されるのでメモしておきます。
Pythonからの記事投稿
以下は、Blogger APIを使用して新しい投稿を作成するPythonスクリプトの解説記事です。このコードはOAuth 2.0認証を利用してBlogger APIにアクセスし、投稿を作成する方法を示しています。
スクリプトを実行する前に、以下の準備が必要です。
-
Google Cloud Platformでの設定:
– Google Cloud Consoleでプロジェクトを作成し、Blogger APIを有効にします。
– OAuth 2.0のクライアントIDとクライアントシークレットを取得し、blogger_client_id
とblogger_client_secret
に設定します。
– 認証情報を保存するcredentials.json
ファイルを作成します。 -
必要なライブラリのインストール:
–google-api-python-client
–oauth2client
–httplib2
これらは、以下のコマンドでインストールできます。
bash
pip install google-api-python-client oauth2client httplib2
以下のコードは、Blogger APIを使用して新しい投稿を作成するためのPythonスクリプトです。
import os
import httplib2
from googleapiclient.discovery import build
from oauth2client import file, client, tools
blogger_client_id = os.environ['blogger_client_id']
blogger_client_secret = os.environ['blogger_client_secret']
credential_path = 'credentials.json' # 認証情報を保存するファイルパス
def blogger_post(blog_id, title, content, labels, isDraft=True):
if content is None:
print('コンテンツがないため作成できません')
return None
# OAuth 2.0の認証フローを設定
flow = client.OAuth2WebServerFlow(blogger_client_id, blogger_client_secret, 'https://www.googleapis.com/auth/blogger', redirect_uri='urn:ietf:wg:oauth:2.0:oob')
storage = file.Storage(credential_path)
credentials = storage.get()
if credentials is None or credentials.invalid:
credentials = tools.run_flow(flow, storage)
# 認証情報を使用してBlogger APIを初期化
http = credentials.authorize(httplib2.Http())
service = build('blogger', 'v3', http=http)
# 新しい投稿を作成するためのデータ
post_data = {
"kind": "blogger#post",
"blog": {
"id": blog_id
},
"title": title,
"content": content,
"labels": labels,
}
# 投稿を作成
try:
if isDraft:
new_post = service.posts().insert(blogId=blog_id, body=post_data, isDraft=True).execute()
print("新しい下書きが作成されました。投稿のID:", new_post['url'])
else:
new_post = service.posts().insert(blogId=blog_id, body=post_data).execute()
print("新しい投稿が作成されました。投稿のID:", new_post['url'])
return True
except Exception as e:
print("投稿の作成中にエラーが発生しました:", str(e))
return False
blogger_client_id
,blogger_client_secret
は先ほど取得したIDに書き換えるなどしてください。
コードの解説
-
OAuth 2.0認証フローの設定:
client.OAuth2WebServerFlow
を使用してOAuth 2.0の認証フローを設定します。ここでは、クライアントID、クライアントシークレット、およびスコープ(https://www.googleapis.com/auth/blogger
)を指定します。 -
認証情報の取得:
file.Storage
を使って認証情報を取得し、必要に応じて新しく認証フローを実行します。 -
Blogger APIの初期化:
認証情報を使って、Blogger APIのサービスオブジェクトを作成します。 -
投稿データの準備:
投稿データを辞書形式で準備し、post_data
として定義します。 -
投稿の作成:
service.posts().insert
メソッドを使って新しい投稿を作成します。isDraft
フラグによって、投稿を下書きとして保存するか公開するかを選べます。
これらを実行することで、BloggerにPythonから記事を自動で投稿することが可能になります。
参考:APIキーの取得
公開された記事を取得するだけの場合は、こちらのAPIキーでも可能です。
APIの使い方ページにあるAPIキーの取得部分のキー管理をクリックします。
キーの発行をクリックすると以下のような画面になります。
プロジェクト名をつけて、キーを発行します。
SHOW KEYをクリックして、APIキーを確認し、メモしておきます。