Bookmarklets

ブックマークレット集。

Copy Current Page Title And URL For HTML (copy-current-page-title-and-url-for-html.js)

javascript:((e,t)=>{(t=e.createElement("textarea")).textContent=`<a href="${e.URL.replace(/&/gu,"&")}">${e.title.replace(/(\[|\]|<|>)/gu," ").replace(/ +/gu," ").trim()}</a>`,e.body.appendChild(t),t.select(),e.execCommand("copy"),e.body.removeChild(t)})(document);

閲覧中のページのタイトルと URL を HTML リンク形式にしてクリップボードにコピーする。

javascript:((d,s)=>{s=d.createElement('script');s.src='https://neos21.github.io/bookmarklets/dist/copy-current-page-title-and-url-for-html.js';d.body.appendChild(s)})(document);

Copy Current Page Title And URL For Markdown (copy-current-page-title-and-url-for-markdown.js)

javascript:((e,t)=>{(t=e.createElement("textarea")).textContent=`- [${e.title.replace(/(\[|\])/gu," ").replace(/ +/gu," ").trim()}](${e.URL.replace(/&/gu,"&")})`,e.body.appendChild(t),t.select(),e.execCommand("copy"),e.body.removeChild(t)})(document);

閲覧中のページのタイトルと URL を Markdown リンク形式にしてクリップボードにコピーする。

javascript:((d,s)=>{s=d.createElement('script');s.src='https://neos21.github.io/bookmarklets/dist/copy-current-page-title-and-url-for-markdown.js';d.body.appendChild(s)})(document);

Copy Current Page Title And URL (copy-current-page-title-and-url.js)

javascript:((e,t)=>{(t=e.createElement("textarea")).textContent=e.title+" "+e.URL,e.body.appendChild(t),t.select(),e.execCommand("copy"),e.body.removeChild(t)})(document);

閲覧中のページのタイトルと URL をクリップボードにコピーする。

javascript:((d,s)=>{s=d.createElement('script');s.src='https://neos21.github.io/bookmarklets/dist/copy-current-page-title-and-url.js';d.body.appendChild(s)})(document);

EC Navi PeX News Clicker (ec-navi-pex-news-clicker.js)

javascript:(a=>["angry","sad","cool","like"].map(o=>"#submit-"+o).concat(["bad","sad","glad","good"].map(o=>[".btn_"+o,".btn_feeling_"+o]).flat()).some(o=>(a=document.querySelector(o))&&(a.scrollIntoView(),a.click(),!0)))();

EC ナビ、PeX の「まいにちニュース」の気持ちを自動回答する。

javascript:((d,s)=>{s=d.createElement('script');s.src='https://neos21.github.io/bookmarklets/dist/ec-navi-pex-news-clicker.js';d.body.appendChild(s)})(document);

Get GitHub Repo Size (get-github-repo-size.js)

javascript:((e,t,r,n,o)=>{r=e(".author"),n=e(".mr-2>a"),r&&n&&(t.open("GET","https://api.github.com/repos/"+r+"/"+n,!1),t.send(),o=JSON.parse(t.response).size,alert(o+"KB\n"+Math.floor(o/1e3)+"MB"))})((e,t)=>(t=document.querySelector(e))?t.innerText:null,new XMLHttpRequest);

GitHub ページを開いている時に実行すると、そのリポジトリのファイルサイズを GitHub API から取得する。

javascript:((d,s)=>{s=d.createElement('script');s.src='https://neos21.github.io/bookmarklets/dist/get-github-repo-size.js';d.body.appendChild(s)})(document);

Get Wikipedia Short URL (get-wikipedia-short-url.js)

javascript:((t,c)=>{[].forEach.call(document.querySelectorAll("script"),r=>{t=r.innerHTML.match(/wgArticleId.*?(\d+)/u),c=c||(t?t[1]:"")}),c?prompt("URL","https://ja.wikipedia.org/?curid="+c):alert("探索失敗")})();

Wikipedia のページ ID を取得して短縮 URL を取得する。

