mirror of
https://github.com/searxng/searxng.git
synced 2025-08-03 18:42:33 +02:00
Merge branch 'master' into bug/oscar-theme
This commit is contained in:
commit
1d86d0054f
33 changed files with 2253 additions and 56 deletions
|
@ -89,8 +89,7 @@ def response(resp):
|
|||
'content': content})
|
||||
|
||||
try:
|
||||
result_len_container = "".join(eval_xpath(dom, '//span[@class="sb_count"]/text()'))
|
||||
result_len_container = utils.to_string(result_len_container)
|
||||
result_len_container = "".join(eval_xpath(dom, '//span[@class="sb_count"]//text()'))
|
||||
if "-" in result_len_container:
|
||||
# Remove the part "from-to" for paginated request ...
|
||||
result_len_container = result_len_container[result_len_container.find("-") * 2 + 2:]
|
||||
|
@ -102,7 +101,7 @@ def response(resp):
|
|||
logger.debug('result error :\n%s', e)
|
||||
pass
|
||||
|
||||
if _get_offset_from_pageno(resp.search_params.get("pageno", 0)) > result_len:
|
||||
if result_len and _get_offset_from_pageno(resp.search_params.get("pageno", 0)) > result_len:
|
||||
return []
|
||||
|
||||
results.append({'number_of_results': result_len})
|
||||
|
|
|
@ -109,14 +109,22 @@ def response(resp):
|
|||
else:
|
||||
url = build_flickr_url(photo['ownerNsid'], photo['id'])
|
||||
|
||||
results.append({'url': url,
|
||||
'title': title,
|
||||
'img_src': img_src,
|
||||
'thumbnail_src': thumbnail_src,
|
||||
'content': content,
|
||||
'author': author,
|
||||
'source': source,
|
||||
'img_format': img_format,
|
||||
'template': 'images.html'})
|
||||
result = {
|
||||
'url': url,
|
||||
'img_src': img_src,
|
||||
'thumbnail_src': thumbnail_src,
|
||||
'source': source,
|
||||
'img_format': img_format,
|
||||
'template': 'images.html'
|
||||
}
|
||||
try:
|
||||
result['author'] = author.encode('utf-8')
|
||||
result['title'] = title.encode('utf-8')
|
||||
result['content'] = content.encode('utf-8')
|
||||
except:
|
||||
result['author'] = ''
|
||||
result['title'] = ''
|
||||
result['content'] = ''
|
||||
results.append(result)
|
||||
|
||||
return results
|
||||
|
|
|
@ -32,7 +32,7 @@ base_url = 'https://www.ina.fr'
|
|||
search_url = base_url + '/layout/set/ajax/recherche/result?autopromote=&hf={ps}&b={start}&type=Video&r=&{query}'
|
||||
|
||||
# specific xpath variables
|
||||
results_xpath = '//div[contains(@class,"search-results--list")]/div[@class="media"]'
|
||||
results_xpath = '//div[contains(@class,"search-results--list")]//div[@class="media-body"]'
|
||||
url_xpath = './/a/@href'
|
||||
title_xpath = './/h3[@class="h3--title media-heading"]'
|
||||
thumbnail_xpath = './/img/@src'
|
||||
|
@ -65,8 +65,11 @@ def response(resp):
|
|||
videoid = result.xpath(url_xpath)[0]
|
||||
url = base_url + videoid
|
||||
title = p.unescape(extract_text(result.xpath(title_xpath)))
|
||||
thumbnail = extract_text(result.xpath(thumbnail_xpath)[0])
|
||||
if thumbnail[0] == '/':
|
||||
try:
|
||||
thumbnail = extract_text(result.xpath(thumbnail_xpath)[0])
|
||||
except:
|
||||
thumbnail = ''
|
||||
if thumbnail and thumbnail[0] == '/':
|
||||
thumbnail = base_url + thumbnail
|
||||
d = extract_text(result.xpath(publishedDate_xpath)[0])
|
||||
d = d.split('/')
|
||||
|
|
|
@ -45,6 +45,8 @@ def request(query, params):
|
|||
def response(resp):
|
||||
results = []
|
||||
response_data = loads(resp.text)
|
||||
if not response_data:
|
||||
return results
|
||||
|
||||
for result in response_data['results']:
|
||||
url = _get_url(result)
|
||||
|
|
|
@ -29,7 +29,7 @@ def request(query, params):
|
|||
params['url'] = search_url
|
||||
params['method'] = 'POST'
|
||||
params['headers']['Content-type'] = "application/json"
|
||||
params['data'] = dumps({"query": query,
|
||||
params['data'] = dumps({"query": query.decode('utf-8'),
|
||||
"searchField": "ALL",
|
||||
"sortDirection": "ASC",
|
||||
"sortOrder": "RELEVANCY",
|
||||
|
|
|
@ -12,10 +12,14 @@
|
|||
|
||||
from json import loads
|
||||
from searx.url_utils import urlencode
|
||||
import requests
|
||||
import base64
|
||||
|
||||
# engine dependent config
|
||||
categories = ['music']
|
||||
paging = True
|
||||
api_client_id = None
|
||||
api_client_secret = None
|
||||
|
||||
# search-url
|
||||
url = 'https://api.spotify.com/'
|
||||
|
@ -31,6 +35,16 @@ def request(query, params):
|
|||
|
||||
params['url'] = search_url.format(query=urlencode({'q': query}), offset=offset)
|
||||
|
||||
r = requests.post(
|
||||
'https://accounts.spotify.com/api/token',
|
||||
data={'grant_type': 'client_credentials'},
|
||||
headers={'Authorization': 'Basic ' + base64.b64encode(
|
||||
"{}:{}".format(api_client_id, api_client_secret).encode('utf-8')
|
||||
).decode('utf-8')}
|
||||
)
|
||||
j = loads(r.text)
|
||||
params['headers'] = {'Authorization': 'Bearer {}'.format(j.get('access_token'))}
|
||||
|
||||
return params
|
||||
|
||||
|
||||
|
|
|
@ -79,9 +79,10 @@ engines:
|
|||
categories : science
|
||||
timeout : 4.0
|
||||
|
||||
- name : base
|
||||
engine : base
|
||||
shortcut : bs
|
||||
# tmp suspended: dh key too small
|
||||
# - name : base
|
||||
# engine : base
|
||||
# shortcut : bs
|
||||
|
||||
- name : wikipedia
|
||||
engine : wikipedia
|
||||
|
@ -408,7 +409,7 @@ engines:
|
|||
|
||||
- name : library genesis
|
||||
engine : xpath
|
||||
search_url : http://libgen.io/search.php?req={query}
|
||||
search_url : https://libgen.is/search.php?req={query}
|
||||
url_xpath : //a[contains(@href,"bookfi.net")]/@href
|
||||
title_xpath : //a[contains(@href,"book/")]/text()[1]
|
||||
content_xpath : //td/a[1][contains(@href,"=author")]/text()
|
||||
|
@ -464,7 +465,7 @@ engines:
|
|||
- name : openairedatasets
|
||||
engine : json_engine
|
||||
paging : True
|
||||
search_url : http://api.openaire.eu/search/datasets?format=json&page={pageno}&size=10&title={query}
|
||||
search_url : https://api.openaire.eu/search/datasets?format=json&page={pageno}&size=10&title={query}
|
||||
results_query : response/results/result
|
||||
url_query : metadata/oaf:entity/oaf:result/children/instance/webresource/url/$
|
||||
title_query : metadata/oaf:entity/oaf:result/title/$
|
||||
|
@ -476,7 +477,7 @@ engines:
|
|||
- name : openairepublications
|
||||
engine : json_engine
|
||||
paging : True
|
||||
search_url : http://api.openaire.eu/search/publications?format=json&page={pageno}&size=10&title={query}
|
||||
search_url : https://api.openaire.eu/search/publications?format=json&page={pageno}&size=10&title={query}
|
||||
results_query : response/results/result
|
||||
url_query : metadata/oaf:entity/oaf:result/children/instance/webresource/url/$
|
||||
title_query : metadata/oaf:entity/oaf:result/title/$
|
||||
|
@ -552,10 +553,11 @@ engines:
|
|||
timeout : 10.0
|
||||
disabled : True
|
||||
|
||||
- name : scanr structures
|
||||
shortcut: scs
|
||||
engine : scanr_structures
|
||||
disabled : True
|
||||
# tmp suspended: bad certificate
|
||||
# - name : scanr structures
|
||||
# shortcut: scs
|
||||
# engine : scanr_structures
|
||||
# disabled : True
|
||||
|
||||
- name : soundcloud
|
||||
engine : soundcloud
|
||||
|
@ -598,9 +600,12 @@ engines:
|
|||
shortcut : se
|
||||
categories : science
|
||||
|
||||
- name : spotify
|
||||
engine : spotify
|
||||
shortcut : stf
|
||||
# Spotify needs API credentials
|
||||
# - name : spotify
|
||||
# engine : spotify
|
||||
# shortcut : stf
|
||||
# api_client_id : *******
|
||||
# api_client_secret : *******
|
||||
|
||||
- name : startpage
|
||||
engine : startpage
|
||||
|
@ -812,7 +817,7 @@ locales:
|
|||
doi_resolvers :
|
||||
oadoi.org : 'https://oadoi.org/'
|
||||
doi.org : 'https://doi.org/'
|
||||
doai.io : 'http://doai.io/'
|
||||
sci-hub.tw : 'http://sci-hub.tw/'
|
||||
doai.io : 'https://doai.io/'
|
||||
sci-hub.tw : 'https://sci-hub.tw/'
|
||||
|
||||
default_doi_resolver : 'oadoi.org'
|
||||
|
|
|
@ -43,7 +43,7 @@ locales:
|
|||
doi_resolvers :
|
||||
oadoi.org : 'https://oadoi.org/'
|
||||
doi.org : 'https://doi.org/'
|
||||
doai.io : 'http://doai.io/'
|
||||
sci-hub.tw : 'http://sci-hub.tw/'
|
||||
doai.io : 'https://doai.io/'
|
||||
sci-hub.tw : 'https://sci-hub.tw/'
|
||||
|
||||
default_doi_resolver : 'oadoi.org'
|
||||
|
|
|
@ -125,6 +125,14 @@ $(document).ready(function() {
|
|||
}
|
||||
});
|
||||
|
||||
function nextResult(current, direction) {
|
||||
var next = current[direction]();
|
||||
while (!next.is('.result') && next.length !== 0) {
|
||||
next = next[direction]();
|
||||
}
|
||||
return next
|
||||
}
|
||||
|
||||
function highlightResult(which) {
|
||||
return function() {
|
||||
var current = $('.result[data-vim-selected]');
|
||||
|
@ -157,13 +165,13 @@ $(document).ready(function() {
|
|||
}
|
||||
break;
|
||||
case 'down':
|
||||
next = current.next('.result');
|
||||
next = nextResult(current, 'next');
|
||||
if (next.length === 0) {
|
||||
next = $('.result:first');
|
||||
}
|
||||
break;
|
||||
case 'up':
|
||||
next = current.prev('.result');
|
||||
next = nextResult(current, 'prev');
|
||||
if (next.length === 0) {
|
||||
next = $('.result:last');
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue