Comfort video player Mail

for video player Mail

目前為 2024-08-19 提交的版本,檢視 最新版本

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name:ru      Комфортное Мыло (Mail cloud) 
// @name         Comfort video player Mail
// @license MIT
// @description  for video player Mail
// @description:ru Для видео плеер Mail 
// @version      0.2
// @author       Malysh <[email protected]>
// @match        http://cloud.mail.ru/*
// @match        https://cloud.mail.ru/*
// @run-at       document-start
// @grant        none
// @namespace https://greasyfork.org/users/1354506
// ==/UserScript==

//время для перематывания
let skeepTime = 5;
//для установки качество
let qualityVideo = '1080'; // 240, 480, 720, 1080

//увеличение интервала для перемотки
document.addEventListener('keydown', function(event) {
    
if (event.code === 'ArrowUp' || event.code === 'KeyW') {
            event.stopImmediatePropagation()
            event.preventDefault();

            if(skeepTime <= 30){
             skeepTime += 5;
            }
            else{ skeepTime = 30;}
        }
        else if (event.code === 'ArrowDown' || event.code === 'KeyS') {
            event.stopImmediatePropagation()
            event.preventDefault();
            if(skeepTime != 5){
             skeepTime -= 5;
            }
            else{ skeepTime = 5;}

        }
    else if (event.code === 'KeyR') {
             skeepTime = 5;

        }
},true);


// перемотка видео
document.addEventListener('keydown', function(event) {
    // Получаем элемент видео на странице
     let videos = document.querySelectorAll('video');

    // Проверяем, что видео найдено
    let currentVideo = null;
        videos.forEach(video => {
            if (video.offsetParent !== null) {
                currentVideo = video;
            }
        });

    if (currentVideo) {
        // Если нажата клавиша стрелки влево

        if (event.code === 'ArrowLeft' || event.code === 'KeyA') {
            event.stopImmediatePropagation()
            event.preventDefault();

            // Перематываем видео на 5 секунд назад
            currentVideo.currentTime -= skeepTime;
        }
        // Если нажата клавиша стрелки вправо
        else if (event.code === 'ArrowRight' || event.code === 'KeyD') {
            event.stopImmediatePropagation()
            event.preventDefault();
            // Перематываем видео на 5 секунд вперед
            currentVideo.currentTime += skeepTime;
        }
    }},true);

// пауза на Space
document.addEventListener('keydown', function(event) {
    // Проверяем, что нажата клавиша 'Space'
    if (event.code === 'Space') {
        event.stopImmediatePropagation();
        event.preventDefault();

        // Находим все элементы видео на странице
     let videos = document.querySelectorAll('video');


        // Ищем активное (видимое) видео
        let currentVideo = null;
        videos.forEach(video => {
            if (video.offsetParent !== null) {
                currentVideo = video;
            }
        });

        // Если найдено активное видео, управляем его воспроизведением
        if (currentVideo) {
            if (currentVideo.paused) {
                currentVideo.play();
            } else {
                currentVideo.pause();
            }
        }
    }
}, true);


// Функция для установки качества видео


function waitForElement(selector, timeout = 10000) {
    return new Promise((resolve, reject) => {
        const interval = 100;
        const checkExist = setInterval(() => {
            const element = document.querySelector(selector);
            if (element) {
                clearInterval(checkExist);
                resolve(element);
            }
        }, interval);
        setTimeout(() => {
            clearInterval(checkExist);
            reject(new Error('Элемент не найден: ' + selector));
        }, timeout);
    });
}

async function setQuality(quality) {
    try {
        // Ожидаем загрузки кнопки настроек
        const settingsButton = await waitForElement('button[class*="vjs-menu-button vjs-menu-button-popup vjs-button"]');
        settingsButton.click();

        // Ожидаем появления меню выбора качества
        const qualityMenuItem = await waitForElement('.vjs-menu .vjs-menu-content');
        [...document.querySelectorAll('.vjs-menu-title')].find(item => item.textContent.includes('Качество') || item.textContent.includes('Quality')).click();

        // Ожидаем меню с выбором качества и устанавливаем выбранное качество
        const qualityOption = await waitForElement('.vjs-menu-item');
        [...document.querySelectorAll('.vjs-menu-item-text')].find(item => item.textContent.includes(quality)).click();

        console.log(`Качество установлено на ${quality}.`);
    } catch (error) {
        console.log('Ошибка: ' + error.message);
    }
}

// Запуск скрипта после загрузки страницы с заданным качеством
window.addEventListener('load', function() {
    setTimeout(() => setQuality(qualityVideo), 1000); // Установите здесь нужное качество, например, '240p'
});