29 June 2008

Создаем поисковый плагин для Firefox

Firefox
Firefox довольно простыми методами позволяет добавить себе новые поисковые движки. Хотя уже имеется большая их подборка на сайте Mozilla, но все таки там есть не все. В этом случае можно добавить плагин самому.
Итак изначально для этого нам понадобится шаблон. Для GET запросов подойдет такой:
<SearchPlugin xmlnswww.mozilla.org/2006/browser/search» xmlns:osa9.com/-/spec/opensearch/1.1»>
<os:ShortName></os:ShortName>
<os:Description></os:Description>
<os:InputEncoding>UTF-8</os:InputEncoding>
<os:Image width=«16» height=«16»>data:image/x-icon;base64,</os:Image>
<os:Url type=«text/html» method=«GET» template="">
</os:Url>
</SearchPlugin>

Теперь заполняем его. Для примера я сделаю плагин для запросов на Whois сервис nic.ru:
  1. В тег ShortName пишем короткое имя, оно будет указывается в строке поиска и в списке плагинов
  2. В теге Description указываем описание плагина
  3. В тег Image мы должны записать иконку закодированную с помощью base64 (т.к. мы не можем записывать в xml файлы бинарные данные) для этого:
    1. Сначала получаем иконку (это можно сделать несколькими способами, например, скачать favicon c сайта либо сделать самому и сохранить в формате bmp размером 16х16)
    2. Теперь с помощью замечательного набора утилит openssl кодируем данные в формате base64: команда будет выглядеть так «openssl enc -base64 -in favicon.ico»
    3. Весь вывод команды openssl копируем в тег Image после строки «data:image/x-icon;base64,»
  4. В Url, в атрибуте template указываем строку-шаблон для поиска:
    1. Для этого идем на сайт
    2. Пишем любой запрос, например на поиск «12345678»
    3. В строке поиска видно, что шаблон поиска выглядит так: «www.nic.ru/whois/?query=» и в конце добавляется наша срока
    4. В template указываем url запроса, а вместо строки запроса пишем {searchTerms}
В итоге получаем:
<SearchPlugin xmlnswww.mozilla.org/2006/browser/search» xmlns:osa9.com/-/spec/opensearch/1.1»>
<os:ShortName>NIC WhoIS</os:ShortName>
<os:Description>WhoIS сервис</os:Description>
<os:InputEncoding>UTF-8</os:InputEncoding>
<os:Image width=«16» height=«16»>data:image/x-icon;base64,
AAABAAEAEBAAAAEAGABoAwAAFgAAACgAAAAQAAAAIAAAAAEAGAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAD////////////////////////379/v3r/v3r/79+//////
///////////////////////////////////gvX/JjB/BfADBfADBfADBfADMlC/o
zp/////////////////////////379/MlC/BfADBfADBfADBfADBfADBfADBfADB
fADQnD/79+/////////////9+/fkxY7gvX/YrWDUpFHgvX/gvX/kxY/hwofFhBfB
fADBfADMlC/79+/////////k8v2Xy/ev2Pn05s/05s+v2PmXy/fK5fv////////w
3r/FhBfBfADgvX/////58ubX6/w0mfA/n/H///////8/n/E0mfDK5fvy48j47t//
///05s/BfADFhA/79+/iwYr///80mfA0mfDk8v3X6/w0mfA0mfD////JjCXBfAD7
9/D////YrWDBfADozp/UpU/47t9ksfQ0mfC93vqKxfc0mfBwuPX9+vXBfADBfADj
xY/////nzp/BfADgvX/QnD/r1q6Kxfc0mfA0mfA0mfA0mfCj0vj////UpFHBfADY
rWD////05s/BfADgvX/YrV/gvX+j0vg0mfBhsPS12vphsPQ0mfCXy/f47t/BfADM
lDP////////BfADgvX/kxY/UpFHK5fs0mfBstvT////x9vk0mfA/n/H////JjCXB
fAD////////QnULs1q/379/JjCX///80mfA0mfCKxfdisfQ0mfBLpPL9+/fBfADB
fADw3r/////euXf////////ctW/79/BYrPM0mfA0mfBLpPJ9v/a93vrq1KrBfADB
fADctW/w3r/t27j////////////z48v////////////79/Dnzp/UpFHFhBfBfADB
fADBfADYrV/////////////////79+/UpU/BfADBfADBfADBfADBfADBfADBfADB
fADctW/////////////////////////////v3r/UpU/FhA/BfADBfADJjB/YrV/v
3r////////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</os:Image>
<os:Url type=«text/html» method=«GET» templatewww.nic.ru/whois/?query={searchTerms}»>
</os:Url>
</SearchPlugin>

Все это необходимо сохранить как xml файл, например, nic-whois.xml и скопировать в папку searchplugins своего профиля:
Для Linux пользователей это будет "~/.mozilla/firefox/xxxxxxxx.default/searchplugins"
Для Windows пользователей "%USERPROFILE%\Application Data\Mozilla\Firefox\Profiles\xxxxxxxx.default\searchplugins"
xxxxxxxx — это название вашего профиля, оно у всех имеет разное значение.
Вот и все.

Здесь (!warning eng) можно прочитать о том же, но более подробно.
Tags:firefoxsearchpluginsearchpluginпоисковый плагинсоздаем
Hubs: Firefox
+36
7.1k 60
Comments 34