marukot-chの日記

弱小SEの雑記です

KindleのコンテンツをJavaScriptで別ウィンドウに表示させるブックマークレット作った

動機

もともと、下記にあったのだけど無限スクロールをAmazonが止めて200ずつ表示になってしまったので、 「もっと見る」ボタンを押すと最初のやつが変わってしまい見つけられなかった。 なので適当に改造し、別ウィンドウに表示するように変更した。

改造したこと

1.表示件数ごとにあるかどうか見て、あればそれから開始するようにした(下記ソースでは表示件数は200)

2.「読んだ本」が表示されていれば、「読了」って書くようにした

3.タブ文字がなんかうまくいかなかったので「....」(ピリオド4つ)にした

4.新しいウィンドウ作ってそこに記載するようにした

元ネタ: https://wakufactory.jp/densho/tools/booklist.html

JavaScriptに驚くほど無知なので新しいウインドウにするところは下記を参考にした。 https://www.ueda.info.waseda.ac.jp/~gaku/js/how014.html

ほか

ソースはこちら。ブックマークレットみたいにして適当に使ってる。  ボタンを自動的に押してデータを取得し続けるようにできたらいいのにね。 適応なソフトを使えばできるのだろうか?

javascript:t=[];
var first = 0;
var dispSize = 200;

/* find first title */
for (i=0; i< 2000; i++) {
    first = i * dispSize;
    o=document.getElementById('title'+first);
    if(o) {
        break;
    }
};

/* collect items */
for(i=first;1;i++){
    o=document.getElementById('title'+i);
    if(!o)break;
    /* get readBadge's style */
    var readBadgeElement = document.getElementById('readBadge'+i);
    var readBadgeString = "";
    if(readBadgeElement.style.display !== "none") readBadgeString = '読了';

    t.push("A...."
        +o.innerHTML
        +"...."
        +document.getElementById('author'+i).innerHTML
        +"...."
        +document.getElementById('date'+i).innerHTML
        +"...."
        +readBadgeString /* 読んだ本 */
    );
};

/* open new window and write. */
win = window.open('', 'newwindow', 'width=400,height=300');
for(i=0;i<t.length;i++)
    win.document.write(t[i]+"<br/>");

終わりに

wakufactory.jpの方が仰っていることについては全面的に同意したい。

現状の電書ストアやリーダは、大量に購入したユーザの利便性が足りてないと思います。各ストアはとりあえず、購入リストをCSVのような形式でダウンロードできる機能を付けて欲しいと願うものであります。

電子書籍サイトによって得意分野が違ったりすると、サイトを分けて購入したりするわけで。 そうなるともう、どこで何買ったか全然わからなかったりするですよ。 まぁ、自分の場合は買っただけで読まなかったりするから。。。。。。