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時間以内に動くところまで行ったので、やっぱり言語的にわからないもの+仕組み的にわからないものを同時学習するコスト高いなと思った
まとめ
しんどいので今日はねます。三連休はコーディングがはかどって本当にいいと思う。