Skip to content

Instantly share code, notes, and snippets.

@LeeDDHH
Created May 30, 2022 00:36
Show Gist options
  • Save LeeDDHH/62a29af7ddad1d74ff9f1423f3233814 to your computer and use it in GitHub Desktop.
Save LeeDDHH/62a29af7ddad1d74ff9f1423f3233814 to your computer and use it in GitHub Desktop.
Kindleに入っている本のタイトルをローカルのMacから抽出する

前提

  • ローカルのKindleを更新し、ライブラリの書籍一覧を最新化する

手順

全ての手持ち電子書籍の情報を取得する

  • Macの場合、以下のファイルパスに全ての手持ち電子書籍の情報が入っている
/Users/ユーザー名/Library/Application Support/Kindle/Cache/KindleSyncMetadataCache.xml
  • タイトル抽出のため、任意の作業ディレクトリにコピーする
cp /Users/ユーザー名/Library/Application Support/Kindle/Cache/KindleSyncMetadataCache.xml 作業ディレクトリ

ワンライナー

  • 作業ディレクトリで以下のコマンドを使うことでKindleのタイトルのみを格納したテキストファイルが生成できる
cat KindleSyncMetadataCache.xml | xmllint --format --encode utf-8 - | grep "<title.*>\(.*\)<" | grep -o ">\(.*\)<" | sed 's/[><]//g' | sed 's/---//g' | sed '/^$/d' | sort > タイトル保存.txt

ちょっとした解説

  • xmllint --format --encode utf-8 -
    • 読み込んだxmlの整形と日本語の文字化けを防ぐためのエンコード指定
  • grep "<title.*>\(.*\)<"
    • xmlのうちに本のタイトルが入っているタグを抽出する
  • grep -o ">\(.*\)<"
    • >本のタイトル< 形式でさらに抽出する
  • sed 's/[><]//g' | sed 's/---//g' | sed '/^$/d'
    • >< を削除する
    • 変換後に残る ---------- という文字列を削除する
    • 空行を削除する

参考

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment