LoginSignup
1
3

More than 5 years have passed since last update.

Twitchで #2000 エラーが出たときに自動復帰するユーザースクリプト

Posted at

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('監視開始')
  }
  })();
1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3