ラベル bookmarklet の投稿を表示しています。 すべての投稿を表示
ラベル bookmarklet の投稿を表示しています。 すべての投稿を表示

2025年9月2日火曜日

Youtubeのチャンネル登録者を一括で削除するブックマークレット

Youtubeのチャンネル登録者を一括で削除するブックマークレット

概要

過去にアクティビティから削除する方法を紹介しました
今回はブックマークレットで削除する方法を紹介します

環境

  • Chrome 139.0.7258.155

ブックマークレット

javascript:(function(){
  let openBtn=document.querySelector('a[href="/feed/channels"]');
  if(openBtn) {
    openBtn.click();
    console.log("チャンネル一覧を開きました");
  }
  setTimeout(()=>{
    let buttons=document.querySelectorAll('#notification-preference-button > ytd-subscription-notification-toggle-button-renderer-next > yt-button-shape > button');
    let i=0;
    function unsubscribe(){
      if(i<buttons.length){
        buttons[i].click();
        console.log(`通知設定ボタンをクリック: ${i+1}/${buttons.length}`);
        setTimeout(()=>{
          let confirmBtn=document.querySelector('#items > ytd-menu-service-item-renderer:nth-child(3)');
          if(confirmBtn) {
            confirmBtn.click();
            console.log(`登録解除メニューをクリック: ${i+1}/${buttons.length}`);
            setTimeout(()=>{
              let dialogBtn=document.querySelector('#confirm-button > yt-button-shape > button > yt-touch-feedback-shape > div');
              if(dialogBtn) {
                dialogBtn.click();
                console.log(`確認ダイアログをクリック: ${i+1}/${buttons.length}`);
              }
              i++;
              if(i<buttons.length){
                setTimeout(unsubscribe,1500);
              } else {
                console.log("すべてのチャンネル登録解除が完了しました");
                alert("すべてのチャンネル登録解除が完了しました");
              }
            },500);
          } else {
            console.log(`登録解除メニューが見つかりません: ${i+1}`);
            i++;
            setTimeout(unsubscribe,1500);
          }
        },1000);
      }
    }
    unsubscribe();
  },1500);
})();

最後に

スクロールに対応していないので大量にチャンネル登録している場合には一回だとダメかもしれません

また DOM が変わり CSS セレクタ情報が変わった場合には変更する必要があります

2024年12月4日水曜日

Bookmarklet で jQuery を使う方法

Bookmarklet で jQuery を使う方法

概要

もしページ内ですでに読み込まれている場合はそのまま使えます
読み込んでいない場合はブックマークレット側で読み込めば使えるようになります

環境

  • Chrome 131.0.6778.86

ブックマークレット

javascript:(function() {
    if (!window.jQuery) {
        let script = document.createElement('script');
        script.src = 'https://code.jquery.com/jquery-3.6.0.min.js';
        script.type = 'text/javascript';
        script.onload = runBookmarklet;
        document.getElementsByTagName('head')[0].appendChild(script);
    } else {
        runBookmarklet();
    }
    function runBookmarklet() {
        alert('jQuery バージョン: ' + $.fn.jquery);
    }
})();

最後に

他のライブラリも同じ仕組みで読み込めると思います
バージョンなどは面倒ですが直接書き込むしかないです

2024年12月3日火曜日

サイト内の画像だけを抽出し表示するブックマークレット

サイト内の画像だけを抽出し表示するブックマークレット

概要

上からずらっと表示します

環境

  • Chrome 131.0.6778.86

ブックマークレット

javascript:(function() {
    const images = Array.from(document.querySelectorAll('img'));
    if (images.length === 0) {
        alert('画像が見つかりませんでした');
        return;
    }
    document.body.innerHTML = '';
    document.body.style.margin = '0';
    document.body.style.padding = '0';
    document.body.style.backgroundColor = 'black';
    images.forEach(img => {
        const newImg = document.createElement('img');
        newImg.src = img.src;
        newImg.style.display = 'block';
        newImg.style.margin = '10px auto';
        newImg.style.maxWidth = '90%';
        newImg.style.height = 'auto';
        document.body.appendChild(newImg);
    });
    alert(`${images.length} 個の画像を表示しました`);
})();

最後に

画像だけシンプルに表示したい場合に使えます
スタイルも全部解除するのでどんなページにも使えるはずです

2024年12月2日月曜日

GIGOのオンクレでプレイ中のプライズのみ表示するブックマークレット

GIGOのオンクレでプレイ中のプライズのみ表示するブックマークレット

概要

ブックマークレットを紹介します
DOM が変わった場合は適宜クラス名などを変更してください

環境

  • Chrome 131.0.6778.86

ブックマークレット

javascript:(function() {
    const targetUlClass = 'prizes__list';
    var allListItems = document.querySelectorAll(`ul.${targetUlClass} > li`);
    allListItems.forEach(function(li) {
        var spans = li.querySelectorAll('span');
        var hasTargetBackground = false;
        spans.forEach(function(span) {
            var bgColor = window.getComputedStyle(span).backgroundColor;
            if (bgColor === 'rgb(255, 226, 108)') {
                hasTargetBackground = true;
            }
        });
        if (hasTargetBackground) {
            li.style.display = '';
        } else {
            li.style.display = 'none';
        }
    });
    var highestIntervalId = setInterval(() => {}, 1000);
    for (var i = 0; i <= highestIntervalId; i++) {
        clearInterval(i);
    }
})();

最後に

ページのリロードする API のコールも停止しているので適宜手動でリロードしてください

2024年11月27日水曜日

chrome のブックマークレットでボタンを押したあとにinputに値を入力しイベントを強制発火する方法

chrome のブックマークレットでボタンを押したあとにinputに値を入力しイベントを強制発火する方法

概要

テキスト入力用のフォームなどにイベントが設定されてある場合はブックマークレットでは強制的にイベントを発火させる必要があります

環境

  • macOS 15.1.1
  • Google Chrome 131.0.6778.86

ブックマークレット(js)

javascript:(function(){
    var button = document.querySelector('input.pc-tab__hidden-input[type="checkbox"][name="pnav-group"]');
    if (button) {
        button.click();
    } else {
        alert('ボタンが見つかりません');
        return;
    }
    setTimeout(function() {
        var input = document.getElementById('search-text');
        if (input) {
            input.value = 'スイカゲーム';
            var event = new Event('input', { bubbles: true });
            input.dispatchEvent(event);
        } else {
            alert('入力フィールドが見つかりません');
        }
    }, 500);
})();

chrome への登録

あとは chrome のブックマークへ上記 Javascript を登録すれば OK です

最後に

ブックマークレットは対象のURLを開いてから実行する必要があるので注意してください

ブックマークレットだけで特定の URL を開いた上で JavaScript を実行することは難しいようです

ボタンを押してからテキストフィールドに入力するまでに0.5秒待っていますが画面がうまく動作しない場合は値を調整してください