mirror of
https://github.com/Mikaela/Limnoria.git
synced 2024-11-30 06:49:24 +01:00
DDG: Add region and safeSearch configs.
This commit is contained in:
parent
902677a378
commit
1c1ba1119d
@ -47,6 +47,8 @@ def configure(advanced):
|
|||||||
from supybot.questions import expect, anything, something, yn
|
from supybot.questions import expect, anything, something, yn
|
||||||
conf.registerPlugin('DDG', True)
|
conf.registerPlugin('DDG', True)
|
||||||
|
|
||||||
|
class SafeSearch(registry.OnlySomeStrings):
|
||||||
|
validStrings = ['active', 'moderate', 'off']
|
||||||
|
|
||||||
DDG = conf.registerPlugin('DDG')
|
DDG = conf.registerPlugin('DDG')
|
||||||
conf.registerChannelValue(DDG, 'maxResults',
|
conf.registerChannelValue(DDG, 'maxResults',
|
||||||
@ -56,6 +58,14 @@ conf.registerChannelValue(DDG, 'showSnippet',
|
|||||||
registry.Boolean(True, _("""Determines whether the bot will show a
|
registry.Boolean(True, _("""Determines whether the bot will show a
|
||||||
snippet of each resulting link. If False, it will show the title
|
snippet of each resulting link. If False, it will show the title
|
||||||
of the link instead.""")))
|
of the link instead.""")))
|
||||||
|
conf.registerChannelValue(DDG, 'region',
|
||||||
|
registry.String("", _("""Set the DDG search region to return results
|
||||||
|
for the language/country of your choice. E.g. 'us-en' for United States.
|
||||||
|
https://duckduckgo.com/params""")))
|
||||||
|
conf.registerChannelValue(DDG, 'searchFilter',
|
||||||
|
SafeSearch('moderate', _("""Determines what level of search filtering to use
|
||||||
|
by default. 'active' - most filtering, 'moderate' - default filtering,
|
||||||
|
'off' - no filtering""")))
|
||||||
|
|
||||||
# vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79:
|
# vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79:
|
||||||
|
|
||||||
|
@ -54,10 +54,21 @@ class DDG(callbacks.Plugin):
|
|||||||
threaded = True
|
threaded = True
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _ddgurl(text):
|
def _ddgurl(text, region=None, safeSearch=None):
|
||||||
# DuckDuckGo has a 'lite' site free of unparseable JavaScript
|
# DuckDuckGo has a 'lite' site free of unparseable JavaScript
|
||||||
# elements, so we'll use that to our advantage!
|
# elements, so we'll use that to our advantage!
|
||||||
url = "https://lite.duckduckgo.com/lite?" + urlencode({"q": text})
|
url = "https://lite.duckduckgo.com/lite?"
|
||||||
|
params = {"q": text}
|
||||||
|
if region:
|
||||||
|
params["kl"] = region
|
||||||
|
if safeSearch:
|
||||||
|
if safeSearch == "active":
|
||||||
|
params["kp"] = 1
|
||||||
|
elif safeSearch == "moderate":
|
||||||
|
params["kp"] = -1
|
||||||
|
elif safeSearch == "off":
|
||||||
|
params["kp"] = -2
|
||||||
|
url += urlencode(params)
|
||||||
|
|
||||||
log.debug("DDG: Using URL %s for search %s", url, text)
|
log.debug("DDG: Using URL %s for search %s", url, text)
|
||||||
|
|
||||||
@ -87,7 +98,10 @@ class DDG(callbacks.Plugin):
|
|||||||
# still somewhat tricky.
|
# still somewhat tricky.
|
||||||
results = []
|
results = []
|
||||||
|
|
||||||
url, real_url, raw_results = self._ddgurl(text)
|
region = self.registryValue("region", channel_context)
|
||||||
|
safeSearch = self.registryValue("searchFilter", channel_context)
|
||||||
|
|
||||||
|
url, real_url, raw_results = self._ddgurl(text, region, safeSearch)
|
||||||
|
|
||||||
if real_url != url:
|
if real_url != url:
|
||||||
# We received a redirect, likely from something like a !bang request.
|
# We received a redirect, likely from something like a !bang request.
|
||||||
@ -146,3 +160,4 @@ Class = DDG
|
|||||||
|
|
||||||
|
|
||||||
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:
|
# vim:set shiftwidth=4 softtabstop=4 expandtab textwidth=79:
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user