on master help sign in
[fix] APKMirror engine - update xpath selectors and fix img_src

BTW: make the code slightly more readable Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>

commit96422e5c9f056e233d53d819ec38ed7bfad5dc83 authorMarkus Heiser <markus.heiser@darmarit.de> dateTue 9 Mar 2021, 08:34 (6 years ago) parentccf5ac9
2 files changed+23−20
Makefile+1 searx/engines/apkmirror.py+22−20
Makefile+1
@@ -197,6 +197,7 @@ PYLINT_FILES=\
197197 searx/engines/mediathekviewweb.py \
198198 searx/engines/google_scholar.py \
199199 searx/engines/yahoo_news.py \
200+ searx/engines/apkmirror.py \
200201 searx_extra/update/update_external_bangs.py
201202
202203test.pylint: pyenvinstall
searx/engines/apkmirror.py+22−20
@@ -1,13 +1,21 @@
11# SPDX-License-Identifier: AGPL-3.0-or-later
2+"""APKMirror
23"""
3− APK Mirror
4−"""
4+
5+# pylint: disable=invalid-name, missing-function-docstring
56
67from urllib.parse import urlencode
78from lxml import html
8−from searx.utils import extract_text, eval_xpath_list, eval_xpath_getindex
99
10−# about
10+from searx import logger
11+from searx.utils import (
12+ eval_xpath_list,
13+ eval_xpath_getindex,
14+ extract_text,
15+)
16+
17+logger = logger.getChild('APKMirror engine')
18+
1119about = {
1220 "website": 'https://www.apkmirror.com',
1321 "wikidata_id": None,
@@ -18,11 +26,8 @@ about = {
1826}
1927
2028# engine dependent config
21−categories = ['it']
29+categories = ['files']
2230paging = True
23−
24−# I am not 100% certain about this, as apkmirror appears to be a wordpress site,
25−# which might support time_range searching. If you want to implement it, go ahead.
2631time_range_support = False
2732
2833# search-url
@@ -30,37 +35,34 @@ base_url = 'https://www.apkmirror.com'
3035search_url = base_url + '/?post_type=app_release&searchtype=apk&page={pageno}&{query}'
3136
3237
33−# do search-request
3438def request(query, params):
35−
36− params['url'] = search_url.format(pageno=params['pageno'],
37− query=urlencode({'s': query}))
39+ params['url'] = search_url.format(
40+ pageno = params['pageno'],
41+ query = urlencode({'s': query}),
42+ )
43+ logger.debug("query_url --> %s", params['url'])
3844 return params
3945
4046
41−# get response from search-request
4247def response(resp):
4348 results = []
4449
4550 dom = html.fromstring(resp.text)
4651
4752 # parse results
48− for result in eval_xpath_list(dom, './/div[@id="content"]/div[@class="listWidget"]//div[@class="appRow"]'):
53+ for result in eval_xpath_list(dom, "//div[@id='content']//div[@class='listWidget']/div/div[@class='appRow']"):
4954
5055 link = eval_xpath_getindex(result, './/h5/a', 0)
56+
5157 url = base_url + link.attrib.get('href') + '#downloads'
5258 title = extract_text(link)
53− thumbnail_src = base_url\
54− + eval_xpath_getindex(result, './/img', 0).attrib.get('src').replace('&w=32&h=32', '&w=64&h=64')
55−
59+ img_src = base_url + eval_xpath_getindex(result, './/img/@src', 0)
5660 res = {
5761 'url': url,
5862 'title': title,
59− 'thumbnail_src': thumbnail_src
63+ 'img_src': img_src
6064 }
6165
62− # append result
6366 results.append(res)
6467
65− # return results
6668 return results