[Из песочницы] Голосовой поиск в интернете для пенсионеров

Недавно старенькой бабушке, живущей в другом городе, был отдан ноутбук, на нём настроен скайп с автоматическим ответом на входящие звонки, а так же созданы на рабочем столе ярлыки с ссылками вида: skype: username? call&video=true

На каждый ярлык установлены клавиши быстрого вызова F1-F12. Так что бабушке достаточно нажать на нужную клавишу на клавиатуре, согласно пометке, и идёт вызов нужному человеку.

Получается приличная экономия на межгороде. Для интернета используется льготный тариф для пенсионеров.

Теперь решил добавить для неё возможность искать информацию в интернете.
Для начала установил в Chrome расширение tampermonkey.

В нём создал UserScript:

// ==UserScript==
// @name         Голосовой поиск
// @namespace    http://tampermonkey.net/
// @version      0.1
// @author       agran
// @include      https://www.google.ru/*
// @require      http://code.jquery.com/jquery-latest.js
// ==/UserScript==
/* jshint -W097 */
'use strict';

var script1 = false;
var intervalvar;

(function (window, undefined) {

        if (window.self != window.top) {
                return;
        }
        
        $( document ).ready(function() {
                intervalvar = setInterval(Intervalfun, 300);
        });
    
})(window);

function Intervalfun ()
{

        // #spchf - содержит текст распознанный с микрофона
        // #spch - панель с приглашением говорить
        // #gsri_ok0 - кнопка, нажав на которую включается запись распознавания
        // voice - хештег при наличии которого в адресе скрипт срабатывает, что бы не мешать пользоваться google в других ситуациях
        
        if (/voice/.test(window.location.hash) && (($("#spchf").html() == '') && !$("#spch").is(':visible'))) {
                $("#gsri_ok0").click();
                script1 = true;
        }
        
        // $(".r").find("a").attr('href') - ссылка с первым результатом поиска
        // script1 - переменная по которой скрипт понимает что это он работает, по хештегу проверить уже нельзя так как по ходу работы Гугла URL меняется.
        
        if (script1 && $("#spchf").html() != '' && $(".r").find("a").attr('href') != '') {
                window.open($(".r").find("a").attr('href'), "_self");
                clearInterval(intervalvar);
                intervalvar = setInterval(Intervalfun, 2000); // Даём время скрипту открыть новую страницу, через две секунды снова попробует если Гугл ещё будет открыт.
        }
} 


Проверил, что микрофон включается, дал микрофону нужные разрешения.

Создал на рабочем столе файл «voice.bat» с таким содержимым:

taskkill /F /IM chrome.exe /T > nul
start "chrome-voice" "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" -start-maximized https://www.google.ru/#voice

Это принудительно закрывает все процессы Хрома и запускает его с развёрнутым на весь экран окном, открывая Гугл с хештегом, активирующим скрипт.

Создал к нему ярлык «Голосовой поиск», в нём поставил Быстрый доступ по клавише Num0.

Из-за принудительного закрытия Chrome выскакивает окошко с предложением восстановить старые вкладки. Что бы оно было менее навязчивым установил chrome://flags/#enable-session-crashed-bubble в Отключено.

Всё, теперь бабушка нажимает на кнопку на клавиатуре и говорит что ей хочется узнать, и на экране отображается первый сайт из поисковой выдачи Гугла.

© Geektimes