YouTubeで現在の動画から古い順・最新順で再生するブックマークレット

概要

YouTubeの動画ページで以下のブックマークレットを実行すると、現在の動画を基点にチャンネルの古い順・最新順の再生リストを再生します。

やってることはURLに再生リストのIDを書き足してるだけです。

YouTubeの仕様変更で使えなくなる可能性があります。
動作確認:Google Chrome(Windows)

仕様

  • indexの値がめちゃくちゃになる(謎)
  • 古い順で最後の動画を再生後次の動画を再生しようとしてバグる

ブックマークレット

現在の動画から古い順で再生

登録用→ YouTube現在の動画から古い順で再生

javascript:(()=>{q=new URLSearchParams(location.search);q.set('list','UL01234567890');q.delete('index');location.search=q.toString()})();

現在の動画から最新順で再生

登録用→ YouTube現在の動画から最新順で再生

javascript:(()=>{id=document.querySelector('#infocard-videos-button a').getAttribute('href').match(/channel\/(.+)\/videos/)[1];list=id.charAt(0)+'U'+id.slice(2);l=location;q=new URLSearchParams(l.search);q.set('list',list);q.delete('index');l.search=q.toString()})();

蛇足

YouTubeチャンネルにはデフォルトで古い順・最新順の再生リストが存在しています(2023/08/30現在)。

  • 古い順:UL01234567890
  • 最新順:チャンネルIDの2文字目をUにしたもの

URLパラメータ&list=の後に付ければ表示されます。

古い順の再生リストはリストページが表示できなかったり、最後の動画を再生後に止まらなかったりとメンテナンスされてなさそう。
チャンネルIDはチャンネルURLのリンクから取得していますが、ハンドルURLが主流になりつつあるのでAPI使わずに今後も取得できるかはわかりません。

ソース

// 現在の動画から古い順で再生
const query = new URLSearchParams(location.search);
query.set('list', 'UL01234567890');
query.delete('index');
location.search = query.toString();

// 現在の動画から最新順で再生
const channelId = document.querySelector('#infocard-videos-button a').getAttribute('href').match(/channel\/(.+)\/videos/)[1];
const latestListId = channelId.charAt(0) + 'U' + channelId.slice(2);
const query = new URLSearchParams(location.search);
query.set('list', latestListId);
query.delete('index');
location.search = query.toString();