javascript:((d,s)=>{s=d.createElement('script');s.src='https://neos21.github.io/bookmarklets/dist/get-wikipedia-short-url.js';d.body.appendChild(s)})(document);

Instagram Saved Bulk Remove (instagram-saved-bulk-remove.js)

javascript:((e,r,t)=>{setInterval(()=>{(r=e.querySelector('svg[aria-label="削除する"]'))&&r.parentNode.click(),setTimeout(()=>{(t=e.querySelector("a.coreSpriteRightPaginationArrow"))&&t.click()},250)},3e3)})(document);

Instagram の「保存済み」ページで1つ目の投稿を開いたら本ブックマークを起動する。すると「保存」を解除していく。中止する場合はページ更新などで対処する。

javascript:((d,s)=>{s=d.createElement('script');s.src='https://neos21.github.io/bookmarklets/dist/instagram-saved-bulk-remove.js';d.body.appendChild(s)})(document);

Instagram Saved Get URLs (instagram-saved-get-urls.js)

javascript:((t,r,a,n)=>{a=setInterval(()=>{t.querySelectorAll("a").forEach(e=>{e.href.match(/(?!.*liked_by).*(?=\/p\/)/)&&r.add("igsv "+e.href+"\n")})},200),t.addEventListener("keydown",e=>{e.key.includes("Esc")&&(clearInterval(a),(n=t.createElement("textarea")).textContent=Array.from(r).join(""),t.body.appendChild(n),n.select(),t.execCommand("copy"),t.body.removeChild(n),alert(r.size+"件"))})})(document,new Set);

Instagram の「保存済み」ページで本ブックマークを起動し、全てスクロールしたら Esc キーを押下する。するとクリップボードに投稿 URL がコピーされる。

javascript:((d,s)=>{s=d.createElement('script');s.src='https://neos21.github.io/bookmarklets/dist/instagram-saved-get-urls.js';d.body.appendChild(s)})(document);

Macromill Helper (macromill-helper.js)

javascript:((e,l,c,o,i)=>{(o=e.querySelector("#overlay-close"))&&o.click(),(i=e.querySelector(".matrix-item"))&&i.click(),e[l]("label[for]").forEach(e=>{/((い|え|が|し|て|に|は|も|ら)ない)|いいえ|正社員|IT|東京|賃貸|既婚/u.test(e.innerText)?(console.log("クリック",e.innerText),e.click(),c=!0):console.log("マッチせず",e.innerText)}),c?e[l]('#finishButton, [value*="次へ"], [value*="送"]').forEach(e=>{e.click()}):(e[l]('[value*="回答をやめる"]').length&&e[l]('[value*="次へ"]').forEach(e=>{e.click()}),e[l]("a").forEach(e=>{e.innerText.includes("myページへ戻る")&&e.click()}),e[l]("label").length||e[l]('#finishButton, [value*="次へ"]').forEach(e=>{e.click()}),e[l]('[value*="閉じる"]').forEach(e=>{e.click()}))})(document,"querySelectorAll",!1);

マクロミル形式のアンケートサイトに自動回答する。

javascript:((d,s)=>{s=d.createElement('script');s.src='https://neos21.github.io/bookmarklets/dist/macromill-helper.js';d.body.appendChild(s)})(document);

Open Archive.org Or Google Cache (open-archive-org-or-google-cache.js)

javascript:(e=>{e=confirm("OK:Archive.org\nCancel:GoogleCache")?"web.archive.org/web/*/":"webcache.googleusercontent.com/search?q=cache:",open("http://"+e+location.href,"")})();

閲覧中のページの Archive.org か Google キャッシュを開く。

javascript:((d,s)=>{s=d.createElement('script');s.src='https://neos21.github.io/bookmarklets/dist/open-archive-org-or-google-cache.js';d.body.appendChild(s)})(document);

Open Archive.org (open-archive-org.js)

javascript:open("http://web.archive.org/web/*/"+location.href,"");

閲覧中のページの Archive.org を開く。

javascript:((d,s)=>{s=d.createElement('script');s.src='https://neos21.github.io/bookmarklets/dist/open-archive-org.js';d.body.appendChild(s)})(document);

Open Between GitHub And GitHub Pages (open-between-gh-and-ghp.js)

javascript:((u,t)=>{(u=location.href.replace(/^https?:\/\//u,"").replace(/^www\./u,"")).match(/^github\.com/u)?t=(u+"/").replace(/^github\.com\/(.*?)\//u,"$1.github.io/").replace(/^(.*?)\.github\.io\/(.*?)\/.*/u,"$1.github.io/$2").replace(/\/(.*?)\.github\.io$/u,""):u.match(/^(.*?)\.github\.io/u)&&(t=u.replace(/^(.*)\.github\.io/u,"github.com/$1").replace(/^github\.com\/(.*?)\/(.*?)\/.*/u,"github.com/$1/$2").replace(/^github\.com\/(.*?)\/(.*?)\.(html|css|js)$/u,"github.com/$1")),t?open("https://"+t.replace(/\/$/u,""),""):alert("Invalid URL")})();

GitHub リポジトリのページを開いていたら GitHub Pages に、GitHub Pages を開いていたら GitHub リポジトリのページを開く。

javascript:((d,s)=>{s=d.createElement('script');s.src='https://neos21.github.io/bookmarklets/dist/open-between-gh-and-ghp.js';d.body.appendChild(s)})(document);

Open Google Cache (open-google-cache.js)

javascript:open("http://webcache.googleusercontent.com/search?q=cache:"+location.href,"");

閲覧中のページの Google キャッシュを開く。

javascript:((d,s)=>{s=d.createElement('script');s.src='https://neos21.github.io/bookmarklets/dist/open-google-cache.js';d.body.appendChild(s)})(document);

Open gyo.tc (open-gyo-tc.js)

javascript:open("https://gyo.tc/"+location.href,"");

閲覧中のページのウェブ魚拓を開く。

javascript:((d,s)=>{s=d.createElement('script');s.src='https://neos21.github.io/bookmarklets/dist/open-gyo-tc.js';d.body.appendChild(s)})(document);

Open Hatena Blog Subscribe Page (open-hatena-blog-subscribe-page.js)

javascript:(t=>{t.href="http://blog.hatena.ne.jp/hatenasupport/"+t.host+"/subscribe"})(location);

現在見ているはてなブログの「読者になる」ページを開く。対象ページがはてなブログ製かどうかはチェックしていない。

javascript:((d,s)=>{s=d.createElement('script');s.src='https://neos21.github.io/bookmarklets/dist/open-hatena-blog-subscribe-page.js';d.body.appendChild(s)})(document);

Open YouTube Download Share The Video (open-youtube-download-share-the-video.js)

javascript:(o=>{o.host.includes("youtube")&&(o.href="https://www.savethevideo.com/download?url="+o.href)})(location);

現在見ている YouTube 動画を sharethevideo.com でダウンロードする。

javascript:((d,s)=>{s=d.createElement('script');s.src='https://neos21.github.io/bookmarklets/dist/open-youtube-download-share-the-video.js';d.body.appendChild(s)})(document);

Open YouTube Download y2mate (open-youtube-download-y2mate.js)

javascript:(e=>{e.host.includes("youtube")&&(e.href=e.href.replace("youtube","youtubepp"))})(location);

現在見ている YouTube 動画を y2mate.com でダウンロードする。

javascript:((d,s)=>{s=d.createElement('script');s.src='https://neos21.github.io/bookmarklets/dist/open-youtube-download-y2mate.js';d.body.appendChild(s)})(document);

Open YouTube Listen On Repeat (open-youtube-listen-on-repeat.js)

javascript:(e=>{e.host.includes("youtube")&&(e.href=e.href.replace("youtube","youtuberepeat"))})(location);

現在見ている YouTube 動画を listenonrepeat.com で開きループ再生する。

javascript:((d,s)=>{s=d.createElement('script');s.src='https://neos21.github.io/bookmarklets/dist/open-youtube-listen-on-repeat.js';d.body.appendChild(s)})(document);

Random Check Inputs (random-check-inputs.js)

javascript:((e,a,c)=>{e[a]("[type=radio][name],[type=checkbox][name]").forEach(e=>{void 0===c[e.name]&&(c[e.name]=[]),c[e.name].push(e)}),Object.keys(c).forEach(e=>{c[e][Math.floor(Math.random()*c[e].length)].click()}),e[a]('#finishButton,[value*="次へ"],[value*="送"]').forEach(e=>{e.click()})})(document,"querySelectorAll",{});

ラジオボタン input[type="radio"]・チェックボックス input[type="checkbox"]name 属性ごとに1つランダムにクリックする。

javascript:((d,s)=>{s=d.createElement('script');s.src='https://neos21.github.io/bookmarklets/dist/random-check-inputs.js';d.body.appendChild(s)})(document);

Select Range Touch (select-range-touch.js)

javascript:((h,n,t,c,i,p,r,d,e,o,s,u,g,m,b,f,x,M)=>{s=(o=t=>(t=n.createElement("i"),n.body.appendChild(t),t))(),u=o(),n[t]("touchstart",t=>{r=!0,s[i].cssText=e+"border:1px solid rgba(0,0,255,.2);background:rgba(99,255,255,.2)",u[i].cssText=e,g=t.touches[0].pageX,m=t.touches[0].pageY,b=h.scrollX,f=h.scrollY}),n[t]("touchmove",(t,e,o)=>{r&&(d=!0,x=t.touches[0].pageX,M=t.touches[0].pageY,e=x-g,s[i].left=(e<0?g+e:g)+p,o=M-m,s[i].top=(o<0?m+o:m)+p,s[i].width=Math.abs(e)+p,s[i].height=Math.abs(o)+p)}),n[t]("touchend",(t,e,o,s,a,l)=>{if(r=!1,d)for(d=!1,e=[],s=Math.min(m,M);s<Math.max(m,M);s+=9)for(h.scrollTo(b,f),o=Math.min(g,x);o<Math.max(g,x);o+=9)u[i].top=s+p,u[i].left=o+p,a=u[c](),h.scrollTo(a.left,a.top),a=u[c](),(l=n.elementFromPoint(a.left,a.top))&&!e.includes(l)&&(l.click(),e.push(l))})})(window,document,"addEventListener","getBoundingClientRect","style","px",!1,!1,"position:absolute;top:0;left:0;width:1px;height:1px;pointer-events:none;");

タップとドラッグで選択した範囲にある要素をクリックする。touchstarttouchmovetouchend を監視するのでスマホなどタッチデバイス用。チェックボックスなどを一括チェックする時に。

javascript:((d,s)=>{s=d.createElement('script');s.src='https://neos21.github.io/bookmarklets/dist/select-range-touch.js';d.body.appendChild(s)})(document);

Select Range (select-range.js)

javascript:((i,d,e,r,h,c,g,m,t,o,a,u,b,f,x,M)=>{a=(o=e=>(e=d.createElement("i"),d.body.appendChild(e),e))(),u=o(),d[e]("mousedown",e=>{g=!0,a[h].cssText=t+"border:1px solid rgba(0,0,255,.2);background:rgba(99,255,255,.2)",u[h].cssText=t,b=e.pageX,f=e.pageY,x=i.scrollX,M=i.scrollY}),d[e]("mousemove",(e,t,o)=>{g&&(m=!0,t=e.pageX-b,a[h].left=(t<0?b+t:b)+c,o=e.pageY-f,a[h].top=(o<0?f+o:f)+c,a[h].width=Math.abs(t)+c,a[h].height=Math.abs(o)+c)}),d[e]("mouseup",(e,t,o,a,l,n,p,s)=>{if(g=!1,m)for(m=!1,t=e.pageX,o=e.pageY,a=[],n=Math.min(f,o);n<Math.max(f,o);n+=9)for(i.scrollTo(x,M),l=Math.min(b,t);l<Math.max(b,t);l+=9)u[h].top=n+c,u[h].left=l+c,p=u[r](),i.scrollTo(p.left,p.top),p=u[r](),(s=d.elementFromPoint(p.left,p.top))&&!a.includes(s)&&(s.click(),a.push(s))})})(window,document,"addEventListener","getBoundingClientRect","style","px",!1,!1,"position:absolute;top:0;left:0;width:1px;height:1px;pointer-events:none;");

ドラッグで選択した範囲にある要素をクリックする。mousedownmousemovemouseup を監視するので PC 用。チェックボックスなどを一括チェックする時に。

javascript:((d,s)=>{s=d.createElement('script');s.src='https://neos21.github.io/bookmarklets/dist/select-range.js';d.body.appendChild(s)})(document);

Survey Helpers (survey-helpers.js)

アンケートサイト自動回答ブックマークレット。以下のように個人情報と設定項目を指定し、このブックマークレットを読み込んで使う。

javascript:((d,s,e)=>{
  e=()=>{
    N21SH({
      cityName:'東京',
      districtName:'足立',
      age:25,
      ageRange:20,
      birthYear:1993,
      birthMonth:2,
      birthDate:24,
      gender:'女',
      marriage:'未婚',
      jobRegExp:'正社|社員'
    },{
      loop:5
    })
  };
  s=d.createElement('script');
  s.onload=e;
  s.src='https://neos21.github.io/bookmarklets/dist/survey-helpers.js';
  d.body.appendChild(s)
})(document);

1行にすると以下のようになる。

javascript:((d,s,e)=>{e=()=>{N21SH({cityName:'東京',districtName:'足立',age:25,ageRange:20,birthYear:1993,birthMonth:2,birthDate:24,gender:'女',marriage:'未婚',jobRegExp:'正社|社員'},{loop:5})};s=d.createElement('script');s.onload=e;s.src='https://neos21.github.io/bookmarklets/dist/survey-helpers.js';d.body.appendChild(s)})(document);

YouTube Auto Click Not Interested Or Don't Recommend Channel (youtube-auto-click-not-interested-or-dont-recommend-channel.js)

javascript:((o,r,n,t)=>{t=o[r]("ytd-popup-container"),o.body.insertAdjacentHTML("beforeend","<input type=checkbox id=z accesskey=z style=position:absolute;top:0;right:0;z-index:9999>"),new MutationObserver(e=>{1<t[r+"All"]("ytd-menu-service-item-renderer").length&&setTimeout(e=>t[r]("tp-yt-iron-dropdown[focused]")?.[r+"All"]("yt-formatted-string").forEach(t=>t.textContent!=(o[r]("#z").checked?"チャンネルをおすすめに表示しない":"興味なし")||n||(n=!0,setTimeout(e=>n&&(t.parentNode.parentNode.click(),n=!1),5))),5)}).observe(t,{attributes:!0,subtree:!0})})(document,"querySelector",!1);

YouTube トップ画面で動画のサムネイル右下に出る「…」アイコンをクリックすると自動的に「興味なし」か「チャンネルをおすすめに表示しない」をクリックする。

画面右上に登場するチェックボックスを付けると「チャンネルをおすすめに表示しない」を選択するようになる。

javascript:((d,s)=>{s=d.createElement('script');s.src='https://neos21.github.io/bookmarklets/dist/youtube-auto-click-not-interested-or-dont-recommend-channel.js';d.body.appendChild(s)})(document);

YouTube Auto Click Not Interested (youtube-auto-click-not-interested.js)

javascript:(()=>{let r=!1,t=document.querySelector("ytd-popup-container");new MutationObserver(e=>{1<t.querySelectorAll("ytd-menu-service-item-renderer").length&&setTimeout(e=>t.querySelector("tp-yt-iron-dropdown[focused]")?.querySelectorAll("yt-formatted-string").forEach(t=>{"興味なし"!=t.textContent||r||(r=!0,setTimeout(e=>{r&&(t.parentNode.parentNode.click(),r=!1)},5))}),5)}).observe(t,{attributes:!0,subtree:!0})})();

YouTube トップ画面で動画のサムネイル右下に出る「…」アイコンをクリックすると自動的に「興味なし」をクリックする。

javascript:((d,s)=>{s=d.createElement('script');s.src='https://neos21.github.io/bookmarklets/dist/youtube-auto-click-not-interested.js';d.body.appendChild(s)})(document);

Links