概要
前回 OAuth2.0 を実装しました
今回は認証後に記事を投稿する部分を実装します
環境
- macOS 15.5
- Python 3.12.11
- google-api-python-client 2.174.0
Python スクリプト
blog_id の部分は適宜変更してください
-
vim app.py
import os
from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build
# スコープ(Blogger のフルアクセス)
SCOPES = ["https://www.googleapis.com/auth/blogger"]
if os.path.exists("token.json"):
creds = Credentials.from_authorized_user_file("token.json", SCOPES)
else:
flow = InstalledAppFlow.from_client_secrets_file("client_secrets.json", SCOPES)
creds = flow.run_local_server(port=8080, access_type="offline")
with open("token.json", "w") as token:
token.write(creds.to_json())
# 以降のコードで自動リフレッシュ対応済み
service = build("blogger", "v3", credentials=creds)
# 対象のブログID
blog_id = "1234567890"
# ブログの一覧を取得したい場合は以下のコードを使用
# 対象ブログの取得(複数ある場合はリストされる)
# blogs = service.blogs().listByUser(userId='self').execute()
# for blog in blogs['items']:
# print(f"Blog ID: {blog['id']}, Title: {blog['name']}")
#
# blog_id = blogs['items'][0]['id'] # 1つ目のブログを使う
body = {
"kind": "blogger#post",
"title": "テスト投稿",
"content": "<p>これは Python からの Blogger API を使ったテスト投稿です。</p>",
}
# 投稿の実行
result = service.posts().insert(blogId=blog_id, body=body).execute()
print(f"Post published: {result['url']}")
動作確認
-
pipenv run python app.py
で記事を投稿し問題なく記事があることを確認しましょう
記事の URL などを変更したい場合は post では行えず put する必要があります
最後に
Blogger API v3 を使って記事を投稿する方法を紹介しました
Blogger API v3 では投稿した記事の URL 部分 (permalink) を変更することはできないようです
permalink の変更は GUI からのみ行えます
0 件のコメント:
コメントを投稿