LoginSignup
0
2

More than 1 year has passed since last update.

Kindleで買った本をまるっとブクログへ登録する

Last updated at Posted at 2023-03-23

できたこと

Kindleで買った本をまるっと ブクログ に登録したくなり、
いろいろやってみたら できました

直前に

という記事を書きましたが、別アプローチでやってみてたらできた、という話になります

手順

(1) Kindle Cloud Reader を開きます

(2) 表示を「リスト」にします (※追記@3/24 「グリッド」でも動くようにしました)
image.png

(3) リストを一番下までスクロールします
下スクロールするとリストが動的に伸びるので、頑張って一番下までスクロールしましょう
image.png

(4) F12を押してデベロッパーツールを表示して、コンソールに以下のJavaScriptをコピペして実行します

getKindleAsinList = function () {
    const FILE_NAME = 'KindleAsinList.txt';

    // <ul> 要素を取得
    const ul = document.getElementById('row') || document.getElementById('cover');

    // <li> 要素のリストを取得
    const liList = ul.getElementsByTagName('li');

    // リストの中身を出力
    var csvData = "";
    Array.prototype.forEach.call(liList, li => {
        const asin = li.getElementsByTagName('div')[0].getAttribute('data-asin');
        if (asin) {
          console.log(asin);
          csvData += asin + "\n";
        }
    });

    // Export CSV File
    var bom = new Uint8Array([0xEF, 0xBB, 0xBF]);
    var blob = new Blob([bom, csvData], {
        type: 'text/csv'
    });
    var url = (window.URL || window.webkitURL).createObjectURL(blob);
    var link = document.createElement('a');
    link.download = FILE_NAME;
    link.href = url;
    document.body.appendChild(link);
    link.click();
    document.body.removeChild(link);
}

getKindleAsinList();

(5) KindleAsinList.txt というファイルがダウンロードされるので保存してください

(6) KindleAsinList.txt をテキストエディタで開きます

(7) ブクログ の まとめて登録 から ISBN登録 を選びます
image.png

(8) ISBN/ASINコードの欄に KindleAsinList.txt の内容をコピペします

(9) カテゴリ、読書状況、タグを適当に決めて「まとめて登録する」を押します
image.png

注意事項ですが、ブクログまとめて登録(ISBN) は一度に上限100冊までのようです。
100冊を超える場合は、100行づつコピペしてください。
これはこれで面倒なので、時間があったら何とかしようと思います。

以上です

アプローチ

Kindle Cloud Reader の書籍リストのHTMLを眺めていたところ、
本のリストが <li> で列挙され、その中の <div> にASINコードが含まれているのを見つけました
JavaScriptでDOMをたどって、目的のタグからASINコードを getAttribute で引き抜いてきています

参考までに本のリストの <li> はこんな構造になっています (2023年3月23日時点)
ASINのほかに書籍名と著者名は含まれています
残念ながら購入日は含まれていません

<li class="_11lsG_chr1kjQD0SLGGyNl  _3CFVV8uVQRCCRmpES8cx8K" tabindex="0">
  <div aria-labelledby="
      plansBadge-B08D6B4MJB
      cover-B08D6B4MJB
      title-B08D6B4MJB
      author-B08D6B4MJB
      percentage-read-B08D6B4MJB
    " data-asin="B08D6B4MJB" data-resource-type="EBOOK" class="_3cDmi8xyroMAefeEDpSCc8">
    <div class="_1JC09ExCWicQrzvIAkWq34 _3bhApM-mNUxf-ynkeWb8Hl" id="coverContainer-B08D6B4MJB">
      <div class="_1C_Zm4Mhyc833h7XJtCCVx" aria-hidden="true">
        アフターデジタル2 UXと自由 (Japanese Edition)
      </div>
      <a class="_9LIp7PLRk3m1eU9xI77mx">
        <img id="cover-B08D6B4MJB" draggable="false" class="Pc7fbfdgSgc3DxfcbCQfO _1vplkUEwqIG4HbQQrrdNVD" src="https://m.media-amazon.com/images/I/51K7WPkAvaL._SY400_.jpg" alt="" itemprop="">
      </a>
    </div>
    <div class="kZxME44S37q3fcY6df_Yn">
      <div class="sNvPMjb0opjWivruxb45B ">
        <div id="title-B08D6B4MJB">
          <p class="_2czmS0An9GDlVR9xgpCNOC">アフターデジタル2 UXと自由 (Japanese Edition)</p>
        </div>
        <div id="author-B08D6B4MJB">
          <p class="_33h88ogkqT8qrfT1uutvBI">藤井 保文</p>
        </div>
      </div>
    </div>
  </div>
</li>

参考記事

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2