Предложения поисковых систем в Opera 10.60

Думаю, каждый фанат Оперы уже успел поставить и оценить возможности нового релиза любимого браузера. Его возможности уже обсуждались не один раз, но мне хотелось бы остановится на одной новой фиче, которую по определенным причинам (а именно, из-за ее недоработки) пока использовать проблематично. Я говорю о предложениях в поисковых системах. Пока мы можем использовать эту возможность только на Бинге и Википедии.
Естественно, я не мог удержаться и не разобраться в этой неприятности. Итак, что же обнаружилось.

В search.ini (для тех, кто не в курсе, этот файл отвечает за поисковые системы и находится в польовательской папке Оперы profile) в секциях вышеупомянутых посиковых систем появились два новых пункта:
Suggest Protocol=JSON
Suggest URL=...

Suggest URL содержит конструкцию {SearchTerm}, которая, очевидно, являет собой сам запрос (хотя непонятно, почему разработчики не оставили эту ссылку в соответствии с ссылками самого поиска — с %s; но нам это не принципиально важно).
Давайте посмотрим, что скрывается за этим URL, например, для Википедии:
http://en.wikipedia.org/w/api.php?action=opensearch&search={SearchTerm}&format=json
Уже из самого адреса становится ясно то, в чем можно убедиться, перейдя по данному адресу, например, подставив «Wi» на место {SearchTerm}: данные для предположений поиска берутся в формате OpenSearch, а именно представляют собой закодированный с помощью JSON массив, состоящий из самого запроса и подмассива поисковых предположений, например:
["Wi",["Wisconsin","William Shakespeare","Win\u2013loss record","Winnipeg","Wide receiver","Winston Churchill","Wingspan","Wine","Wiltshire","Winter Olympic Games"]]

Теперь, когда стал ясен принцип работы этой функции в Опере, не составит труда добавить в search.ini сервисы предположений для любимых поисковых систем. Просто в соответствующую секцию добавляем пункт Suggest URL=... с адресом OpenSearch-предположений соответствующей поисковой системы.

Для тех, кому интересно, предлагаю несколько уже известных мне адресов:

Для тех же поисковых систем, которые не поддерживают данный формат, придется писать собственную «обертку» на PHP/ASP/… (дело вкуса). Например, для гуглопереводчика создаем в htdocs файл atrans.php со следующим содержимым:
<?php
header('content-type:text/javascript');
$q=stripslashes($_GET['q']);$sl=$_GET['sl'];$tl=$_GET['tl'];
$t=file_get_contents('http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q='.urlencode($q).'&langpair='.urlencode($sl).'|'.urlencode($tl));
$a=json_decode($t,true);
echo json_encode($a['responseStatus']!=200?array():array($q,array($a['responseData']['translatedText'])));


И назначаем Suggest URL, который для перевода с любого языка на русский будет выглядеть следующим образом: http://localhost/atrans.php?q={SearchTerm}&tl=ru — и таким образом получаем мгновенный перевод в строке браузера.

После завершения правок можно сохранить файл и перезапустить Оперу. Спасибо за внимание.
Метки:
opera, suggestions, search engines, допиливание
Похожие публикации