http://gy.hageatama.org/tagged/Kindle
こんな感じで、Tumblrへと自分のKindle読書メモを晒したかったので
- 定期スクレイピングは維持・管理コストが馬鹿にならない
- スクレイピング先の変更対応がだるい
- 他の人にもやっていただきたい
という現実を踏まえて、既存サービスの組み合わせによるノンプログラミングでやってみました。
全世界で30人ぐらいが興味持たれそうな内容ですが、25人はメンドクセと諦めそうな冗長手順になってしまいました。これでもエレガントに出来た方なんやで……
Kimono is God
現在ベータ中の『Kimono』というWEBスクレイピングサービスが神すぎました。今日、この記事書いているのも『Kimono』があったからです。
- Chrome拡張により抽出したい要素の指定がマウス操作により超簡単
- RSS、JSON、CSSと加工しやすい形で吐いてくれる
- スクレイピング頻度を最短15分から細かく決められる
- 有料サービスながら、無料枠でも全然困らない
- 認証も越えられる
と至れり尽くせりです。私的なWEBスクレイピングの8割はこれで解決するのでは?
シェア部分のスクレイピング
Kindle側からSNSへとシェアした最新の文章は http://kindle.amazon.co.jp/ のユーザープロフィールページにて公開されているので、それを取りに行きます。
しかしながら、これだと最新5件しか取れずに取りこぼしがあり得るため、?offset=1を付けて一工夫。こちらだと最新2~11件の表示になって最新1件目の反映が遅れますが、10件分取得できるので取りこぼしにくくなります。
例 : https://kindle.amazon.co.jp/profile/hageatama/15189316?offset=1
設定やKimonoの使い方についてはFlickrにキャプったので、この文章の意味が分かる方ならどうにかできるでしょう。わからない人はちょっと厳しいと思われます。
注意点としては、RSSに合わせてpropaty名をtitleやdescriptionにしないとRSS化がされません。上のメニューバーで出力例をチェックできるので逐次確認してください。
RSS出力例:https://www.kimonolabs.com/api/rss/a7bmp1zy?apikey=PD8HFHzDgtGBvfEd7q5NgFhoBBNZlk3j
Highlightのスクレイピングは……
Kindleは明確にシェアした分を公開、ハイライトした分は非公開という棲み分けをしているようで、ハイライトのRSS化は諦めました。
個人的な理想としてはいちいちシェアしなくてもハイライトを読みにいってくれた方がいいんですが、現状はいろいろと壁ががががが。
Kimonoは認証も越えられるので、Advanced設定の手動でCSSセレクタを”form > div > div > div > span > input#signInSubmit”指定して中身は吸えたのですが、ブラウザ側だときちんとスクレイピングできてる設定なのに最後の保存で蹴られます。
予想としては、Kimonoサーバー側のスクレイピングだと画面スクロールによる自動ロードjsが暴発して、ハイライトのログを最後まで読みに行ってタイムアウトしている気がします。併せてハイライトページは1冊単位で引用文が並んでいるため、構造的にも取りづらくて断念。どうにかやれる人、誰か頼みます。
Yahoo! Pipesで微修正
次にIFTTTでRSSをQuoteにて投げるのですが、普通にやるとtitleへは書籍単位のWEBページという同じlinkが貼られるため、1冊で複数の文章を投げても、1文章しか反映してくれません。そこで、ちょっとYahoo! Pipesで修正したRSSを吐かせました。 (上の例はかなり冗長です)
Kimonoでtitleとは別に「share」に埋め込まれた引用単位の個別ページリンクを取得→Kimonoで吐いたCSVからCreate RSSしてます。
ついでに題名についた「(Japanese Edition)」を消したりも。 この辺は好みの問題ですし、IFTTT以外だと不必要かもしれません。
出力例:https://pipes.yahoo.com/pipes/pipe.run?_id=b2ae94998b3640825173e04aeda42b80&_render=rss
Tumblrへの投稿
https://ifttt.com/recipes/256438-kindle-shares-to-tumblr
IFTTTでRSSをQuoteにて投げてます。
おわりに
わからない人には訳が分からないし、わかる人なら「自分でコード書いたが早くね?」みたいな内容になってしまいましたが、一週間以上安定稼働しているので満足です。
実際どっかから引っ張ってくればコード書かなくても自前設置出来そうじゃね?と思ったりもしたんですが、TumlbrがAPI v2のみにになっててGitHubのコードが結構死滅していたり、ちゃんとQuoteでTumblrに投げてくれるサービスが限られていたりと、いろいろあったんや……
Kindleの引用部分をRSSで取れるようになったので、もっと活用の方向性もいろいろと考えたいところです。
結局不満が残ったので、気が向いたらHerokuにハイライト取れるスクリプト書いて設置する未来がありえそうですね。