from gettext import gettext as _
import deskbar.interfaces.Module
import deskbar.interfaces.Match
from deskbar.handlers.actions.ShowUrlAction import ShowUrlAction
from deskbar.core.Utils import load_icon
HANDLERS = ["HabrSuggestHandler"]
class HabrSuggestHandler (deskbar.interfaces.Module):
INFOS = {'icon': load_icon ("habr.png"),
'name': _ ("Habrahabr.ru Suggest"),
'description': _ ("As you type, Habr will offer suggestions."),
'version': '1.0.0.0'}
def __init __ (self):
deskbar.interfaces.Module .__ init __ (self)
def query (self, qstring):
pass
HANDLERS = ["HabrSuggestHandler"] Specify to the applet which class in our module is mainINFOS = ... Add-on Descriptiondeskbar.interfaces.Module.__init__(self) Call the parent constructordef query(self, qstring): The function that will be called when you enter the desired one while the def query(self, qstring): is empty. from gettext import gettext as _
import deskbar.interfaces.Module
import deskbar.interfaces.Match
from deskbar.handlers.actions.ShowUrlAction import ShowUrlAction
from deskbar.core.Utils import load_icon
import urllib
try:
import simplejson
except:
pass
HANDLERS = ["HabrSuggestHandler"]
GOOGLE_SUGGEST_URL = "http://suggestqueries.google.com/complete/search"
HABR_SEARCH_URL = "http://habrahabr.ru/search/"
class HabrSuggestAction (ShowUrlAction):
def __init __ (self, query):
ShowUrlAction .__ init __ (self, query, GOOGLE_SEARCH_URL + '?' + Urllib.urlencode ({'q': query}))
def get_verb (self):
return _ ("Search <b> Habrahabr.ru </ b> for <i>% (name) s </ i>")
class GoogleSuggestMatch (deskbar.interfaces.Match):
def __init __ (self, query, ** args):
deskbar.interfaces.Match .__ init__ (self, name = query, category = "web", icon = "habr.png", ** args)
self._query = query
self.add_action (HabrSuggestAction (query))
def get_hash (self, text = None):
return self._query
class HabrSuggestHandler (deskbar.interfaces.Module):
INFOS = {'icon': load_icon ("habr.png"),
'name': _ ("Habrahabr.ru Suggest"),
'description': _ ("As you type, Habr will offer suggestions."),
'version': '1.0.0.0'}
def __init __ (self):
deskbar.interfaces.Module .__ init __ (self)
def query (self, qstring):
args = {'output': 'firefox', 'qu': qstring, 'as_sitesearch': 'http://habrahabr.ru'}
url = GOOGLE_SUGGEST_URL + '?' + urllib.urlencode (args)
result = simplejson.load (urllib.urlopen (url))
if not 'Error' in result:
matches = []
# result looks like ["qstring", ["suggestion 1", "suggestion 2",]]
for suggest in result [1]:
matches.append (GoogleSuggestMatch (suggest))
self._emit_query_ready (qstring, matches)
@staticmethod
def has_requirements ():
try:
import simplejson
return true
except:
HabrSuggestHandler.INSTRUCTIONS = _ ("Python module simplejson is not available")
return false


Source: https://habr.com/ru/post/74413/
All Articles