Skip to content

Instantly share code, notes, and snippets.

@okinjp
Last active March 3, 2024 14:39
Show Gist options
  • Save okinjp/5960b1453fdefda5983454653e3204c4 to your computer and use it in GitHub Desktop.
Save okinjp/5960b1453fdefda5983454653e3204c4 to your computer and use it in GitHub Desktop.
Add search button for misskey
# 使い方
# nginxのsub_filerで検索ボタンを生み出すJSをねじ込むコンフィグファイルです。
# 必要なところ(location /など)に以下の行を追加します。
# include add_search_button.conf;
proxy_set_header Accept-Encoding "";
sub_filter '</html>' '<script>const searchUrls=new Map([["ますみすサーチ","https://masmis-search.ja-jp.org/search?q="],["notestock","https://notestock.osa-p.net/view?q="]]);function arylike2ary(e){for(var t=[],n=0,a=e.length;n<a;++n)t.push(e[n]);return t}function waitForElement(e,t,n,a){const c=Date.now();!function o(){if(null!=document.querySelector(e))return void t();setTimeout((()=>{a&&Date.now()-c>a||o()}),n)}()}function add_plus_search_button(e){let t,n=arylike2ary(document.getElementsByTagName("button"));for(let e=0;e<n.length;e++){const a=n[e];if(a.innerText.includes("検索")){t=a;break}}let a=document.createElement("div");a.innerHTML=t.parentNode.innerHTML.replace("検索",e+"で検索"),a=t.parentNode.parentNode.appendChild(a),a.getElementsByTagName("button")[0].addEventListener("click",(()=>{let t=document.getElementsByTagName("input")[0].value;""!=t&&window.open(searchUrls.get(e)+encodeURIComponent(t),"_blank")}))}function check_search_page(){let e=document.getElementById("misskey_app").innerText;e.includes("検索")&&!e.includes("ローカル")&&searchUrls.forEach(((t,n,a)=>{e.includes(n+"で検索")||add_plus_search_button(n)}))}document.addEventListener("click",check_search_page),window.addEventListener("load",(()=>{waitForElement("#misskey_app > div > div > div > div > div > div > div > div",(()=>{check_search_page()}))}));</script></html>';
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment