62 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			62 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|  | """
 | ||
|  |  APK Mirror | ||
|  | 
 | ||
|  |  @website     https://www.apkmirror.com | ||
|  | 
 | ||
|  |  @using-api   no | ||
|  |  @results     HTML | ||
|  |  @stable      no (HTML can change) | ||
|  |  @parse       url, title, thumbnail_src | ||
|  | """
 | ||
|  | 
 | ||
|  | from lxml import html | ||
|  | from searx.engines.xpath import extract_text | ||
|  | from searx.url_utils import urlencode | ||
|  | 
 | ||
|  | # engine dependent config | ||
|  | categories = ['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-url | ||
|  | base_url = 'https://www.apkmirror.com' | ||
|  | search_url = base_url + '/?post_type=app_release&searchtype=apk&page={pageno}&{query}' | ||
|  | 
 | ||
|  | 
 | ||
|  | # do search-request | ||
|  | def request(query, params): | ||
|  | 
 | ||
|  |     params['url'] = search_url.format(pageno=params['pageno'], | ||
|  |                                       query=urlencode({'s': query})) | ||
|  |     return params | ||
|  | 
 | ||
|  | 
 | ||
|  | # get response from search-request | ||
|  | def response(resp): | ||
|  |     results = [] | ||
|  | 
 | ||
|  |     dom = html.fromstring(resp.text) | ||
|  | 
 | ||
|  |     # parse results | ||
|  |     for result in dom.xpath('.//div[@id="content"]/div[@class="listWidget"]/div[@class="appRow"]'): | ||
|  | 
 | ||
|  |         link = result.xpath('.//h5/a')[0] | ||
|  |         url = base_url + link.attrib.get('href') + '#downloads' | ||
|  |         title = extract_text(link) | ||
|  |         thumbnail_src = base_url + result.xpath('.//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 |