見出し画像

Kindle本棚をDIYしてみた(実装編③)

こちらの記事の続きになります。(作ったものの概要はこちら
この記事では、Kindle for PCの表紙画像のキャッシュについて解説します。

Kindle for PCの表紙画像キャッシュ

Kindle for PCでは、表紙画像データもキャッシュしてあります。

~/AppData/Local/Amazon/Kindle/Cache/covers
FF5B15DEAA2D10FDAE051E490A32BF33.jpgE3DE03F69017D0E0989F3E81E0241CA7.jpgAC2D9F209E90E8CA2BAC01E9057D6E5A.jpg

しかし、ファイル名がぱっと見ASINではありません。
ASINは10桁の英数字ですが、画像ファイル名は32桁の16進数となっています。一見ASINとは関係ないように見えますが、実はこの16進数の値はMD5と呼ばれるハッシュ関数によってASINから生成されています。

B009KYCIJ8
↓ MD5ハッシュ変換
AC2D9F209E90E8CA2BAC01E9057D6E5A

ハッシュ関数は元の値を一定のルールに沿って変換する関数です。ただし、変換後の値から元の値を求めることはできません。

AC2D9F209E90E8CA2BAC01E9057D6E5A
↓ 逆変換は不可
??????????????

しかし、今回の元の値はASINであり、coversフォルダ内の画像ファイル名の元の値(=保有している書籍のASIN)はKindleSyncMetadataCache.xmlからわかるため、ASINからMD5ハッシュ関数を使ってハッシュ値を生成し、見たいASINの画像ファイルがcoversフォルダ内のどのファイルであるかを特定することができます。

画像1

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から様々なサイズの表紙画像を取得することができます。

いいなと思ったら応援しよう!