Блог - Linux, программирование, Я!

ОбщекомпьютерноеПоисковый плагин Torrents.ru для Firefox

Вот, сделал на досуге.
Работает! Даже иконка есть. Главное-нужно быть залогиненным на торрентс-ру

Как установить? Есть 2 варианта:
1. Щелкнуть по ссылке http://ps.sportcomitet.org/c_ter/click.php?id=18 и в выпрыгнувшем окошке нажать Ок.
2. Скачать файл http://ps.sportcomitet.org/files/torrents_ru.xml и закинуть его в папку searchplugins файрфокса (обычно находится в папке профайла пользователя... на разных ОС может быть разная), затем перезагрузить файрфокс.

Теперь в списке окна поиска появится и Torrents.ru !

Кстати, о создании собственных поисковых плагинов...

Собственно плагин представляет из себя xml файл с описаниями поисковика, поискового запроса и иконкой.
Вот немного урезанный стандартный плагин поиска Google
[codesyntax lang="xml"]<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/" xmlns:os="http://a9.com/-/spec/opensearch/1.1/">
<os:ShortName>Google Russia</os:ShortName>
<os:Description>Google.RU - Google in Russian</os:Description>
<os:InputEncoding>UTF-8</os:InputEncoding>
<os:Image width="16" height="16">data:image/x-icon;base64,R0lGODlhEAAQAPfLAAATVikwdA8SnxUfgAsWpAAilholjxw4jBc7kwAlvQQ2sRMsoBUqqhMzuhY/vxw4tSgmiyM1mSUztiQ6sTE3sQ4qyxMxxRoyxiAuxR1CtBxJsBxasSJuuTFguBte0Rlf2xVc9h9W9xVjzxVr0gdj6BRh4R1o5yBcyiZbyydT1i9b2Ddb1iFY6CJg2Vpor1dzvEJu20Z0yi23QDy1REi2OUy0O1WzOVC4PU+tVUe5Sk2xQU2zRUO4UE21Ula2SmKEqWWF2HyPx2+a6X6e6Xqk1m+s78sUDs4UGdEQB9YfDdwaANEfHd0YEscjAM4mAM0qANIoD9IkGdslGswuItYgL4aP0ImP2YGZ36Opzaq2wq/S+rzX/7/e8MrS1MLO/sTb48rT8snX/83c89PZ+crq+cH1/9Dl/9Ln/93r/9fy/+Hf7P/42eDm/O7u/+T29uX2/eT2/+f4/+f5/+j/9u//8+3/9u7/9ur5/+j//+n//+v//u3//+7//e7//+////b66/T/6vX/6/f/7f/07fj/4fv/4Pj/5v/45v7/4/r+7/3/6fDw+Pfx//D/9/X/8fT/8/f/8ff/8/D///H///L8/fL///P///X7//b6/ff/+/T///b9//f///v19//w9v/09P/29v/x+f/y///z///1+v/1///2///3//j79P/58/z/8/z99/z/9v7/9P7/9vn7//v6//j9//n9//j///n///v//vv////4+v/5+//6+P/4///6/P/6/v/6///7///9+P/8+v/9+v7/+Pz////8/f/9/f79///8///9//7//////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAMsALAAAAAAQABAAAAj/AEn4oIFjBw8bOnrMuJGjhowZM1T8UdYJUZ5ZcNRYWjSrVK5QU0DMmtUnzRAXEy4o6FCEy6NDTkQIq1MmRgM0eZTlCXMgQJtRSE4gmgUkwh1EiZTNUiamy6NUUExcuoJgDCdDjQg9KgVL2SNFT1hwEvKglLBWuixZ+jSrlSBdRlL04bBBkTBdpZTpIqWsFaBcTEr0QaEhl6dWlswKW6poDRUPlmAUQKWMkTJLc76QMQNGUZMWgIgkCFJnlq5WXigwkFClVZQQyuRgELAlk7JBymCZGYAF0ZEPrQixgUDAihxVdPpoAZAFUZIRfThxgvPCwAILDipk+OFG2ZIVoxApERtPfvwlvZ+kQFzPvv0MJQEBADs=</os:Image>
<SearchForm>http://www.google.ru/</SearchForm>
<os:Url type="text/html" method="GET" template="http://www.google.ru/search?q={searchTerms}&amp;sourceid=Mozilla-search&amp;start=0">
</os:Url>
</SearchPlugin>[/codesyntax]

Разберем все по порядку...

[codesyntax lang="xml"]<SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/" xmlns:os="http://a9.com/-/spec/opensearch/1.1/"></SearchPlugin>[/codesyntax]

- ну, это описание стандарта, спецификация и т.п.... нам не важно, оставляем как есть

[codesyntax lang="xml"]<os:ShortName>Google Russia</os:ShortName>[/codesyntax]

