您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Предоставляет настройки камеры/микрофона в сервисе Яндекс.Телемост.
当前为
// ==UserScript== // @name Телемост.Помощник // @description Предоставляет настройки камеры/микрофона в сервисе Яндекс.Телемост. // @version 1.0.0 // @author Ivan Klochko // @grant none // @license MIT // @include https://telemost.yandex.ru/* // @namespace https://gf.qytechs.cn/users/1186964 // ==/UserScript== /** * Предоставляет настройки для сервиса Яндекс.Телемост. */ let telemostHelper = { /** * Номер активной камеры. * * Если на вашем компьютере 2 или более вебкамер, здесь вы можете задать * номер нужной вам камеры. Для этого можно посмотреть выпадающий список * с камерами во всплывающем окне настроек. * Чтобы выключить камеру при входе во встречу - укажите 0. * * @var int */ cameraNum: 2, /** * Состояние микрофона по умолчанию (при входе во встречу). * * 0 - выключен, * 1 - включен. * * @var int */ micStateDefault: 0, /** * Id интервала. * * Интервал используется для проверки, готова ли страница для запуска скрипта. * * @var int */ intervalId: 0, /** * Контейнер содержимого всплывающего окна. * * @var object */ modalContent: null, /** * Инициализирует настройки. */ attach: function() { const _self = this; this.intervalId = setInterval(function() { _self.changeSettings(); }, 500); }, /** * Приостанавливает выполнение скрипта. * * @param int duration. * Продолжительность паузы (мсек). * * @return Promise * Promise объект. */ delay: function(duration) { return new Promise((resolve) => { setTimeout(resolve, duration); }); }, /** * Открывает окно настроек и меняет их. */ changeSettings: function() { const _self = this; let btnSettings = document.querySelector('div[class*="toolbar"] button[title="Ещё"]'); if (btnSettings) { btnSettings.click(); btnSettings.blur(); btnSettings = document.querySelector('.Popup2 div[title="Открыть настройки"]') } if (!btnSettings) { return; } clearInterval(this.intervalId); this.changeMicState(); if (0 === this.cameraNum) { this.changeCameraState(); return; } btnSettings.click(); this.modalContent = document.querySelector('.Modal-Content'); this.modalContent.style.opacity = 0; Promise.resolve() .then(() => _self.delay(50)) .then(() => _self.openCameraSettings()) .then(() => _self.delay(50)) .then(() => _self.switchCamera()) .then(() => _self.delay(900)) .then(() => _self.closeSettings()); }, /** * Включает/выключает вебкамеру. */ changeCameraState: function() { let btnCamera = document.querySelector('div[class*="toolbar"] button[title="Выключить камеру"]'); if (0 === this.cameraNum && btnCamera) { btnCamera.click(); btnCamera.blur(); } }, /** * Включает/выключает микрофон. */ changeMicState: function() { let btnMic = document.querySelector('div[class*="toolbar"] button[title="Выключить микрофон"]'); if (0 === this.micStateDefault && btnMic) { btnMic.click(); btnMic.blur(); } }, /** * Открывает вкладку настроек камеры и раскрывает список камер. */ openCameraSettings: function() { this.modalContent.querySelector('button:nth-child(3)').click(); this.modalContent.querySelector('.Select2 button').click(); }, /** * Переключает камеру. */ switchCamera: function() { const _self = this; const cameraItems = this.modalContent.querySelectorAll('.Popup2 .Menu-Item'); // Сначала выбираем это. cameraItems && cameraItems[0] && cameraItems[0].click(); // А затем переключаемся на нужную камеру. setTimeout(function() { cameraItems && cameraItems[_self.cameraNum - 1] && cameraItems[_self.cameraNum - 1].click(); }, 800); }, /** * Закрывает окно настроек. */ closeSettings: function() { this.modalContent.querySelector('div[class*="HeaderButtonContainer"] button').click(); } } telemostHelper.attach();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址