はてなブログにはAtomPubというAPIを公開しているのでプログラムで簡単に記事を投稿することができますが、メールで記事を投稿することもできます。
はてなブログヘルプの参考記事
今回は記事のメール投稿をPythonによって実現したいと思います。送信用のメールアドレスにはGmailを使うので各自で取得しておいてください。2段階認証をしているアカウントでは使えなかったので私は送信用のメールアドレスを改めて作りました。投稿用(送信先メールアドレス)は、はてなブログの記事の管理画面 → 設定 → 詳細設定 から下にスクロールすると個々に割り当てられたメールアドレスがあります。下書き用と投稿用があるのでお好きな方を使ってください。
使い方&コード
以下の記事はからあげ (id:karaage)さんという方の記事です。こちらの記事で着想を得ました〜ありがとうございます。
使うモジュールは 「gmail」というモジュールのみです。pipでインストールしてください。
pip3 install gmail
次に下記プログラムをそのままコピーし、保存。送信用メールアドレス(Gmail)を「username」に。送信用メールアドレスのパスワードを「password」に。投稿用メールアドレスを「snedmail」に。自分のものにそれぞれ書き換えて下さい。
#mailpost-hatena.py import gmail def mail(head,sentence): username = '[email protected]' password = 'password' sendmail = '[email protected]' client = gmail.GMail(username,password) message = gmail.Message(head,text=sentence,to=sendname) client.send(message) client.close() with open('hoge.txt','r') as r: h = r.readline().replace('\n','') s = r.read().replace(h,'') r.close() mail(h,s)
次に投稿するための記事ファイルを用意します。今回は「hoge.txt」(任意のファイル名)ファイルを用意しました。これを「mailpost-hatena.py」と同じディレクトリーに保存してください。
[Python]こんにち! ちくわ!
記述方法は一行目がタイトルでそれ以降が本文となっています。タイトルの前に大括弧 [ ] をつけて文字を入れると、カテゴリーになります。(タイトルの後ろでは反映されない)
投稿してみる
以上の行程が完了したら、実際に動かしてみましょう。
python3 postmail-hatena.py
テスト用に作成したブログに投稿してみました。
Raspberry Pi等で、定期投稿してみるのもいいかもしれません。例として、AmazonのKindleの日替わりセールのページをスクレイピングして定期投稿してみました。需要があるかどうか分かりませんが、AmazonのトラッキングIDを登録すればはてブ側が自動的にアフィリエイトリンクを生成してくれるので、ちょっとおもしろいことができるかもしれません。これに関しては後日記事にします。
〆
メールに画像を添付して送信すると、記事にも添付画像がアップロードされます。PythonのGmailモジュールもMessageオブジェクトにデフォルト引数としてattachments=['img.jpg']を指定すると、画像を添付して送信できますが、なぜだか記事にはアップロードされませんでした。手動ではできるんですけどね。。。原因が分かる人がいたら教えてください!