Greasy Fork镜像 is available in English.

Auto switch to chat for offline channels

Automaticaly switches to the chat view and closes the "Most Recent Video" and "Whatch now" popups when joining an offline channel.

// ==UserScript==
// @name         Auto switch to chat for offline channels
// @namespace    https://greasyfork.dpdns.org/scripts?set=586259
// @version      1.3.2
// @description  Automaticaly switches to the chat view and closes the "Most Recent Video" and "Whatch now" popups when joining an offline channel.
// @author       Sonyo
// @match        http*://www.twitch.tv/*
// @grant        none
// @license      MIT
// ==/UserScript==


function delay(milliseconds) {
    return new Promise(resolve => {
        setTimeout(resolve, milliseconds);
    });
}

async function getElement(selector) {
    var element = document.querySelector(selector);
    let count = 0;
    while (element === null) {
        await delay(1000);
        element = document.querySelector(selector);
        count++;
        if (count > 15) {
            return null;
        }
    }
    return element;
}

async function getNthElement(selector, n) {
    var elements = document.querySelectorAll(selector);
    let count = 0;
    while (elements.length === 0) {
        await delay(1000);
        elements = document.querySelectorAll(selector);
        count++;
        if (count > 15) {
            return null;
        }
    }
    if (elements.length >= n - 1)
        return elements[n];
    return null;
}

void async function () {
    'use strict';

    let prevUrl = undefined;
    setInterval(async () => {
        const currUrl = window.location.href;
        if (currUrl != prevUrl) {
            if (currUrl.includes(prevUrl)) // User switching to About or other page
                return;
            setup(prevUrl === undefined);
            prevUrl = currUrl;
        }
    }, 1000);
}();

async function setup(firstTime) {
    let button = await getNthElement(".cmTyEs", 4);
    if (button === null) // channel is online
        return;
    button.click();
    button = await getElement(".WDQCx");
    if (button === null) // no videos
        return;
    button.lastChild.click();
    button = await getElement(".cHbtnp");
    button.lastChild.click();
}
长期地址
遇到问题?请前往 GitHub 提 Issues,或加Q群1031348184

赞助商

Fishcpy

广告

Rainyun

注册一下就行

Rainyun

一年攒够 12 元