N時間かかりました。
最終的にできたもの
なんかもうOAuthとか何もわからないよ… の気持ちになってこれができました。
import urllib.parse
import requests
from requests_oauthlib import OAuth1
# build parameters to post
consumer_key = "Authきぃ"
consumer_secret = "Authしいくれっと"
token_key = "APIきぃ"
token_secret = "APIしいくれっと"
message = """<?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>
<content type="text/x-markdown">## ひみいりに
**ぽ!!!!!!!!111**
無事投稿できましたかな?やりましたかな?
</content>
<updated>2020-01-12T00:00:00</updated>
<category/>
<app:control>
<app:draft>yes</app:draft>
</app:control>
</entry>
"""
message = message.encode()
post_url = "https://blog.hatena.ne.jp/MireiMixin/namonakimichi.hatenablog.com/atom/entry"
auth = OAuth1(
consumer_key,
consumer_secret,
token_key,
token_secret,
)
headers = {'Content-Type': 'application/xml; utf-8'}
print(requests.post(post_url, headers=headers, auth=auth, data=message).text)
最終的にやったこと
- Pythonでrequestsとrequests_oauthlibを使ってTwitterのAPIを叩く · PengNote - 勉強した事や行った場所の感想を書くブログ
pip install requests requests-oauthlibした
- python - How can I send an xml body using requests library? - Stack Overflow
- XMLはもう直接dataに入れればよかったらしい
みたところ
- はてなブログAtomPub - Hatena Developer Center
- Consumer key を取得して OAuth 開発をはじめよう - Hatena Developer Center
- 最初Auth用のキーとCustomerキーの違いがいまいちわかってなかった
- Python OAuth認証でCacoo API にアクセスする - アジャイルSEを目指すブログ
- なんかうまく行かなかったが、自分で作ると雰囲気こんな感じな気がする
- はてなブログAtomPub APIをOAuth認証経由で叩く - すぎゃーんメモ
- 雰囲気掴むのに結構役立った
- Oauth1.0aではてなブログAPIにアクセスする | Go言語 入門 / 解説 | nasust dev blog
- ここ見ながらやっていたがどうもPOSTには成功しなかった。XML Parse Errorが出続けていたので、なにかしろ投げ方が悪かった可能性が高い
- GolangでcliからTweetするツールを作った - Qiita
- 【Go】TwitterAppでツイートするプログラムを作った | 原油ごくごく
- この辺見ながらやってたけど気力切れ
- Pythonの標準ライブラリのみでツイートしてみた - Qiita
- Pythonでやるならこんな感じっぽい
反省
- どうもGoの理解が薄めだがGoで頑張りすぎた
- OAuth1.0あたりを本当に理解してなかった感
- 結局ドキュメント読むのがやや辛かった
- Pythonにして1時間以内に動くところまで行ったので、やっぱり言語的にわからないもの+仕組み的にわからないものを同時学習するコスト高いなと思った
まとめ
しんどいので今日はねます。三連休はコーディングがはかどって本当にいいと思う。