Голосовой поиск в интернете для пенсионеров

в 13:49, , рубрики: Google Chrome, javascript, tampermonkey, браузеры

Недавно старенькой бабушке, живущей в другом городе, был отдан ноутбук, на нём настроен скайп с автоматическим ответом на входящие звонки, а так же созданы на рабочем столе ярлыки с ссылками вида: 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)GoogleChromeApplicationchrome.exe" -start-maximized https://www.google.ru/#voice

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

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

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

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

Автор: agran

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js