Twitchをライブ視聴中に
Twitchマシンのコンセントが抜けてしまったようです。しばらく経ってから再度お試しください。 (エラーコード #2000)
というエラーが出たときに再生ボタンを押してすぐに再接続するスクリプトです。
動作検証環境
- Firefox 64
- Tampermonkey v4.8.5849
- Twitch非ログイン状態
コード
(gist連携消えたんでしたっけ)
// ==UserScript==
// @name Twitch replay with 2000 error
// @namespace http://tampermonkey.net/
// @version 0.1
// @description #2000 エラーが出たときに再生ボタンをクリックする
// @author khsk
// @match https://www.twitch.tv/*
// @grant none
// ==/UserScript==
(function() {
'use strict';
// まずはメイン画面のロード完了を待つ
const mo = new MutationObserver((data1, data2) => {
const videoPlayer = document.querySelector('.video-player')
if (videoPlayer) {
errorWatcher()
mo.disconnect();
return
}
})
mo.observe(document.body, {
childList: true, subtree: true
});
// ビデオ監視処理定義
const errorWatcher = () => {
const errorMessage = 'Twitchマシンのコンセントが抜けてしまったようです。しばらく経ってから再度お試しください。 (エラーコード #2000)'
// 検知クリックによる変更検知無限ループを防ぐためのフラグ。筋が悪い後から追加の場当たり処理
let isCallbackClicked = false
const videoPlayer = document.querySelector('.video-player')
if (!videoPlayer) {
console.log('no player')
return
}
const mo = new MutationObserver((data1, data2) => {
const message = document.querySelector('.video-player__container .pl-error p')
if (!message) {
isCallbackClicked = false
return
}
if (message.textContent != errorMessage) {
isCallbackClicked = false
return
}
if (isCallbackClicked) {
return
}
document.querySelector('.qa-pause-play-button').click()
isCallbackClicked = true
console.log('再再生しました')
});
const options = {childList: true, subtree:true};
mo.observe(videoPlayer, options);
console.log('監視開始')
}
})();