THUMBS SHIFT→

このブログは主に親指シフトを用いて書かれています

pythonではてなAPIを使って記事を投稿する

色々認証方式があるけど一番簡単なBASIC認証でやる

template = """<?xml version="1.0" encoding="utf-8"?>
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app">
<title>{title}</title>
<author><name>name</name></author>
<content type="text/plain">{body}</content>
 <updated>{date}</updated>
 <app:control>
     <app:draft>no</app:draft>
 </app:control>
 </entry>
"""
# ここでインデントするとprintで出力したときにおかしくなる。
# templateの{title}, {body}, {date}にそれぞれ値を入れる。
# nameは変えたりして試してみたけど特に違いがわからなかったのでそのままにしてる。
# dateの書式はdatetime.datetime.strftime('%Y-%m-%dT%H:%M:%S')でいける

uri = 'https://blog.hatena.ne.jp/{hatena_id}/{blog_id}/atom/entry'

# このブログで言うとhatena_id = 'arark', blog_id = 'arark.hatenadiary.jp' (ドメイン名)

api_key = '<api_key>'  # 設定に書いてある

import requests
from requests.auth import HTTPBasicAuth

res = requests.post(uri, auth=HTTPBasicAuth(hatena_id, api_key), data=template)

これでOK

uri変えたりすれば他のAPIでも使えると思う