動画の自動再生が歯抜け再生されるのがイヤ
最近、といっても1年位前からだがYoutubeを頻繁に見始めた。
気に入ったチャンネルが10個くらいあってそれを巡回しているだけなのだが、少し間が開くとチャンネルに2,3個動画が追加されていたりして。
これだけ連続で見て最新動画に追いつきたい。だけど自動再生は歯抜けで過去の動画に飛ばしたりする動き。プチストレス。
そのプチストレスをgreasemonkyスクリプトで解決してみた。
greasyformに登録なんかもしちゃったりして。
youtube-create-sorted-playlist-related-channnels-when-clicked
スクリプト
// ==UserScript==
// @name youtube-create-sorted-playlist-related-channnels-when-clicked
// @namespace Violentmonkey Scripts
// @match https://www.youtube.com/*
// @grant none
// @version 1.0
// @author -
// @description 2023/9/18 17:09:04
// @require https://code.jquery.com/jquery-1.12.4.js
// @license MIT
// ==/UserScript==
var enable_flag = true; // until page reload
var str_enablebtn_txt = "#auto create channnel's playlist: ";
var func_tmp01 = function(str_link) {
str_link += "&list=UL01234567890";
document.location = str_link;
};
document.addEventListener('yt-navigate-finish', () => {
// enable / disable btn
var place = $(document).find("ytd-playlist-panel-renderer > div:nth-child(1), yt-chip-cloud-renderer > div:nth-child(1), body > yt-live-chat-app");
var enable_btn = $('<span class="ycsprcwc_btn01" style="display: inline-block; padding: .25em .5em; color:#FFF; font-size: 1.5em; background: #333; border: 2px dotted #FFF; border-radius: .35em; text-decoration: underline; cursor: pointer;">'+str_enablebtn_txt+((enable_flag)?"on":"off")+'</span>');
if ($('body .ycsprcwc_btn01:visible').length < 1) {
place.prepend(enable_btn);
}
// Check URL
var str_link = String(window.location.href);
if (/\&list\=/.test(str_link)) { return; }
if (/watch\?v\=/.test(str_link)) {
if (enable_flag) {
func_tmp01(str_link);
}
}
});
$(document).on("click", ".ycsprcwc_btn01", (e) => {
if (enable_flag) {
enable_flag = false;
} else {
enable_flag = true;
}
$('.ycsprcwc_btn01').text(str_enablebtn_txt+((enable_flag)?"on":"off"));
});
解説と感想
func_tmp01のとこで謎の文字列をURLに添加してるが、ここを変えれば自分好みの順番に再生リストをソートできるぞ。
基本はリロードが余計に走らないようにURL判定して、有効化フラグを見つつ、URLを書き換えているだけ。
トリガは動画クリックなど、ページ遷移でURLが変化したときに発火されるイベント。
有効化/無効化ボタンはいちいちgreasemonky側で制御させるのが面倒な一時的な利用が多いと思われたため追加した。
フラグはF5など自前でページリロードを行うまでは保持してくれるようだ。(通常のリンククリックページ遷移ではリセットされない)
自分でGreaseMonkeyのスクリプトを作るのは初めてだったが、簡単にできてしまった。
GreaseMonkyとは、要するにブラウザのcss差し替えプラグインのjs版だと捉えていい。
特定のサイトで自分の好きなスクリプトを動かすことができる。
実際、こんなに簡単なコードで1年来の悩みが解決できてしまった。
ほかに、YouTubeで自動翻訳字幕(日本語)を常にオンなんかがよく海外動画を見る人には便利かもしれない。
つかおう、GreaseMonkey!