NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name VK Skype // @namespace https://vk.com/0id00000000000000000000000000000 // @version 1.2 // @description Голосовые сообщения текстом // @author Алексей Иванов // @match https://vk.com/* // @grant none // @license MIT // ==/UserScript== //==OpenUserJs== //@author sijuz //==/OpenUserJs== (function() { 'use strict'; setTimeout(function() { function find(array, value) { if (array.indexOf) { // если метод существует return array.indexOf(value); } for (var i = 0; i < array.length; i++) { if (array[i] === value) return i; } return -1; } let m1 = [0]; let isStoped = false; let btnElem; function btn_click_start() { if (isStoped) { btnElem.innerText = 'Начать'; } else { btnElem.innerText = 'Остановить'; } isStoped = !isStoped; if (isStoped) { start(); } } function stop(r) { console.log('сброс'); r.stop(); if (isStoped) { start(); } } function start() { var recognizer = new webkitSpeechRecognition(); recognizer.interimResults = true; recognizer.lang = 'ru-Ru'; recognizer.onaudiostart = function() { console.log('начинаю слушать'); } recognizer.onnomatch = function() { console.log('Speech not recognised'); } recognizer.onsoundstart = function() { console.log('начинаю распозновать'); } recognizer.onend = function() { console.log('Распознование остановленно'); } recognizer.onsoundend = function() { stop(recognizer); console.log('Ничего не распознанно'); } recognizer.onnomatch = function() { stop(recognizer); } recognizer.onresult = function (event) { var result = event.results[event.resultIndex]; if (result.isFinal) { stop(recognizer); document.querySelector('.im-chat-input--text').focus(); document.querySelector('.im-chat-input--text').innerText = result[0].transcript; document.querySelector('.im-chat-input--text').click(); document.querySelector('.im-chat-input--text').focus(); document.querySelector('.im-send-btn').classList.remove("im-send-btn_audio"); document.querySelector('.im-send-btn').classList.add('im-send-btn_send'); document.querySelector('.im-send-btn').focus(); document.querySelectorAll('.im-send-btn')[document.querySelectorAll('.im-send-btn').length-1].click(); var evt = new Event('mouseover'); document.querySelector('.im-send-btn').dispatchEvent(evt); console.log('Вы сказали: ' + result[0].transcript); } else { document.querySelector('.im-chat-input--text').focus(); document.querySelector('.im-chat-input--text').innerText = result[0].transcript; document.querySelector('.im-chat-input--text').focus(); document.querySelector('.im-chat-input--text').click(); } }; recognizer.start(); } function timeIs() { let len = document.querySelectorAll('li._im_mess:not(.im-mess_out) span._im_mess_blind_unread_marker').length-1; if (document.querySelectorAll('li._im_mess:not(.im-mess_out) span._im_mess_blind_unread_marker')[len]) { if(document.querySelectorAll('li._im_mess:not(.im-mess_out) span._im_mess_blind_unread_marker')[len].getAttribute('aria-label') === 'Сообщение не прочитано' || document.querySelectorAll('li._im_mess:not(.im-mess_out) span._im_mess_blind_unread_marker')[len].getAttribute('aria-label') === 'Unread message') { let s = document.querySelectorAll('li._im_mess:not(.im-mess_out) span._im_mess_blind_unread_marker')[len].parentNode.getAttribute('data-msgid'); if (find(m1,s) == -1) { console.log('новое сообщение'); m1.push(document.querySelectorAll('li._im_mess:not(.im-mess_out) span._im_mess_blind_unread_marker')[len].parentNode.getAttribute('data-msgid')); if (document.querySelectorAll('li._im_mess:not(.im-mess_out) span._im_mess_blind_unread_marker')[len].parentNode.querySelector('._im_log_body')) { var msg = new SpeechSynthesisUtterance(); msg.volume = 1; // 0 to 1 msg.rate = 2; // 0.1 to 10 msg.pitch = 0; //0 to 2 msg.text = document.querySelectorAll('li._im_mess:not(.im-mess_out) span._im_mess_blind_unread_marker')[len].parentNode.querySelector('._im_log_body').innerText; msg.lang = 'ru-RU'; speechSynthesis.speak(msg); } } } } } let sss = setInterval(timeIs, 1500); setInterval(timeIs, 1500); var elem1 = document.createElement("button"); var elemText1 = document.createTextNode("Начать"); elem1.appendChild(elemText1); elem1.setAttribute('class','flat_button'); document.querySelector('#side_bar').appendChild(elem1); document.querySelector('.im_chat-input--buttons').appendChild(elem1); btnElem = elem1; elem1.addEventListener('click', btn_click_start, false); function started() { m1 = [0]; console.log('Полный перезапуск'); } let ll = document.querySelectorAll('li.nim-dialog'); for (var i = 0; i < ll.length; i++) { ll[i].addEventListener('click', started, false); } },2000) })();