curl
gas
読書
Kindle

Kindle書籍すべてをブクログで管理する

ブクログは非常に良いサービスなのですが、Kindle書籍の登録に難があります。ブックマークレットがあったり、ブクログ側で、書籍を探して登録すれば登録されます。

しかし求めているのはそういうことじゃないのです。

購入したら、抜け漏れなく自動で登録されてほしいし、過去に購入した書籍も全部登録したい。ひとつも例外なく。すべてです。


今後の購入分

Kindleの購入メールを、HTML形式でメールを送ってもらうように設定します。


  • HTML形式なら、Kindle書籍へのURLを含んでいて、URLからASINを切り出すことができるためです。テキスト形式だと、注文履歴へのURLまでで、ASINを切り出せません。

  • 設定は、Kindle購入メールの下端に「 HTML形式でのEメール配信をご希望の場合は、以下のURLから設定を変更してください」というのがあるので、リンク踏んで設定。

以下記事を参考にGASを設置して、定期実行させます。

使うにあたって以下の調整しました。


  • カテゴリなしにする

  • ログはスプレッドシートに残らなくてよい

  • トリガーは、1時間毎に実行とした

元記事は2016年で、ちゃんと動くのか不安だったものの、1冊購入、複数冊購入の両方が期待通り動作しました。すばらしい。


過去の購入分

問題は過去分。GASでメールからブクログに登録する流れはセットアップしたので、ちまちまと過去メールをinboxに移して、GAS実行して、というのを全部繰り返すのでも不可能ではありません。

Kindle の過去に購入した書籍リストは、以下2箇所から取得できます。

ご注文の確認メールは、私はテキスト形式で受信していたため、本件のために利用することができません。なので「コンテンツと端末の管理」ページからアプローチしました。


ブラウザの開発コンソールでcURLコマンドを出させて、JSONからASINを切り出す

以下の記事を参考に。

ただし、やってみたところ、


  • 1000冊目までは、いちばん最初のcurlコマンドのstartIndexを変えて実行すれば取れる

  • 1000冊目以降は、ブラウザの開発コンソールで観測できるstartIndexを変更しても受け付けない。batchSizeは100でいけた。

なのでせっせとブラウザでページングしながら、都度curlコマンドをコピって、以下のシェルスクリプトに流し込んで、、、

抽出したASINをブクログの一括登録ページから登録します。参考記事ではCSVに加工していますが、私はものぐさなので、ASINだけで登録してしまいました。その後のカテゴリや読書ステータスの調整がかなり大変でしたが。。。


スクレイピングできるよ!

偉大な先人が、コンテンツと端末の管理ページをスクレイピングして、Rubyで操作できるようにしてくれたようです。

ただ、READMEを眺めて、大きめの依存関係があって、セットアップだけで果てしない yak shaving が想像できて、ちょっとまあ、いいやってなりました。


しばらく経過して

過去分はすべて登録できて、追加で購入している分ももれなく登録できていて、たいへん満足しています。