メインコンテンツへスキップ
見出し画像
Photo byia19200102

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に含まれていない様なのでその辺りの情報が取れないのは残念。。。


     
     
     
    40代会社員、パソコン関係の仕事をしています。 ※記事内のAmazonのURLはAmazonアソシエイトリンクを使用しています。

    あなたへのおすすめ