forked from zaclys/searxng
Merge pull request #2397 from dalf/update-ci
updates for Python 3.9 / update CI
This commit is contained in:
commit
59217bb5be
|
@ -22,7 +22,14 @@ jobs:
|
||||||
with:
|
with:
|
||||||
python-version: ${{ matrix.python-version }}
|
python-version: ${{ matrix.python-version }}
|
||||||
architecture: 'x64'
|
architecture: 'x64'
|
||||||
|
- name: Cache Python dependencies
|
||||||
|
id: cache-python
|
||||||
|
uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
path: ./local
|
||||||
|
key: python-${{ matrix.os }}-${{ matrix.python-version }}-${{ hashFiles('requirements*.txt', 'setup.py') }}
|
||||||
- name: Install Python dependencies
|
- name: Install Python dependencies
|
||||||
|
if: steps.cache-python.outputs.cache-hit != 'true'
|
||||||
run: |
|
run: |
|
||||||
make V=1 install
|
make V=1 install
|
||||||
make V=1 gecko.driver
|
make V=1 gecko.driver
|
||||||
|
|
|
@ -46,8 +46,8 @@ def _match_query(query):
|
||||||
|
|
||||||
try:
|
try:
|
||||||
key, value = query.split(':')
|
key, value = query.split(':')
|
||||||
except:
|
except Exception as e:
|
||||||
raise ValueError('query format must be "key:value"')
|
raise ValueError('query format must be "key:value"') from e
|
||||||
|
|
||||||
return {"query": {"match": {key: {'query': value}}}}
|
return {"query": {"match": {key: {'query': value}}}}
|
||||||
|
|
||||||
|
@ -71,8 +71,8 @@ def _term_query(query):
|
||||||
|
|
||||||
try:
|
try:
|
||||||
key, value = query.split(':')
|
key, value = query.split(':')
|
||||||
except:
|
except Exception as e:
|
||||||
raise ValueError('query format must be key:value')
|
raise ValueError('query format must be key:value') from e
|
||||||
|
|
||||||
return {'query': {'term': {key: value}}}
|
return {'query': {'term': {key: value}}}
|
||||||
|
|
||||||
|
@ -86,8 +86,8 @@ def _terms_query(query):
|
||||||
|
|
||||||
try:
|
try:
|
||||||
key, values = query.split(':')
|
key, values = query.split(':')
|
||||||
except:
|
except Exception as e:
|
||||||
raise ValueError('query format must be key:value1,value2')
|
raise ValueError('query format must be key:value1,value2') from e
|
||||||
|
|
||||||
return {'query': {'terms': {key: values.split(',')}}}
|
return {'query': {'terms': {key: values.split(',')}}}
|
||||||
|
|
||||||
|
|
|
@ -12,10 +12,10 @@
|
||||||
# @todo embedded (needs some md5 from video page)
|
# @todo embedded (needs some md5 from video page)
|
||||||
|
|
||||||
from json import loads
|
from json import loads
|
||||||
|
from html import unescape
|
||||||
from urllib.parse import urlencode
|
from urllib.parse import urlencode
|
||||||
from lxml import html
|
from lxml import html
|
||||||
from dateutil import parser
|
from dateutil import parser
|
||||||
from html.parser import HTMLParser
|
|
||||||
from searx.utils import extract_text
|
from searx.utils import extract_text
|
||||||
|
|
||||||
|
|
||||||
|
@ -55,13 +55,12 @@ def response(resp):
|
||||||
if "content" not in response:
|
if "content" not in response:
|
||||||
return []
|
return []
|
||||||
dom = html.fromstring(response["content"])
|
dom = html.fromstring(response["content"])
|
||||||
p = HTMLParser()
|
|
||||||
|
|
||||||
# parse results
|
# parse results
|
||||||
for result in dom.xpath(results_xpath):
|
for result in dom.xpath(results_xpath):
|
||||||
videoid = result.xpath(url_xpath)[0]
|
videoid = result.xpath(url_xpath)[0]
|
||||||
url = base_url + videoid
|
url = base_url + videoid
|
||||||
title = p.unescape(extract_text(result.xpath(title_xpath)))
|
title = unescape(extract_text(result.xpath(title_xpath)))
|
||||||
try:
|
try:
|
||||||
thumbnail = extract_text(result.xpath(thumbnail_xpath)[0])
|
thumbnail = extract_text(result.xpath(thumbnail_xpath)[0])
|
||||||
except:
|
except:
|
||||||
|
|
|
@ -24,9 +24,9 @@ def load_yaml(file_name):
|
||||||
with open(file_name, 'r', encoding='utf-8') as settings_yaml:
|
with open(file_name, 'r', encoding='utf-8') as settings_yaml:
|
||||||
return yaml.safe_load(settings_yaml)
|
return yaml.safe_load(settings_yaml)
|
||||||
except IOError as e:
|
except IOError as e:
|
||||||
raise SearxSettingsException(e, file_name)
|
raise SearxSettingsException(e, file_name) from e
|
||||||
except yaml.YAMLError as e:
|
except yaml.YAMLError as e:
|
||||||
raise SearxSettingsException(e, file_name)
|
raise SearxSettingsException(e, file_name) from e
|
||||||
|
|
||||||
|
|
||||||
def get_default_settings_path():
|
def get_default_settings_path():
|
||||||
|
|
|
@ -522,7 +522,7 @@ def get_xpath(xpath_spec):
|
||||||
try:
|
try:
|
||||||
result = XPath(xpath_spec)
|
result = XPath(xpath_spec)
|
||||||
except XPathSyntaxError as e:
|
except XPathSyntaxError as e:
|
||||||
raise SearxXPathSyntaxException(xpath_spec, str(e.msg))
|
raise SearxXPathSyntaxException(xpath_spec, str(e.msg)) from e
|
||||||
xpath_cache[xpath_spec] = result
|
xpath_cache[xpath_spec] = result
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
@ -553,7 +553,7 @@ def eval_xpath(element, xpath_spec):
|
||||||
return xpath(element)
|
return xpath(element)
|
||||||
except XPathError as e:
|
except XPathError as e:
|
||||||
arg = ' '.join([str(i) for i in e.args])
|
arg = ' '.join([str(i) for i in e.args])
|
||||||
raise SearxEngineXPathException(xpath_spec, arg)
|
raise SearxEngineXPathException(xpath_spec, arg) from e
|
||||||
|
|
||||||
|
|
||||||
def eval_xpath_list(element, xpath_spec, min_len=None):
|
def eval_xpath_list(element, xpath_spec, min_len=None):
|
||||||
|
|
|
@ -105,8 +105,8 @@ def parse_timeout(form: Dict[str, str], raw_text_query: RawTextQuery) -> Optiona
|
||||||
return None
|
return None
|
||||||
try:
|
try:
|
||||||
return float(timeout_limit)
|
return float(timeout_limit)
|
||||||
except ValueError:
|
except ValueError as e:
|
||||||
raise SearxParameterException('timeout_limit', timeout_limit)
|
raise SearxParameterException('timeout_limit', timeout_limit) from e
|
||||||
|
|
||||||
|
|
||||||
def parse_category_form(query_categories: List[str], name: str, value: str) -> None:
|
def parse_category_form(query_categories: List[str], name: str, value: str) -> None:
|
||||||
|
|
Loading…
Reference in New Issue