YouTube Playlist Remover
YouTube プレイリスト用のツールスクリプトです。YouTube Playlist Saver および YouTube Playlist Filter との併用を想定しています。 スクロールによってスキャンされた範囲(Range)のうち、フィルタリングによって現在「表示されている」動画を、プレイリストから一括削除する機能を提供します。
機能
一括削除 (Remove Items)
- Remove Items ボタンをクリックすると、**「スキャン済み範囲(画面より上)」および「現在表示されている画面内」の動画のうち、「表示されている(フィルタで隠されていない)」**動画を削除キューへ登録して処理を開始します。
- 安全・確実な設計:
- UI操作のエミュレーション: このスクリプトはDOM要素を直接削除したり隠したりするのではなく、**YouTube標準の削除メニューを自動的にクリック操作(エミュレーション)**します。これにより、YouTube側の内部データとの不整合を防ぎ、安全に削除を実行します。
- フィルタとの連携: YouTube Playlist Filter によって非表示 (
display: none) になっている動画は、たとえ範囲内にあっても削除操作の対象にしません。 - Only MATCHED オプション: このチェックボックスをONにすると、YouTube Playlist Filter によって
[MATCHED]バッジが付与された動画のみを削除対象に限定します。特定の検索条件に合致する動画だけを一括削除したい場合に便利です。 - 手動追加キュー: 削除中はボタン表記が
Add Itemsに変わり、押した時点の未登録候補だけをキューへ追加できます。明示的に押さない限り、新しい候補は自動ではキューに入りません。 - 失敗時の再追加: メニュー取得失敗やタイムアウトなどの一時的な失敗で削除できなかった動画は完了扱いにせず、あとで
Add Itemsを押すと再びキューへ追加できます。 - スクロールは失敗時のみ: 通常はその場でメニュー操作を試み、最初の試行でメニューを開けなかった動画だけをフォールバックでスクロールして再試行します。
- 視覚的なフィードバック: 実行中は現在処理中の動画の連番(#Index)が一時的に赤太字に変更され、パネルの
Statusに現在の動画番号と残キュー数が表示されます。 - ⚠️ 注意: ボタンを押すと確認ダイアログなしで即座に削除されます。操作にはご注意ください。
- v0.1.47: Playlist Liteと同様にマウスオーバーでのバージョン表示強調とダブルクリックによる縮小機能を実装。Activeインジケーターを削除。
- v0.1.65: メモリリーク対策として、不要になったイベントリスナー(input, change, resize)を適切に解除するように変更
- 確実な削除同期:
- 削除ボタンのエミュレーション後、アイテムがリストから実際に削除される(YouTube側によって消される)のを待機してから次の動画へ進みます。
- これにより、リストの読み込み状態や順序が崩れるのを防ぎ、確実な一括処理を可能にします。
インストール
- Tampermonkey などの拡張機能がインストールされていることを確認します。
- 以下のリンクをクリックしてインストールします。
👉 Install YouTube Playlist Remover
このスクリプトは YouTube 全体にインストールされますが、主要機能が有効になるのはプレイリストページのみです。
使い方
- プレイリストを開き、不要な動画が画面の上部に隠れるまでスクロールします(あるいはフィルタ機能で絞り込みます)。
- 右下の Playlist Remover パネルを確認します。
- プレイリスト以外のページでは
Inactive表示となり、パネル内容は閉じた状態になります。 - 初回注入時は 1〜3 秒のランダムディレイ後にパネルが表示されます。
- プレイリスト以外のページでは
Removable: N itemsと表示され、現在の削除候補数が確認できます。削除中は、この値が「いまAdd Itemsで追加できる候補数」を示します。- Remove Items ボタンを押して実行します。削除中にさらに対象を追加したいときだけ、同じボタンが
Add Itemsに変わった状態で押して、現在の候補を手動でキューに追加します。
更新履歴
- v0.1.75: 統計計算 (calculateStatistics) のパフォーマンスを改善し、不要な配列コピーを削減しました。
- v0.1.74: フローティングUIの描画パフォーマンス改善のため、透過および影効果を削除しました。
- v0.1.73: デバウンス期間を2000msに変更
- v0.1.71: 削除前の自動スクロールを廃止し、まず現在位置のままメニュー操作を試行するように変更。メニュー取得に失敗した動画だけをスクロールして 1 回だけ再試行するように改善。
- v0.1.70: 削除失敗した動画を完了扱いにしないように変更し、削除中に
Add Itemsを押せば再キュー投入して再試行できるように改善。削除中のRemovable表示は「いま追加できる候補数」に統一。 - v0.1.69: 削除方式を手動キュー拡張型に変更。通常時ボタンを
Remove Items、削除中ボタンをAdd Itemsに変更し、明示操作でのみ追加候補をキューへ取り込むように改善。 - v0.1.68: スクロール直後とメニューボタンクリック直後に 100ms の短い待機を追加し、表示中のメニュー popup を複数候補から正しく選ぶように改善。
- v0.1.67: メニューオープン後の待機を 300ms に短縮し、クリック前待機と
Wait for removalOFF 時の専用クールダウンを削除。共通クールダウンも 300ms に短縮。 - v0.1.66:
Wait for removal有効時は、要素の消滅を検知したら追加待機なしで即座に次の処理へ進むように調整。 - v0.1.48: 「Only MATCHED」オプションを追加。YouTube Playlist Filter と連携し、一致した動画のみを削除対象に限定できる機能を提供。
- v0.1.47: フローティングUIが画面外にある場合は、画面内に自動的に位置を調整して表示するようにしました。
- v0.1.47: UIタイトルバーの機能を統一し、マウスオーバーの協調表示、ダブルクリックによる最小化・全体表示の切り替えを実装。Active/Inactive表示を削除し、非アクティブ時は自動的に最小化するように変更しました。
- v0.1.45: 削除メニューの項目をクリックする直前に赤枠でハイライトし、短い待機時間を挿入して視覚的な確認をしやすく改善。
- v0.1.34: メニューのタイムアウトを10秒に延長。「Wait for removal」オプションを追加(OFF時は1秒ウェイト)。
- v0.1.30: 初期化ディレイを 1〜3 秒のランダムに変更し、同時起動の負荷を分散。
- v0.1.25: 一括削除の多重実行を防止し、実行中の再クリックで中断できるように変更。
- v0.1.17: YouTube全体にインストールしつつ、プレイリストページのみでアクティブ化するように変更。アクティブ状態に応じてパネルの開閉と表示を自動連動。
- v0.1.15: 一括削除の実行中、削除対象となる動画の連番(#Index)を赤太字でハイライト表示するように改善。
- v0.1.14: 削除進捗の表示(x/y)を、削除成功数ではなく処理済み件数ベースに変更し、進行状況がよりリアルタイムに反映されるように改善。
- v0.1.13: 削除操作の開始時に、対象の動画コンテナ (
ytd-playlist-video-renderer) にもフォーカスを当てるように変更。 - v0.1.12: クリック操作のエミュレーション前にフォーカス移動 (
.focus()) を追加。より人間らしい操作に近づけ、一部のフォーカス依存UIへの対応を強化。 - v0.1.11: 削除実行中(Removing...)のステータス表示に、現在処理中の動画番号(#Index)を表示するように改善。
- v0.1.10: 一括削除時、DOMからアイテムが実際に消えるのを待機するように変更(Optimistic UIの廃止)。これにより削除の確実性を向上。
- v0.1.9: レイアウトの崩れを防ぎ安定性を高めるため、一括削除の順序を「下から上(逆順)」に変更。
- v0.1.8: メニューのロード待機、可視性チェック、既存ステートのリセット処理を強化。
- v0.1.7: メニュー開閉とアイテムクリックのエミュレーションを強化。
- v0.1.6: 公開プレイリストなどで表示されるYouTubeネイティブの確認ダイアログ ("Delete this video from playlist?") を自動で処理する機能を追加。
- v0.1.5: 削除対象がない場合に表示されていたアラート (
alert) も削除。 - v0.1.4: 確認ダイアログ (
confirm) を削除し、ボタン押下後すぐに削除を実行するように変更。⚠️ 注意: 誤操作でもすぐに削除が開始されます。 - v0.1.3: 初回公開。