https://chromewebstore.google.com/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo?hl=ja
https://greasyfork.org/ja/scripts/by-site/youtube.com
使用しないでね。と書いておく。
つかったことがないので、動くかどうかわかりません。と書いておく。
広告を見たい長さを調節。
```
// ==UserScript==
// @name YouTube Ad Auto-Skipper
// @namespace http://tampermonkey.net/
// @version 0.1
// @description Automatically clicks the skip ad button on YouTube
// @match https://www.youtube.com/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
function clickSkipButton() {
const skipButton = document.querySelector('.ytp-ad-skip-button');
if (skipButton) {
skipButton.click();
}
}
// 広告スキップボタンを探して1秒ごとにクリックを試みる
setInterval(clickSkipButton, 1000);
})();
```
// ==UserScript==
// @name YouTube Ad Skipper with Player Z-Index Fix
// @namespace http://tampermonkey.net/
// @version 0.6
// @description Automatically skips YouTube ads, resumes playback, and fixes player z-index
// @match https://www.youtube.com/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
let skipAttempted = false;
function clickSkipButton() {
const skipButton = document.querySelector('.ytp-ad-skip-button') ||
document.querySelector('.ytp-skip-ad-button') ||
document.querySelector('button[class*="ytp-ad-skip-button"]') ||
document.querySelector('button[class*="ytp-skip-ad-button"]');
if (skipButton && !skipButton.disabled) {
console.log('Skip button found and clicked');
skipButton.click();
skipAttempted = true;
setTimeout(resumePlayback, 5000); // 5秒後に再生を再開
} else {
console.log('No skip button found or button is disabled');
}
}
function resumePlayback() {
if (skipAttempted) {
const video = document.querySelector('video');
if (video) {
console.log('Attempting to resume playback');
video.click();
video.play().catch(e => console.log('Failed to resume playback:', e));
document.querySelector('ytd-watch-flexy[player-unavailable] #player-container-outer.ytd-watch-flexy').style.visibility = 'visible';
bringPlayerToFront();
}
skipAttempted = false;
}
}
function bringPlayerToFront() {
const player = document.querySelector('.html5-video-player');
if (player) {
player.style.zIndex = '2147483647'; // 最大のz-index値
console.log('Player brought to front');
} else {
console.log('Player not found');
}
}
// 1秒ごとにチェック
setInterval(clickSkipButton, 1000);
observer.observe(document.body, { childList: true, subtree: true });
console.log('YouTube Ad Skipper with Player Z-Index Fix script is running');
})();
F12を押し、コンソールに以下を入力.
document.addEventListener('contextmenu',function(e){e.stopPropagation();},true);
document.getElementById('error-screen').style.display = 'none';
document.querySelector('ytd-watch-flexy[player-unavailable] #player-container-outer.ytd-watch-flexy').style.visibility = 'visible';
function checkPlayerState() {
const player = document.getElementById('movie_player');
const isPlaying = player.classList.contains('playing-mode');
if (!isPlaying) {
const playButton = player.querySelector('.ytp-play-button');
if (playButton) {
playButton.click();
}
}
}
setInterval(checkPlayerState, 1000); // 1秒ごとに状態をチェック
// ==UserScript==
// @name Website Code Override
// @namespace http://tampermonkey.net/
// @version 0.1
// @description Overrides specific code on a website
// @match https://example.com/*
// @grant unsafeWindow
// ==/UserScript==
(function() {
'use strict';
// 1. 既存の関数や変数の再定義
if (typeof unsafeWindow.existingFunction === 'function') {
unsafeWindow.existingFunction = function() {
console.log('This function has been overridden');
// 新しい実装をここに記述
};
}
// 2. スクリプトインジェクション
function injectScript(func) {
const script = document.createElement('script');
script.textContent = `(${func.toString()})();`;
document.body.appendChild(script);
document.body.removeChild(script);
}
injectScript(function() {
// このコンテキストはページのグローバルスコープで実行されます
// 例: 既存の関数をオーバーライド
if (typeof window.anotherExistingFunction === 'function') {
const original = window.anotherExistingFunction;
window.anotherExistingFunction = function() {
console.log('Function called with arguments:', arguments);
return original.apply(this, arguments);
};
}
// 例: 新しい関数や変数を定義
window.newFunction = function() {
console.log('This is a new function added to the page');
};
// 例: イベントリスナーの追加や変更
document.addEventListener('click', function(e) {
console.log('Document clicked at:', e.clientX, e.clientY);
});
});
console.log('Website Code Override script is running');
})();
// ==UserScript==
// @name YouTube Error Screen Reloader
// @namespace http://tampermonkey.net/
// @version 1.0
// @description YouTube のエラー画面が表示された場合に自動でリロードします。
// @author Your Name
// @match *://*.youtube.com/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
// エラー画面の要素を取得する
const errorScreen = document.getElementById('error-screen');
// エラー画面が表示されたら自動でリロードするイベントリスナーを追加する
errorScreen.addEventListener('DOMNodeInserted', function() {
// エラー画面が表示された場合に実行される
// 関数の説明: エラー画面が表示された場合、自動的にリロードを行うように設定する
function reloadAutomatically() {
// リロードを実行する
location.reload();
}
// 1秒後に自動リロードを実行する
setTimeout(reloadAutomatically, 1000);
console.log('エラー画面表示確認。自動でリロードします。');
// エラー画面が非表示になったらイベントリスナーを削除する
errorScreen.addEventListener('DOMNodeRemoved', function() {
// イベントの説明: エラー画面が削除された場合に実行される
console.log('エラー画面が非表示になりました。');
});
});
})();