[fix] google play apps engine: implement engines/google_play_apps.py
This commit is contained in:
		
							parent
							
								
									189df7db4e
								
							
						
					
					
						commit
						8883aed132
					
				
							
								
								
									
										68
									
								
								searx/engines/google_play_apps.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								searx/engines/google_play_apps.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,68 @@ | |||||||
|  | # SPDX-License-Identifier: AGPL-3.0-or-later | ||||||
|  | """ | ||||||
|  |   Google Play Apps | ||||||
|  | """ | ||||||
|  | 
 | ||||||
|  | from urllib.parse import urlencode | ||||||
|  | from lxml import html | ||||||
|  | from searx.utils import ( | ||||||
|  |     eval_xpath, | ||||||
|  |     extract_url, | ||||||
|  |     extract_text, | ||||||
|  |     eval_xpath_list, | ||||||
|  |     eval_xpath_getindex, | ||||||
|  | ) | ||||||
|  | 
 | ||||||
|  | about = { | ||||||
|  |     "website": "https://play.google.com/", | ||||||
|  |     "wikidata_id": "Q79576", | ||||||
|  |     "use_official_api": False, | ||||||
|  |     "require_api_key": False, | ||||||
|  |     "results": "HTML", | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | categories = ["files", "apps"] | ||||||
|  | search_url = "https://play.google.com/store/search?{query}&c=apps" | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | def request(query, params): | ||||||
|  |     params["url"] = search_url.format(query=urlencode({"q": query})) | ||||||
|  | 
 | ||||||
|  |     return params | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | def response(resp): | ||||||
|  |     results = [] | ||||||
|  | 
 | ||||||
|  |     dom = html.fromstring(resp.text) | ||||||
|  | 
 | ||||||
|  |     if eval_xpath(dom, '//div[@class="v6DsQb"]'): | ||||||
|  |         return [] | ||||||
|  | 
 | ||||||
|  |     spot = eval_xpath_getindex(dom, '//div[@class="ipRz4"]', 0, None) | ||||||
|  |     if spot is not None: | ||||||
|  |         url = extract_url(eval_xpath(spot, './a[@class="Qfxief"]/@href'), search_url) | ||||||
|  |         title = extract_text(eval_xpath(spot, './/div[@class="vWM94c"]')) | ||||||
|  |         content = extract_text(eval_xpath(spot, './/div[@class="LbQbAe"]')) | ||||||
|  |         img = extract_text(eval_xpath(spot, './/img[@class="T75of bzqKMd"]/@src')) | ||||||
|  | 
 | ||||||
|  |         results.append({"url": url, "title": title, "content": content, "img_src": img}) | ||||||
|  | 
 | ||||||
|  |     more = eval_xpath_list(dom, '//c-wiz[@jsrenderer="RBsfwb"]//div[@role="listitem"]', min_len=1) | ||||||
|  |     for result in more: | ||||||
|  |         url = extract_url(eval_xpath(result, ".//a/@href"), search_url) | ||||||
|  |         title = extract_text(eval_xpath(result, './/span[@class="DdYX5"]')) | ||||||
|  |         content = extract_text(eval_xpath(result, './/span[@class="wMUdtb"]')) | ||||||
|  |         img = extract_text( | ||||||
|  |             eval_xpath( | ||||||
|  |                 result, | ||||||
|  |                 './/img[@class="T75of stzEZd" or @class="T75of etjhNc Q8CSx "]/@src', | ||||||
|  |             ) | ||||||
|  |         ) | ||||||
|  | 
 | ||||||
|  |         results.append({"url": url, "title": title, "content": content, "img_src": img}) | ||||||
|  | 
 | ||||||
|  |     for suggestion in eval_xpath_list(dom, '//c-wiz[@jsrenderer="qyd4Kb"]//div[@class="ULeU3b neq64b"]'): | ||||||
|  |         results.append({"suggestion": extract_text(eval_xpath(suggestion, './/div[@class="Epkrse "]'))}) | ||||||
|  | 
 | ||||||
|  |     return results | ||||||
| @ -705,23 +705,9 @@ engines: | |||||||
|     shortcut: gos |     shortcut: gos | ||||||
| 
 | 
 | ||||||
|   - name: google play apps |   - name: google play apps | ||||||
|     engine: xpath |     engine: google_play_apps | ||||||
|     search_url: https://play.google.com/store/search?q={query}&c=apps |  | ||||||
|     results_xpath: '//div[@class="ImZGtf mpg5gc"]' |  | ||||||
|     title_xpath: './/div[@class="RZEgze"]//div[@class="kCSSQe"]//a' |  | ||||||
|     url_xpath: './/div[@class="RZEgze"]//div[@class="kCSSQe"]//a/@href' |  | ||||||
|     content_xpath: './/div[@class="RZEgze"]//a[@class="mnKHRc"]' |  | ||||||
|     thumbnail_xpath: './/div[@class="uzcko"]/div/span[1]//img/@data-src' |  | ||||||
|     categories: [files, apps] |  | ||||||
|     shortcut: gpa |     shortcut: gpa | ||||||
|     disabled: true |     disabled: true | ||||||
|     about: |  | ||||||
|       website: https://play.google.com/ |  | ||||||
|       wikidata_id: Q79576 |  | ||||||
|       official_api_documentation: |  | ||||||
|       use_official_api: false |  | ||||||
|       require_api_key: false |  | ||||||
|       results: HTML |  | ||||||
| 
 | 
 | ||||||
|   - name: google play movies |   - name: google play movies | ||||||
|     engine: xpath |     engine: xpath | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 ta
						ta