見出し画像

私本管理PlusにKindle本を登録する方法

長い前置き(結論が欲しい方は読み飛ばしてください)

私本管理Plusの掲示板(http://ekakin.la.coocan.jp/cgi-bin/asdfghjkl/bbs.cgi)でプラグインを使ってDVDやCDの情報を取得できないことを質問したところ、「ISBN検索 Amazon.co.jp 本 ver6.0.1プラグイン(私本管理Plus本体に一緒に入っているプラグイン)にDVDやCDのASINコードを入力して試してみて」との回答をいただき、実際にいくつか試したところうまくいきました。

EAN/JANコードをASINに変換する方法を探してみましたが見つからず、Pythonを勉強してスクレイピングとかいうのをしてASINを取得するしかないのかなと思っていました(その第1歩が「PythonとVisual Studio Codeの組み合わせでPythonの環境を構築する(https://note.com/ramblelazy/n/n8265acc33774)」だったりします。そこから全然進んでませんが)。

そんなある日、私本管理PlusにKindle本を登録出来ないかなと思い、いろいろ調べていたのですが、Kindle本にASINコードが割り当てられてました。ダメ元で私本管理PlusにそのASINコードを登録してみたところ、うまくいきました。

紙の本だけでなくKindle本も管理できるととても助かります(Amazon.co.jpでの管理画面やKindle for PC、KindleやiPadなどの管理画面では何冊買ったかくらいしかすぐに把握できないので)。

では、今までに買ったKindle本の情報(具体的にはASINコード)をどうやって収拾するかですが、これは意外にも簡単に見つかりました。以下のWebサイトの記事のコメントに情報がありました。

Kindle蔵書一覧を取得する方法
https://qiita.com/taka_hira/items/8a9181c0733de2c9f8ee
「Kindle for PCを使っていれば、C:\Users\user_name\AppData\Local\Amazon\Kindle\Cache\KindleSyncMetadataCache.xml というファイルが生成されているので、これを使うのが便利かと思います。」

Kindle蔵書一覧を取得する方法

XMLで記録されているのかーと思いながらテキストエディタで開いたら、改行も無く、たった1行に全てのKindle本の情報がXMLで記録されていました。

特定のタグで囲まれた情報を拾い出して画面(標準出力)なりファイルなりに出力するプログラムでも書かなければいけないのかと思いましたが、ふとExcelってXMLを扱えなかったっけ?と思い、試しにExcelで開いたところ、CSVファイルを開いたときのように表示されました。

ざっと見たところ、

・購入したKindle本だけでなく、Kindle Unlimitedで借りている本も含まれている(Kindle Unlimitedの本かどうかを見分ける識別子みたいなものは見つけられませんでした)。

・複数の著者がいる場合、著者の数だけ同じASINコードの行がある

・オライリーや技術評論社のWebサイトで購入したり、自炊したEPUBやPDFをSend to Kindle(https://www.amazon.co.jp/sendtokindle)でKindleに登録した場合、特別(?)なASINコードが割り当てられ、Amazon.co.jpで検索できないようになっている。

・ASINコードはあるけど本のタイトルなどの情報がないものがある。

といったことが分かりました。

多少データを加工して何件かのASINコードを取得(コピー)し、それを私本管理Plusの一括登録に貼り付け(ペースト)したところ、私本管理Plusに登録できましたので、多分この方法でいけると思います。

Kindle本を私本管理Plusに登録するための手順

Microsoft 365のExcelを使用しています。これより古いバージョンによってはXMLを読み込めない場合があるみたいなので注意してください。

Kindle for PCを起動し、同期し、終了する

KindleSyncMetadataCache.xmlを最新の情報にするため。このとき左欄の「ライブラリ」に表示されている「すべて」の数と「ドキュメント(EPUBやPDFの本)」の数をメモし、「すべて」の数から「ドキュメント」の数を引いた数字を計算しておく。

「すべて」と「ドキュメント」の数を控え、あらかじめ「すべて」から「ドキュメント」の数を引いた数字を計算しておく

オリジナルのファイルをコピーし、そちらで作業をする

「C:\Users\user_name\AppData\Local\Amazon\Kindle\Cache\KindleSyncMetadataCache.xml」をどこか適当な場所(例えばD:\tmpの下とか)にコピーします(操作を誤ってオリジナルを壊さないようにするため)。

データを加工する

1.コピーした「KindleSyncMetadataCache.xml」をExcelで開く。

下記のウィンドウが表示されたらそのまま「OK」。

さらに下記のウィンドウが表示されたらそのまま「OK」。

2.重複しているASINコードを削除して1つだけにする

「データ」→「重複の削除」とクリックすると重複の削除を行うウィンドウが表示されるので、「ASIN」だけを選択し、「OK」ボタンをクリックする。実行すると実行結果のウィンドウが表示されるので、「OK」ボタンをクリックする。

「データ」→「重複の削除」とクリック
ASINだけ選択
そのまま「OK」をクリック

3.title列が「---------------」の列を除外する

title列フィルターで「---------------」のチェックを外し、「OK」ボタンをクリックする。

3.pronunciation列が空欄の列を除外する

pronunciation列フィルターで「(空白セル)」のチェックを外し、「OK」ボタンをクリックする。

4.O2セルにASINの長さを表示させる(追加)

O列まで画面をスクロールさせ、O2セルに「=len(」と入力したあと、カーソルをC2まで移動させると[@ASIN]となるので、そのまま「)」で閉じてEnterキーを押す。

O2セルに式を入力する


すると全ての行にASINの長さが表示される

5.O列のフィルターで長さが10だけをチェックする(追加)

O列のフィルターを表示させ、長さが10になっているものだけをチェックし、それ以外はチェックを外して「OK」ボタンをクリックする。

長さが10のものだけをチェックする

6.事前にメモしたり計算したKindle for PCの「ライブラリ」に表示されている「すべて」の数から「ドキュメント(EPUBやPDFの本)」を引いた数と、Excelで表示されているKindle本の数が一致するか確認する

私の場合はKindle for PCの方が3冊少なかったです。何かデータの加工で足りないものがあるのかもしれませんが、これはKindleに入っている辞書3冊が原因ではないかと勝手に想像。しかし真相は不明(ちなみにAmazon.co.jpでこの3冊のASINコードを検索してもヒットしませんでした)。

「すべて」から「ドキュメント」の数を引く
Kindleについてくる辞書の数が含まれているか否かの差ではないかと勝手に想像

あとはASIN列のデータを私本管理Plusの「一括登録」にコピー&ペーストして登録すればうまくいくと思います。ただし、2,000件とかを一気にやると何かとまずいことがあるかもしれませんので、少しずつ小分けにして登録していくといいと思います。

実際に登録を行うと、サイズに「Kindle版」と入力されますので、それで紙の本かKindle本か判別できると思います。

サイズに「Kindle版」と登録される

分類コードはどうするか

分類コード(Cで始まる5桁のコード)ですが、Kindleの場合、紙の本も出版されていればそれにあわせればいいですが(簡単に調べる方法はちょっと思いつきませんが、やはりスクレイピングをうまいことやって取得するんですかね)、紙の本はなくKindle本でしか出版されてない本もありますので、その場合は自分で判断して分類コードを入力するか、諦めるかだと思います。分類コードについてはこちらのWebサイトがわかりやすいと思います。

コミックは9979や0979で決め打ち、それ以外は悩んで決める(しかないと思う)

私本管理Plusに登録した後に購入したKindle本を追加するときはどうするか

「purchase_date」がKindle本を買った日だと思うので、前回私本管理Plusに登録した日以降のものだけを登録すればよいと思います。

以上が私本管理PlusにKindle本を登録する方法ですが、Kindle for PCと加工したExcelのデータの数が一致しなかったりしてますので改善の余地はありますが、とりあえず登録したい方はこの方法でやってみるといいかもしれません。

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