diff --git a/manage.sh b/manage.sh index 11f2df04d..a361c5616 100755 --- a/manage.sh +++ b/manage.sh @@ -14,6 +14,36 @@ update_dev_packages() { pip install --upgrade -r "$BASE_DIR/requirements-dev.txt" } +check_geckodriver() { + echo '[!] Checking geckodriver' + set -e + geckodriver -V 2>1 > /dev/null || NOTFOUND=1 + set +e + if [ -z $NOTFOUND ]; then + return + fi + GECKODRIVER_VERSION="v0.11.1" + PLATFORM=`python -c "import platform; print platform.system().lower(), platform.architecture()[0]"` + case $PLATFORM in + "linux 32bit" | "linux2 32bit") ARCH="linux32";; + "linux 64bit" | "linux2 64bit") ARCH="linux64";; + "windows 32 bit") ARCH="win32";; + "windows 64 bit") ARCH="win64";; + "mac 64bit") ARCH="macos";; + esac + GECKODRIVER_URL="https://github.com/mozilla/geckodriver/releases/download/$GECKODRIVER_VERSION/geckodriver-$GECKODRIVER_VERSION-$ARCH.tar.gz"; + if [ -z "$VIRTUAL_ENV" ]; then + echo "geckodriver can't be installed because VIRTUAL_ENV is not set, you should download it from\n $GECKODRIVER_URL" + exit + else + echo "Installing $VIRTUAL_ENV from\n $GECKODRIVER_URL" + FILE=`mktemp` + wget "$GECKODRIVER_URL" -qO $FILE && tar xz -C $VIRTUAL_ENV/bin/ -f $FILE geckodriver + rm $FILE + chmod 777 $VIRTUAL_ENV/bin/geckodriver + fi +} + pep8_check() { echo '[!] Running pep8 check' # ignored rules: @@ -43,6 +73,7 @@ tests() { set -e pep8_check unit_tests + check_geckodriver robot_tests set +e } @@ -88,6 +119,7 @@ Commands unit_tests - Run unit tests update_dev_packages - Check & update development and production dependency changes update_packages - Check & update dependency changes + check_geckodriver - Check & download geckodriver (required for robot_tests) " } diff --git a/requirements.txt b/requirements.txt index c4cbe4e04..d6c91b246 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,12 +1,12 @@ certifi==2016.9.26 -flask==0.11.1 +flask==0.12 flask-babel==0.11.1 -lxml==3.6.0 -ndg-httpsclient==0.4.1 +lxml==3.7.1 +ndg-httpsclient==0.4.2 pyasn1==0.1.9 pyasn1-modules==0.0.8 pygments==2.1.3 -pyopenssl==0.15.1 +pyopenssl==16.2.0 python-dateutil==2.5.3 pyyaml==3.11 -requests[socks]==2.10.0 +requests[socks]==2.12.4 diff --git a/searx/autocomplete.py b/searx/autocomplete.py index dff8a69a0..b360af9f6 100644 --- a/searx/autocomplete.py +++ b/searx/autocomplete.py @@ -81,22 +81,22 @@ def searx_bang(full_query): engine_query = full_query.getSearchQuery()[1:] for lc in language_codes: - lang_id, lang_name, country, english_name = map(str.lower, lc) + lang_id, lang_name, country, english_name = map(unicode.lower, lc) # check if query starts with language-id if lang_id.startswith(engine_query): if len(engine_query) <= 2: - results.append(':{lang_id}'.format(lang_id=lang_id.split('-')[0])) + results.append(u':{lang_id}'.format(lang_id=lang_id.split('-')[0])) else: - results.append(':{lang_id}'.format(lang_id=lang_id)) + results.append(u':{lang_id}'.format(lang_id=lang_id)) # check if query starts with language name if lang_name.startswith(engine_query) or english_name.startswith(engine_query): - results.append(':{lang_name}'.format(lang_name=lang_name)) + results.append(u':{lang_name}'.format(lang_name=lang_name)) # check if query starts with country if country.startswith(engine_query.replace('_', ' ')): - results.append(':{country}'.format(country=country.replace(' ', '_'))) + results.append(u':{country}'.format(country=country.replace(' ', '_'))) # remove duplicates result_set = set(results) diff --git a/searx/engines/xpath.py b/searx/engines/xpath.py index e5c0c5bea..18943bba4 100644 --- a/searx/engines/xpath.py +++ b/searx/engines/xpath.py @@ -42,7 +42,9 @@ def extract_text(xpath_results): return ''.join(xpath_results) else: # it's a element - return html_to_text(xpath_results.text_content()).strip() + text = html.tostring(xpath_results, encoding='unicode', method='text', with_tail=False) + text = text.strip().replace('\n', ' ') + return ' '.join(text.split()) def extract_url(xpath_results, search_url): diff --git a/searx/static/plugins/js/infinite_scroll.js b/searx/static/plugins/js/infinite_scroll.js index 1bc27e2e7..9cd582d7f 100644 --- a/searx/static/plugins/js/infinite_scroll.js +++ b/searx/static/plugins/js/infinite_scroll.js @@ -4,13 +4,9 @@ $(document).ready(function() { if ($(document).height() - win.height() == win.scrollTop()) { var formData = $('#pagination form:last').serialize(); if (formData) { - var pageno = $('#pagination input[name=pageno]:last').attr('value'); $('#pagination').html('
'); $.post('./', formData, function (data) { - var lastImageHref = $('.result-images:last a').attr('href'); var body = $(data); - $('a[href^="#open-modal"]:last').attr('href', '#open-modal-1-' + pageno); - body.find('.modal-image a:first').attr('href', lastImageHref); $('#pagination').remove(); $('#main_results').append('