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('
'); $('#main_results').append(body.find('.result')); diff --git a/searx/static/themes/oscar/css/logicodev.min.css b/searx/static/themes/oscar/css/logicodev.min.css index 46b8b98ad..33d451b8f 100644 Binary files a/searx/static/themes/oscar/css/logicodev.min.css and b/searx/static/themes/oscar/css/logicodev.min.css differ diff --git a/searx/static/themes/oscar/css/pointhi.min.css b/searx/static/themes/oscar/css/pointhi.min.css index 722e1e0b8..921d60a32 100644 Binary files a/searx/static/themes/oscar/css/pointhi.min.css and b/searx/static/themes/oscar/css/pointhi.min.css differ diff --git a/searx/static/themes/oscar/less/logicodev/modal-pic.less b/searx/static/themes/oscar/less/logicodev/modal-pic.less deleted file mode 100644 index a29d24173..000000000 --- a/searx/static/themes/oscar/less/logicodev/modal-pic.less +++ /dev/null @@ -1,77 +0,0 @@ -.modal-image { - position: fixed; - top: 0; - right: 0; - bottom: 0; - left: 0; - background: rgba(0,0,0,0.8); - z-index: 1000000001; - opacity:0 !important; - pointer-events: none; - - button { - display: none; - } - - &:target { - opacity: 1 !important; - pointer-events: auto; - } - - & > div { - margin: 2% auto; - width: 97%; - background: @dim-gray; - border: @gray 0.1rem solid; - } - - @media (min-width: 769px) { - & > div { - max-width: 60.0rem; - } - } - - .image-paging-left { - margin-right: 1.0rem; - margin-top: 0.5rem; - width:15px; - height:15px; - background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAAABmJLR0QA/wD/AP+gvaeTAAAACXBI -WXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4AweDQoOuikqUQAAAB1pVFh0Q29tbWVudAAAAAAAQ3Jl -YXRlZCB3aXRoIEdJTVBkLmUHAAAAiElEQVQoz6XTrQ0CQRCG4SesQHI5g6EAqIEewNLSVUACzfAT -BApDDSgSBAaJORKyauf2czOZdybzl5SpxR5j3H/OUQHYoMMMNwE1fcUT5hFwUgPuenAxBDxHwRZb -HKMgbPDCuiQ4ZfYDU6xwxTNafXDP1dOu3nP1heUJDnmCVAB/cMES7/+v+gIq0Bs3k6NL9AAAAABJ -RU5ErkJggg==) 96% no-repeat; - } - - .image-paging-right { - margin-left: 1.2rem; - margin-top: 0.5rem; - width:15px; - height:15px; - background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAAABmJLR0QA/wD/AP+gvaeTAAAACXBI - WXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4AweDQon+JuyPQAAAB1pVFh0Q29tbWVudAAAAAAAQ3Jl - YXRlZCB3aXRoIEdJTVBkLmUHAAAAaklEQVQoz73TsQ2DUAxF0SMWAFEzwGcaWhgpEyAlbQYJMACj - sAINTaiIf8Tt3FzL9jPfDHijdoHiVK9o8EAlQMKM1z8EZUTQHoJnjmDJFUwYr17hTIcN/W2dwzOH - tx2+czhhCZ9oNH/6qh1F2RaYgWxrQwAAAABJRU5ErkJggg==); - - } - - .image-container::before { - display: block; - min-width: 1.0rem; - max-width: 60.0rem; - min-height: 10.0rem; - height: 30.0rem; - content: ""; - } -} - -.modal-close { - position:fixed; - top: 0; - left: 0; - height: 100% !important; - width: 100% !important; - z-index: -1; -} diff --git a/searx/static/themes/oscar/less/logicodev/oscar.less b/searx/static/themes/oscar/less/logicodev/oscar.less index ecb3a0799..55181cb9c 100644 --- a/searx/static/themes/oscar/less/logicodev/oscar.less +++ b/searx/static/themes/oscar/less/logicodev/oscar.less @@ -19,5 +19,3 @@ @import "cursor.less"; @import "code.less"; - -@import "modal-pic.less"; diff --git a/searx/static/themes/oscar/less/pointhi/oscar.less b/searx/static/themes/oscar/less/pointhi/oscar.less index 4529801bb..4e2fee129 100644 --- a/searx/static/themes/oscar/less/pointhi/oscar.less +++ b/searx/static/themes/oscar/less/pointhi/oscar.less @@ -17,7 +17,3 @@ @import "code.less"; @import "navbar.less"; - -@import "../logicodev/variables.less"; - -@import "../logicodev/modal-pic.less"; diff --git a/searx/templates/oscar/result_templates/images.html b/searx/templates/oscar/result_templates/images.html index bf154e793..b23f34915 100644 --- a/searx/templates/oscar/result_templates/images.html +++ b/searx/templates/oscar/result_templates/images.html @@ -1,54 +1,39 @@ - - {{ result.title|striptags }} +{% from 'oscar/macros.html' import draw_favicon %} + + + {{ result.title|striptags }} - - -