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ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。