Automatically switches YouTube's recommendation column to either "From the series", "from (channel name)", or "Related"
目前為
// ==UserScript==
// @name Youtube Hide Recomended (English)
// @name:ja YouTubeのリコメンド自動切換・非表示(英語環境用)
// @version 2025-05-19
// @description Automatically switches YouTube's recommendation column to either "From the series", "from (channel name)", or "Related"
// @description:ja YouTubeのリコメンド欄を自動でFrom the series、from (チャンネル名)、Relatedのどれかに切り替えます
// @author hirhirbyrd
// @match https://www.youtube.com/*
// @license MIT
// @namespace https://greasyfork.org/users/1467931
// ==/UserScript==
(function() {
'use strict';
let chname = ''; // ここに JSON から取得した author を代入する
const getAuthorFromJSON = () => {
const microformatScript = document.querySelector('#microformat script[type="application/ld+json"]');
if (microformatScript) {
try {
const jsonData = JSON.parse(microformatScript.textContent);
if (jsonData.author) {
chname = jsonData.author;
console.log("チャンネル名を取得:", chname);
}
} catch (e) {
console.error("author名の取得に失敗:", e);
}
}
};
// 初期読み込み時に取得
window.addEventListener('load', () => {
setTimeout(getAuthorFromJSON, 1000); // 少し待ってから実行
});
const observer = new MutationObserver(() => {
// author がまだ取得できていない場合は処理をスキップ
if (!chname) return;
const lists = document.querySelector('div#secondary-inner.style-scope.ytd-watch-flexy');
const elementC = document.querySelector('div#related iron-selector#chips yt-chip-cloud-chip-renderer:has(#text[title="From the series"])');
const elementA = document.querySelector('div#related iron-selector#chips yt-chip-cloud-chip-renderer:has(#text[title="From ' + chname + '"])');
const elementAA = document.querySelector('div#related iron-selector#chips yt-chip-cloud-chip-renderer:has(#text[title="提供: ' + chname + '"])');
const elementB = document.querySelector('div#related iron-selector#chips yt-chip-cloud-chip-renderer:has(#text[title="Related"])');
if (elementC) {
if (elementC.getAttribute('aria-selected') === 'false') {
lists.hidden = false;
elementC.click();
}
} else if (elementA) {
if (elementA.getAttribute('aria-selected') === 'false') {
lists.hidden = false;
elementA.click();
}
} else if (elementAA) {
if (elementAA.getAttribute('aria-selected') === 'false') {
lists.hidden = false;
elementAA.click();
}
} else if (elementB) {
if (elementB.getAttribute('aria-selected') === 'false') {
lists.hidden = false;
elementB.click();
}
} else {
lists.hidden = true;
return;
}
});
observer.observe(document, { childList: true, subtree: true });
})();