AX

電霊ログ

私のやってるサイト、電子の言霊の活動ログ

カテゴリークラウド

タグリスト

最近のトラックバック

月別アーカイブ(タブ)

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  • ニコ動の投稿者名を表示するブックマークレット

自分が欲しかったのと、JavaScript の練習を兼ねて、
ニコニコ動画上の検索結果やタグなどの動画一覧画面ページで投稿者のニックネームを確認できるブックマークレットを作ってみました。
再生画面へ飛ぶ前に投稿者名を確認出来ます。


追記(2017/02/15):
一覧ページで選択出来る表示列数によって、サムネイルクリックで取得できないミスを修正しました。
ちゃんとモード別に確認してなかったので気が付きませんでした。。。
修正前のままでもテキストリンククリックでは取得できます。


「使い方」

下にある「ニコ動名前取得君」のリンクをブックマークに登録し、
ニコニコ動画の該当ページ上で登録したブックマークをクリックして実行。

するとマウスカーソルに「?」マークが付くので
その状態で調べたい動画のリンクを一回クリック。

しばらくすると動画のリンクテキスト部分に
投稿者名が表示される!


「注意」

名前を取得する度に、
ブックマークレットをクリックする必要があります

ひとり言:(試行錯誤の段階で一度に複数の動画からニックネームを取得する様なバージョンも書いたりしましたが、やっぱり向こうのサーバーに付加をあまり掛け無い仕様にした方が良いと考え、何バージョンか重ねてこの様な形に落ち着きました。)


ブックマークレット:
ニコ動名前取得君 (←これをブックマークに追加する。名前は後で好きに変えてください)

ソース:

javascript:(function (d, s, h, e, v, x) {
    function f1(o) {
        if (o) return o.tagName == 'A' ? o : f1(o.parentElement);
    }
    function f2(e, o, r) {
        if (e != o && e.tagName == 'A' && e.href.indexOf(o.pathname) > -1) return e;
        if (e.firstChild) r = f2(e.firstChild, o);
        if (!r && e.nextSibling) r = f2(e.nextSibling, o);
        return r;
    }
    function f3(e, l, r) {
        for (var i = 0, t = e ; i < l ; i++, t = t.parentNode) {
            if (t == null) break;
            if (r = f2(t, e)) return r;
        }
    }
    d = document;
    h = d.head;
    s = d.createElement('style');
    h.appendChild(s);
    s.sheet.insertRule('*{cursor:help;}', 0);

    d.addEventListener('click', function c(ev) {
        ev.preventDefault();
        d.removeEventListener('click', c, false);
        h.removeChild(s);
        e = ev.target;

        if (e.tagName == 'IMG') e = f3(f1(e), 5);
        if (e.className == 'itemThumbWrap') e = f3(e, 5);

        if (e) {
            if (!/^\.*\[.*\]<br>/i.test(e.innerHTML) && (v = /^http:\/\/www.nicovideo.jp\/watch\/(sm\d+)/i.exec(e.href))) {
                x = new XMLHttpRequest();
                x.open('GET', "https://query.yahooapis.com/v1/public/yql?q=select%20thumb.user_nickname%20from%20xml%20where%20url%3D'http%3A%2F%2Fext.nicovideo.jp%2Fapi%2Fgetthumbinfo%2F" + v[1] + "'&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys",
                true);
                x.onreadystatechange = function() {
                    if ((x.readyState == 4) && (x.status == 200)) {
                        e.innerHTML = '[' + JSON.parse(this.responseText).query.results.nicovideo_thumb_response.thumb.user_nickname + ']<br>' + e.innerHTML;
                    }
                };
                x.send(null);
            }
        }
    });
})();


ちなみに、外部との通信には YQL を使用しています。初めて使いましたが便利ですね!
こんな用途に使って良いのかは分かりませんが...。
一応 YQL には使用回数制限がある様ですが
普通に使う分には大丈夫でしょう(1000回/一時間くらいまで大丈夫らしいです)。

このブックマークレットのソースコードは自由にお使いください
ライセンス: NYSL 0.9981

以下のブラウザで動作確認しました
Google Chrome 49
Mozilla FireFox 51
スポンサーサイト
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。