- 一連の操作はmacos上で行いました。
概要
kindleの蔵書が1000冊に達し、何を持っていたのか管理できないか検討する
https://qiita.com/sasasin/items/fcef210fa49ff8d54e46
http://hushin-text.fdempa.com/2016/10/09/kindle-json.html
などを参考にしました。
手順
- curlで書籍情報を取得
- jqでjsonを加工しタイトルを抽出
でやろうと思います。
やり方1 書籍情報を取得
amazonのマイアカウントのkindleのコンテンツ管理ページにchromeなどのブラウザを使ってアクセス
ブラウザの開発機能を使ってnetworkをwatchします。
ブラウザからコンテンツ管理ページを下にスクロールしていって次を表示ボタンを押下していって全ての蔵書をブラウザに読み込ませる。
開発機能のnetwork上に一連の操作で発行したコマンドが表示されているので、右クリックでcURLでコピーする
適当なテキストエディタにペーストする
curlコマンドのリストがペーストされるのでその中から[curl 'https://www.amazon.co.jp/hz/mycd/ajax' ]となっているもののみ抽出する
*このcurlのコマンドを端末から実行するとjsonデータがダウンロードされます。
やり方2 jsonを加工する
jsonから書籍と著者,ASINを抜き出してリスト化しようと思います。
jsonの加工用コマンドはjq
なのでaptなりbrewなりで取得する。
jq '.OwnershipData.items[] | {title:.title ,author: .authors ,ASIN:.asin} '
を書籍情報のjsonを対象に食わせてやれば欲しい情報のリストが手に入る
最終的なコマンドは
curl 'https://www.amazon.co.jp/hz/mycd/ajax' 何かcache的な文字列 --compressed | jq '.OwnershipData.items[] | {title:.title ,author: .authors ,ASIN:.asin} '
これをnetworkメニューからコピーしてきたcurlのコマンドに対して行えばkindleの蔵書一覧が手に入る
追記
久しぶりに溜まったキンドルのリストを管理しようとしたらやり方を忘れたのでスクリプト化した
# 手順
# chromeでアマゾンの蔵書一覧を表示してF12を押下して開発モードに移行する
# networkモニターを表示しながら再読み込みを行うと蔵書一覧を読み込んだ時のコマンドが表示されるのでCopy all cURLを行う
# テキストエディタにコピペした必要なコマンド(curl 'https://www.amazon.co.jp/hz/mycd/ajax' )のみ抽出し実行するとjsonが取得できる
search_string="curl 'https://www.amazon.co.jp/hz/mycd/ajax' "
# 抜き出したcurlのコマンド一覧を以下のcurl_listにコピペする。
curl_list="./copy_curl_list.txt"
# 一時ファイル
tmp_file="./tmp_comand.sh"
json_file="./tmp_json_file.json"
# 出力結果
kindle_book_list="./kindle_list.txt"
tail $tmp_file
cat $curl_list | while read line; do
if [[ $line =~ $search_string ]] ;
then
echo $line >> $tmp_file
fi
done
/bin/bash $tmp_file >> $json_file
cat $tmp_file
rm $tmp_file
# json fileが複数行ならこっち
cat $json_file | while read line; do
cat $line | jq '.OwnershipData.items[] | {title:.title ,author: .authors ,ASIN:.asin} ' >> $kindle_book_list
done
# json fileが1行ならばこっち
cat $json_file | jq '.OwnershipData.items[] | {title:.title ,author: .authors ,ASIN:.asin} ' >> $kindle_book_list