Kindle書籍すべてブクログで管理する2023年版
過去こんな記事を書いてました。しばらく時間が経過し、Kindleからの取り方も、ブクログへのPOSTもブッ壊れたので、しぶしぶアプデ情報を整理しました。
旧Kindleアプリ「Kindle Classic」では書誌情報をXMLで管理しており、↑の手法で取得可能でした。
新Kindleアプリ「Kindle」では管理方式が変化したらしく、XMLはどこにも見当たらず、どうにか調べたのが、この記事です。
執筆時点 2023/10/09 時点の情報です。
macOSの新Kindleアプリは多くの情報を SQLite で管理しているらしい
Kindle を起動し macOS のアプリ「アクティビティモニタ」で Kindle プロセスの「開いているファイルとポート」をコピーしてファイルに出して、観察しつつ、見てもしゃーないのを除外していきます。フォントとか画像とか。ファイル名が完全にランダムっぽいのとか。
$ mkdir tmp/20231009-kindle
$ cd tmp/20231009-kindle
$ pbpaste > process-opened-files.txt
$ cat process-opened-files.txt \
| sort -u
$ cat kindle-opened-files.txt | sort -u | grep -Ev '\.(ttf|otf|png)|(/private/var/db/oah/|/usr/share/|/System/Library/)'
どうやら ~/Library/Containers/com.amazon.Lassen
にユーザー毎のデータが保持されてそうなことが見えて、さらに SQLite 形式っぽいファイルがKindleアプリ内の用途毎に複数ありそうなことが見えます。
$ find ~/Library/Containers/com.amazon.Lassen -type f \
| grep sqlite
そのなかで、いかにも書誌情報を持ってそうなファイル名である BookData.sqlite
を、ER図に出してみます。 k1LoW 氏の https://github.com/k1LoW/tbls で一瞬で出せます。
$ brew install k1LoW/tap/tbls
$ tbls doc sqlite://$HOME/Library/Containers/com.amazon.Lassen/Data/Library/Protected/BookData.sqlite
各テーブルに実際に入ってるデータは、TablePlus で ~/Library/Containers/com.amazon.Lassen/Data/Library/Protected/BookData.sqlite
を開いて観察しました。
なんだか zbook テーブルの行数と、持ってる本の数が一致してそう。ASINも入ってる。が、変な文字列が頭に付いてるな。意味はわからないけど。などなど。
ブクログのまとめて登録画面
以前は Python とか cURL で POST したら投入できてたのですが、現在では投入できなくなっており、諦めました。
結論
Kindleアプリを起動して Cmd+r で手元の書誌情報を最新化して、こんなクエリで ASIN をガガッと取れました。
$ sqlite3 ~/Library/Containers/com.amazon.Lassen/Data/Library/Protected/BookData.sqlite \
'SELECT substring(zbook.zbookid, 3, 10) FROM zbook ORDER BY zbook.zrawlastaccesstime DESC LIMIT 100' \
| pbcopy
あとは ブクログのまとめて登録画面 にペタッとしたら登録できます。
Discussion