コトバノウタカタ

よしなしごとをつらつらとつづるばしょ。

はて部コメントをスター数順にソート

javascript: (function () {
    d = document;
    bms=d.getElementsByClassName("js-bookmarks-recent");
    if(bms.length == 0){
        alert('not hatena bookmark page.');
        return;
    }
    bm=bms[0];
    li=bm.getElementsByClassName("entry-comment-contents");
    ls=new Array();
    for(i = 0; i < li.length; i++){
        l=li[i];
        st=l.getElementsByClassName("hatena-star-star");
        scnt=st.length;
        ist=l.getElementsByClassName("hatena-star-inner-count");
        if (ist.length > 0){
            scnt += parseInt(ist[0].textContent);
        }
        ls.push({tag: l, cnt: scnt});
    }
    while(bm.firstChild ){
        bm.removeChild( bm.firstChild );
    }
    ls.sort(function(a,b){
        if(a.cnt < b.cnt) return 1;
        if(a.cnt > b.cnt) return -1;
        return 0;
    });
    for(i = 0; i < ls.length; i++){
        l=ls[i];
        bm.appendChild(l.tag);
    }
 })()

どうも読み込んだ時点ではすべてのコメントが読み込まれていないようなので、一度画面最下部まで移動してから読むようにしました。1秒くらい待ちます。

javascript: (function () {
    d = document;
    bms=d.getElementsByClassName("js-bookmarks-recent");
    if(bms.length == 0){
        alert('not hatena bookmark page.');
        return;
    }
    var el = d.documentElement;
    window.scroll(0, el.scrollHeight - el.clientHeight);

    var tend = function(){
        bm=bms[0];
        li=bm.getElementsByClassName("entry-comment-contents");
        ls=new Array();
        for(i = 0; i < li.length; i++){
            l=li[i];
            st=l.getElementsByClassName("hatena-star-star");
            scnt=st.length;
            ist=l.getElementsByClassName("hatena-star-inner-count");
            if (ist.length > 0){
                scnt += parseInt(ist[0].textContent);
            }
            ls.push({tag: l, cnt: scnt});
        }
        while(bm.firstChild ){
            bm.removeChild( bm.firstChild );
        }
        ls.sort(function(a,b){
            if(a.cnt < b.cnt) return 1;
            if(a.cnt > b.cnt) return -1;
            return 0;
        });
        for(i = 0; i < ls.length; i++){
            l=ls[i];
            bm.appendChild(l.tag);
        }
        window.scrollTo(0, 0);
    };

    setTimeout(tend, 1000);
 })()