現在の非表示ユーザの総数:
javascript:(async()=>{alert((await(await fetch("http://b.hatena.ne.jp/my/ignore.json")).json()).ignore_users.length) })()
http://b.hatena.ne.jp/api/my/ignore_users のほうが簡単(あたらしい)っぽい。上のAPIと数が違う。プライベートユーザを含まないとか?
↑ は405 で動かなくなっていたよくわからない。下のは動く
javascript:(async()=>{alert((await(await fetch("https://b.hatena.ne.jp/api/my/ignore_users?limit=10000")).json()).users.length)})()
選択範囲に含まれるブクマユーザを一括ブロック
(スターなどを選択する。いっぱいついてる短縮されたスターは手動で展開してから選択する)
javascript:(async(t,u,f,i)=>{if(!confirm("sure?\n"+t.join(", ")))return;u=await(await fetch("https://b.hatena.ne.jp/api/my/profile",{credentials:"same-origin"})).json();for(i of t){f=new FormData();f.append("username",i);f.append("rks",u.rks);await fetch(`https://b.hatena.ne.jp/${u.name}/api.ignore.json`,{method:"POST",body:f,credentials:"same-origin"})}})(Array.from(window.getSelection().getRangeAt(0).cloneContents().querySelectorAll("a")).map(i=>(i.href.match('^https?://b.hatena.ne.jp/([^/]+)/$'),RegExp.$1)).filter(x=>x).filter((v,i,s)=>s.indexOf(v)===i));
スニペット
選択範囲内のブクマユーザー名取得
Array.from(window.getSelection().getRangeAt(0).cloneContents().querySelectorAll("a")).map(i=>(i.href.match('^https?://b.hatena.ne.jp/([^/]+)/$'), RegExp.$1)).filter(x=>x).filter((v,i,s)=>s.indexOf(v)===i)
ユーザー情報
const profile = await (await fetch("http://b.hatena.ne.jp/api/my/profile")).json();