Kindle本棚をDIYしてみた(実装編③)
こちらの記事の続きになります。(作ったものの概要はこちら)
この記事では、Kindle for PCの表紙画像のキャッシュについて解説します。
Kindle for PCの表紙画像キャッシュ
Kindle for PCでは、表紙画像データもキャッシュしてあります。
~/AppData/Local/Amazon/Kindle/Cache/covers
・FF5B15DEAA2D10FDAE051E490A32BF33.jpg
・E3DE03F69017D0E0989F3E81E0241CA7.jpg
・AC2D9F209E90E8CA2BAC01E9057D6E5A.jpg
しかし、ファイル名がぱっと見ASINではありません。
ASINは10桁の英数字ですが、画像ファイル名は32桁の16進数となっています。一見ASINとは関係ないように見えますが、実はこの16進数の値はMD5と呼ばれるハッシュ関数によってASINから生成されています。
B009KYCIJ8
↓ MD5ハッシュ変換
AC2D9F209E90E8CA2BAC01E9057D6E5A
ハッシュ関数は元の値を一定のルールに沿って変換する関数です。ただし、変換後の値から元の値を求めることはできません。
AC2D9F209E90E8CA2BAC01E9057D6E5A
↓ 逆変換は不可
??????????????
しかし、今回の元の値はASINであり、coversフォルダ内の画像ファイル名の元の値(=保有している書籍のASIN)はKindleSyncMetadataCache.xmlからわかるため、ASINからMD5ハッシュ関数を使ってハッシュ値を生成し、見たいASINの画像ファイルがcoversフォルダ内のどのファイルであるかを特定することができます。
flaskで表示させる際には、ファイル名をASINにしてflaskサーバーを起動するフォルダ内にコピーします。
備考
なお以下のログファイルから、Kindle for PCのログが確認できるのですが、
~/AppData/Local/Amazon/Kindle/Cache/Logs/1
どうやら、もとは以下のURLから取得した画像ファイルみたいです。
[INFO][NetworkManager] Network Finished: http://ecx.images-amazon.com/images/P/B009KYCIJ8.01._SX244_SY420_SCRMZZZZZZZ_.jpg status=200
上記のURL以外にも、ASINから様々なサイズの表紙画像を取得することができます。