on master help sign in
minor fixes of pubmed engine
d20bba6Noémi Ványi
searx/engines/pubmed.py+7−10
@@ -11,9 +11,11 @@
11 More info on api: https://www.ncbi.nlm.nih.gov/books/NBK25501/
11 More info on api: https://www.ncbi.nlm.nih.gov/books/NBK25501/
12"""
12"""
13
13
14+from flask_babel import gettext
14from lxml import etree
15from lxml import etree
15from datetime import datetime
16from datetime import datetime
16−from searx.url_utils import urlencode, urlopen
17+from searx.url_utils import urlencode
18+from searx.poolrequests import get
17
19
18
20
19categories = ['science']
21categories = ['science']
@@ -46,12 +48,7 @@ def response(resp):
46 pubmed_retrieve_api_url = 'https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?'\
48 pubmed_retrieve_api_url = 'https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?'\
47 + 'db=pubmed&retmode=xml&id={pmids_string}'
49 + 'db=pubmed&retmode=xml&id={pmids_string}'
48
50
49− # handle Python2 vs Python3 management of bytes and strings
50− try:
51− pmids_results = etree.XML(resp.text.encode('utf-8'))
51+ pmids_results = etree.XML(resp.content)
52− except AttributeError:
53− pmids_results = etree.XML(resp.text)
54−
55 pmids = pmids_results.xpath('//eSearchResult/IdList/Id')
52 pmids = pmids_results.xpath('//eSearchResult/IdList/Id')
56 pmids_string = ''
53 pmids_string = ''
57
54
@@ -62,7 +59,7 @@ def response(resp):
62
59
63 retrieve_url_encoded = pubmed_retrieve_api_url.format(**retrieve_notice_args)
60 retrieve_url_encoded = pubmed_retrieve_api_url.format(**retrieve_notice_args)
64
61
65− search_results_xml = urlopen(retrieve_url_encoded).read()
62+ search_results_xml = get(retrieve_url_encoded).content
66 search_results = etree.XML(search_results_xml).xpath('//PubmedArticleSet/PubmedArticle/MedlineCitation')
63 search_results = etree.XML(search_results_xml).xpath('//PubmedArticleSet/PubmedArticle/MedlineCitation')
67
64
68 for entry in search_results:
65 for entry in search_results:
@@ -74,12 +71,12 @@ def response(resp):
74 try:
71 try:
75 content = entry.xpath('.//Abstract/AbstractText')[0].text
72 content = entry.xpath('.//Abstract/AbstractText')[0].text
76 except:
73 except:
77− content = 'No abstract is available for this publication.'
74+ content = gettext('No abstract is available for this publication.')
78
75
79 # If a doi is available, add it to the snipppet
76 # If a doi is available, add it to the snipppet
80 try:
77 try:
81 doi = entry.xpath('.//ELocationID[@EIdType="doi"]')[0].text
78 doi = entry.xpath('.//ELocationID[@EIdType="doi"]')[0].text
82− content = 'DOI: ' + doi + ' Abstract: ' + content
79+ content = 'DOI: {doi} Abstract: {content}'.format(doi=doi, content=content)
83 except:
80 except:
84 pass
81 pass
85
82
searx/settings.yml+1−1
@@ -464,7 +464,7 @@ engines:
464 engine : pubmed
464 engine : pubmed
465 shortcut : pub
465 shortcut : pub
466 categories: science
466 categories: science
467− oa_first : false
467+ timeout : 3.0
468
468
469 - name : qwant
469 - name : qwant
470 engine : qwant
470 engine : qwant
searx/url_utils.py−2
@@ -3,7 +3,6 @@ from sys import version_info
3if version_info[0] == 2:
3if version_info[0] == 2:
4 from urllib import quote, quote_plus, unquote, urlencode
4 from urllib import quote, quote_plus, unquote, urlencode
5 from urlparse import parse_qs, parse_qsl, urljoin, urlparse, urlunparse, ParseResult
5 from urlparse import parse_qs, parse_qsl, urljoin, urlparse, urlunparse, ParseResult
6− from urllib2 import urlopen
7else:
6else:
8 from urllib.parse import (
7 from urllib.parse import (
9 parse_qs,
8 parse_qs,
@@ -17,7 +16,6 @@ else:
17 urlunparse,
16 urlunparse,
18 ParseResult
17 ParseResult
19 )
18 )
20− from urllib.request import urlopen
21
19
22
20
23__export__ = (parse_qs,
21__export__ = (parse_qs,