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