| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 | # SPDX-License-Identifier: AGPL-3.0-or-later""" APK Mirror"""from urllib.parse import urlencodefrom lxml import htmlfrom searx.utils import extract_text, eval_xpath_list, eval_xpath_getindex# aboutabout = {    "website": 'https://www.apkmirror.com',    "wikidata_id": None,    "official_api_documentation": None,    "use_official_api": False,    "require_api_key": False,    "results": 'HTML',}# engine dependent configcategories = ['it']paging = True# I am not 100% certain about this, as apkmirror appears to be a wordpress site,# which might support time_range searching. If you want to implement it, go ahead.time_range_support = False# search-urlbase_url = 'https://www.apkmirror.com'search_url = base_url + '/?post_type=app_release&searchtype=apk&page={pageno}&{query}'# do search-requestdef request(query, params):    params['url'] = search_url.format(pageno=params['pageno'],                                      query=urlencode({'s': query}))    return params# get response from search-requestdef response(resp):    results = []    dom = html.fromstring(resp.text)    # parse results    for result in eval_xpath_list(dom, './/div[@id="content"]/div[@class="listWidget"]//div[@class="appRow"]'):        link = eval_xpath_getindex(result, './/h5/a', 0)        url = base_url + link.attrib.get('href') + '#downloads'        title = extract_text(link)        thumbnail_src = base_url\            + eval_xpath_getindex(result, './/img', 0).attrib.get('src').replace('&w=32&h=32', '&w=64&h=64')        res = {            'url': url,            'title': title,            'thumbnail_src': thumbnail_src        }        # append result        results.append(res)    # return results    return results
 |