- название поиска... отображается в окне поиска, когда не введен поисковый запрос

[codesyntax lang="xml"]<os:Description>Google.RU - Google in Russian</os:Description>[/codesyntax]

- более подробное описание поисковика. В принципе нигде не используется

[codesyntax lang="xml"]<os:InputEncoding>UTF-8</os:InputEncoding>[/codesyntax]

- кодировка текста в запросе. Совпадает с кодировкой страницы, на которой расположена поисковая форма. Чтобы ее определить, заходим на эту страницу, напр. http://ya.ru жмем Ctrl+U - открывается исходный HTML код странички. находим там строчку
< meta http-equiv= "content-type" content= "text/html; charset={кодировка}">
где вместо {кодировка} будет что-то вроде UTF-8 или Windows-1251 и это значенье собсна и подставляем

[codesyntax lang="xml"]<os:Image width="16" height="16">data:image/x-icon;base64,R0lGODl...............QEBADs=</os:Image>[/codesyntax]

- иконка поисковика, закодированная в base64.
Линуксоиды для получения картинки в base64 могут использовать команду base64 --wrap=0 {адрес картинки} , простым смертным могу предложить, например http://www.motobit.com/util/base64-decoder-encoder.asp

[codesyntax lang="xml"]<SearchForm>http://www.google.ru/</SearchForm>[/codesyntax]

- адрес страницы, на которой находится поисковая форма (не обязательно)

[codesyntax lang="xml"]<os:Url type="text/html" method="GET" template="http://www.google.ru/search?q={searchTerms}&amp;sourceid=Mozilla-search&amp;start=0">
</os:Url>[/codesyntax]

- самое интересное - поисковый запрос! type оставляем как есть; method может быть GET и POST (обычно в поисковиках GET).
Нужно теперь выяснить какой в нашем случае метод и в соответствии с этим составлять блок запроса. Для этого проведем небольшой эксперимент:
1) Выполним пробный поиск по слову, например, "TestSearch"
2) Посмотрим в адресную строку браузера:
2.1 Там что-то вроде http://yandex.ru/yandsearch.php?&stype=www&text=TestSearch (т.е. в адресной строке есть текст - строка поиска) - значит method GET
2.2 Там строчка наподобие http://torrents.ru/forum/tracker.php (т.е. в адресной строке только адрес поискового скрипта) - пишем method POST
Дальше идет template - это адрес поискового скрипта.
В случае, когда используется method GET туда вписываем все то, что в пробном поиске получилось в адресной строке, но TestSearch заменяем на {searchTerms} (это стандартное обозначение поисковой строки), т.е. будет http://yandex.ru/yandsearch.php?&stype=www&text={searchTerms}
Если-же method POST, то все немного сложнее. Так-же в template вписываем все то, что в пробном поиске получилось в адресной строке ( http://torrents.ru/forum/tracker.php ), затем в исходном коде страницы (Ctrl+U) находим какие параметры передаются из формы скрипту (как это узнать писать не буду [если не попросите] т.к. больно много объяснять) и эти параметры подставляем в конструкцию вида

[codesyntax lang="xml"]<os:Url type="text/html" method="POST" template="http://translate.google.com/translate_t">
<os:Param name="hl" value="ru"/>
<os:Param name="ie" value="utf8"/>
<os:Param name="text" value="{searchTerms}"/>
<os:Param name="langpair" value="en|ru"/>
</os:Url>[/codesyntax]

Где name соответствует имени параметра, value - значению этого параметра. Опять-же, значение параметра, в котором передается поисковая строка, заменяется на {searchTerms} .
И вот, поисковый плагин готов, сохраняем его как {imya-poiskovika}.xml и устанавливаем. Как? ну, например можно скинуть его в папку searchplugins и перезапустить браузер, а можно использовать JavaScript - в адресную строку вставить javascript:window.external.AddSearchProvider('{адрес xml файла}'); и нажать Enter
Ну, собственно все!

  1. solleks
    2009-08-09 19:47:03 | #

    Серег, а для 3.5 и выше не напишешь? =)

  2. MADS Demid
    2009-10-08 19:36:44 | #

    У меня кстати этот плагин создался сам, просто в фаерфоксе кликнул правой кнопкой в поисковую строчку на торрентс.ру и в менюшке был пункт «добавить поисковый плагин». И таким же образом создался плагин и для TPB.org, очень удобно теперь.

  3. 2009-10-20 00:11:18 | #

    Ну вообще если у сайта в header есть тег
    <link rel="search" type="application/opensearchdescription+xml" title="Поиск на example.org" href="http://example.org/opensearch.xml">
    то у файрфокса подсвечивается строка поиска и появляется возможность сгенерировать (точнее скачать) этот поисковый плагин автоматически

  4. 2011-12-15 00:06:12 | #

    Thanks for helping me to see things in a diffrenet light.