現在の非表示ユーザの総数:

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();
  1. トップ
  2. tech
  3. はてブ用ブックマークレット