Pull to refresh

Предложения поисковых систем в 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 — и таким образом получаем мгновенный перевод в строке браузера.

После завершения правок можно сохранить файл и перезапустить Оперу. Спасибо за внимание.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.