見出し画像

Kindle for PCのキャッシュファイルから持っているKindle本の一覧を作成する

持ってるKindleの一覧を作成したかったので色々調べたところ、Windows版のKindleアプリだと「%systemdrive%\users\《ユーザー名\AppData\Local\Amazon\Kindle\Cache」に本の情報が含まれたxmlファイル「KindleSyncMetadataCache.xml」が保存されることがわかりました。

そこで作成されたxmlをcsvに変換するスクリプトを「Python」で作成したので投稿しておこうと思います。

 #kindle Pc cashe file => kindle book list csv
import xml.etree.ElementTree as ET
import csv

input_file_str = "./KindleSyncMetadataCache.xml"
output_file_str = "./kindle_book_list.csv"
header = ["ASIN", "title", "authors", "publishers",
           "publication_date", "purchase_date",
           "textbook_type", "cde_contenttype",
           "content_type"]
nary = [header]
tree = ET.parse(input_file_str)
root = tree.getroot()

for book_info in root[2]:
   ary = []
   for info in book_info:
       #authers publishers are nested
       if len(info) == 0:
           ary.append(info.text)
       else:
           info_list = [ s.text for s in info ]
           ary.append(';'.join(info_list))
   nary.append(ary)

with open(output_file_str, 'w') as f:
   writer = csv.writer(f)
   writer.writerows(nary)

キャッシュファイルの構造上、作者と、発行元が複数設定されることがある様なので、ループないで処理を分けています。作者は、原作と作画など複数なのはわかりますが、発行元が複数ってのはパッと想像つかないですね。

使っているモジュールは標準のものなので「Python」が入っていれば、上記スクリプトと同じ場所に「KindleSyncMetadataCache.xml」を置いてスクリプトを実行すれば「kindle_book_list.csv」が生成されます。

読み終わってるかどうかが、上記のxmlに含まれていない様なのでその辺りの情報が取れないのは残念。。。


この記事が気に入ったらサポートをしてみませんか?