ReadabilityからKindleへの送信を自動化するKindability
2012/11/27
価値ある情報をユーザー視点で発信するブログ
2012/11/27
もくじ
オラKinle Paperwhite大好き、ひとりぶろぐのmoyashi (@hitoriblog) だ。よろしくな!
先日Tweetbotから「後で読む」したものをKindleに送る方法を紹介しました。
ひとりぶろぐ » Tweetbotで「後で読む」したものをKindle Paperwhiteで読む方法
この方法の欠点は、Readabilityに一度登録した後、手動で一つずつKindleに送信する必要があることです。
そこの自動化を考えてみました。
「Send to Kindle」機能はReadabilityがAPIを公開しておらず、正式にはプログラマブルな利用ができません。
それをむりくりやってしまうRack / Sinatraアプリreadability-kindleをgithubで発見したことを前回のエントリで紹介しました。
readability-kindleはSinatraアプリですから、WebサーバでSinatraを動かす必要があり、環境設定がちょっと面倒です。また、実際に動かしてみたところ、Readabilityの仕様変更で動かなくなっていました。
それを直しつつ、cronで定期的に実行。Readabilityの未読項目を調べて、未読があったら自動的にKindleに送る、という動作にしたかったことから、普通のrubyスクリプトに書き換えてみました。
このrubyスクリプトにはKindabilityという名前を付けてみました。大したことはやっていません。
今回のエントリは、申し訳ないですが、サーバの管理がある程度できる人向けのものです。(続きは[Read More]から)
Kindabilityは、ReadabilityのReading Listの項目をすべてKindleのパーソナル・ドキュメントに送り、送り終わった項目をArchiveに移動するというものです。
ArchiveにあるものはKindleに送りません。
これを、例えば5分に1回実行するようにすると、Readabilityに項目を送信後、最大5分後にはKindleへの送信が完了することになります。1日に288回Readabilityにアクセスすることになるので、やや迷惑かもしれませんが。
以下からアーカイブをダウンロードし、解凍後、rubyが動くサーバにコピー。
常時起動の状態にあるならば、(Mac) OS XでもOKです。ruby 1.8でも1.9でも動きます。
config.jsonを自分用に書き換えます。
{
"readability": {
"username": "YOUR_USERNAME",
"password": "YOUR_PASSWORD"
},
"kindle": {
"email_address": "YOUR@EMAIL.ADDRESS"
}
}
config.jsonにパスワードを生で書いているので、公開ディレクトリに置かないことをおすすめします。
config.jsonは、kindability.rbと同じディレクトリに置いておきます。
gemコマンドでmechanizeをインストール。ネイティブエクステンションを含むため、インストールの完遂のためにはMac OS Xの場合はXcode command line toolsのインストールが必要かもしれません。
sudo gem install mechanize
kindability.rbに実行権を付けておきます。
cd kindability-0.1
chmod +x kindability.rb
前回のエントリでやったAmazon.co.jp側、Readability側の設定は済ませていることが前提条件です。
ひとりぶろぐ » Tweetbotで「後で読む」したものをKindle Paperwhiteで読む方法
「アカウントサービス>My Kindle>パーソナル・ドキュメント設定>パーソナル・ドキュメントの保存」は「有効にできません」(訳語がおかしく、本来は「無効」だと思うのだけど)にしておくことをおすすめします。
Readabilityから送ったページをまとめて削除する方法が無さそうなためです。(運用自体の変更にもつながることから、だれにでも選択できることではないかもしれませんが)
「有効にできません」にしておくと、パーソナル・ドキュメントの後片付けをする必要が無くなります。
Kindabilityが動くかどうかテストします。ReadabilityのReading Listに項目を登録しておいてください。
./kindability.rb
3 article(s) processed.
こんな感じでメッセージが出ればOKです(項目が三つあった場合)。
ReadabilityのWebで確認すると、Reading Listにあった項目がArchiveされていると思います。
Archiveすることを未読フラグ代わり使っているので、使用目的に合わなかったらごめんなさい。
Kindleに送信してから、パーソナル・ドキュメントに登録され、それがKindle側で同期できるようになるまでは少し時間がかかります(Amazon.co.jp側の都合)。
Kindabilityをcronに登録し、一定の時間間隔を置いて定期的に実行されるようにします。
crontab -e
viが起動するので、以下の行を追加して保存終了。
*/5 * * * * /home/your_path/kindability.rb
上記は実行を5分間隔として、kindability.rbとconfig.jsonは/home/your_path/に置いた場合の例です。
各自の環境に合わせて変更する必要があります。
あまり高頻度なアクセスはRedabilityへの迷惑になりますので、節度を持った利用をお願いします。
5分に1回もどうかっていう話がありますが。
設定が済むと、以下のようなフローで利用できるようになります。
タイムラグがあるのと、Kindleでダウンロードするためには、Kindle Paperwhite 3GであってもWi-Fi環境下で同期を実行する必要があるといった制約(Kindle Paperwhite 3Gに元々ある制約)がありますが、手順としてはかなりシンプルになりました。
ブラウザ、RSSリーダ、TwitterからReadabilityにバシバシ送信、会社から帰りぎわ、あるいは出勤前に同期、っていう使い方はどうでしょうか。