// ==UserScript==
// @name VK Скорость музыки
// @namespace VKPLRATE
// @description Добавляет на vk.com скорость воспроизведения музыки.
// @include https://vk.com/*
// @grant none
// @version 1.13
// @supportURL alexshiry1@gmail.com
// @downloadURL https://update.greasyfork.icu/scripts/29294/VK%20%D0%A1%D0%BA%D0%BE%D1%80%D0%BE%D1%81%D1%82%D1%8C%20%D0%BC%D1%83%D0%B7%D1%8B%D0%BA%D0%B8.user.js
// @updateURL https://update.greasyfork.icu/scripts/29294/VK%20%D0%A1%D0%BA%D0%BE%D1%80%D0%BE%D1%81%D1%82%D1%8C%20%D0%BC%D1%83%D0%B7%D1%8B%D0%BA%D0%B8.meta.js
// ==/UserScript==
var allowsetval=false;
range=document.createElement("span"); //Создание элемента span
range.innerHTML='Playback rate:1'; //Присваивание основных компонентов
range.style.position='fixed';// Стили
range.id="pl_rate_container";
range.style.bottom='0';
range.style.left='0';
range.style.zIndex='99999999';
if(location.href.search(/widget/)==-1){//Если не виджет
document.body.append(range);// Добавление в конец body
}
window.addEventListener('load',function(){//Событие на полную загрузку страницы
if(localStorage.getItem('plrate')!==undefined){
range.querySelector('input').value=parseFloat(localStorage.getItem('plrate'));//Восстановление значения из localstorage
}else{
range.querySelector('input').value=1;//Если нет значения, то значение по умолчанию 1 (нормальная скорость)
}
allowsetval=true;
});
setInterval(function(){//Проверка через каждые 0,1 сек.
if(allowsetval===true){
try{
if(getAudioPlayer()._impl._currentAudioEl.playbackRate!=range.querySelector('input').value){//Если скорость в аудиоплеере не совпадает со скоростью ползунка
getAudioPlayer()._impl._currentAudioEl.playbackRate=range.querySelector('input').value;//Присвоить новую скорость
localStorage.setItem('plrate',range.querySelector('input').value);//Сохранить новую скорость в localstorage
document.querySelector('.pl_rateval').innerText=range.querySelector('input').value;//Отобразить значение скорости рядом с ползунком
}
}catch(e){}//Подавление ошибки
}
},100);