forked from zaclys/searxng
		
	Merge pull request #160 from searxng/google_mobile_ui
[experimental] google: use the mobile UI
This commit is contained in:
		
						commit
						f4da4bafa7
					
				
					 2 changed files with 25 additions and 11 deletions
				
			
		|  | @ -34,6 +34,7 @@ categories = ['general'] | |||
| paging = True | ||||
| time_range_support = True | ||||
| safesearch = True | ||||
| use_mobile_ui = False | ||||
| supported_languages_url = 'https://www.google.com/preferences?#languages' | ||||
| 
 | ||||
| # based on https://en.wikipedia.org/wiki/List_of_Google_domains and tests | ||||
|  | @ -266,6 +267,13 @@ def request(query, params): | |||
|         params, supported_languages, language_aliases, True | ||||
|     ) | ||||
| 
 | ||||
|     additional_parameters = {} | ||||
|     if use_mobile_ui: | ||||
|         additional_parameters = { | ||||
|             'asearch': "arc", | ||||
|             'async': 'arc_id:srp_510,ffilt:all,ve_name:MoreResultsContainer,next_id:srp_5,use_ac:true,_id:arc-srp_510,_pms:qs,_fmt:pc'  # pylint: disable=line-too-long | ||||
|         } | ||||
| 
 | ||||
|     # https://www.google.de/search?q=corona&hl=de&lr=lang_de&start=0&tbs=qdr%3Ad&safe=medium | ||||
|     query_url = 'https://' + lang_info['subdomain'] + '/search' + "?" + urlencode({ | ||||
|         'q': query, | ||||
|  | @ -273,6 +281,7 @@ def request(query, params): | |||
|         'ie': "utf8", | ||||
|         'oe': "utf8", | ||||
|         'start': offset, | ||||
|         **additional_parameters, | ||||
|     }) | ||||
| 
 | ||||
|     if params['time_range'] in time_range_dict: | ||||
|  | @ -282,9 +291,12 @@ def request(query, params): | |||
|     params['url'] = query_url | ||||
| 
 | ||||
|     params['headers'].update(lang_info['headers']) | ||||
|     params['headers']['Accept'] = ( | ||||
|         'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' | ||||
|     ) | ||||
|     if use_mobile_ui: | ||||
|         params['headers']['Accept'] = '*/*' | ||||
|     else: | ||||
|         params['headers']['Accept'] = ( | ||||
|             'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' | ||||
|         ) | ||||
| 
 | ||||
|     return params | ||||
| 
 | ||||
|  | @ -307,14 +319,15 @@ def response(resp): | |||
|         logger.debug("did not find 'answer'") | ||||
| 
 | ||||
|     # results --> number_of_results | ||||
|         try: | ||||
|             _txt = eval_xpath_getindex(dom, '//div[@id="result-stats"]//text()', 0) | ||||
|             _digit = ''.join([n for n in _txt if n.isdigit()]) | ||||
|             number_of_results = int(_digit) | ||||
|             results.append({'number_of_results': number_of_results}) | ||||
|         except Exception as e:  # pylint: disable=broad-except | ||||
|             logger.debug("did not 'number_of_results'") | ||||
|             logger.error(e, exc_info=True) | ||||
|         if not use_mobile_ui: | ||||
|             try: | ||||
|                 _txt = eval_xpath_getindex(dom, '//div[@id="result-stats"]//text()', 0) | ||||
|                 _digit = ''.join([n for n in _txt if n.isdigit()]) | ||||
|                 number_of_results = int(_digit) | ||||
|                 results.append({'number_of_results': number_of_results}) | ||||
|             except Exception as e:  # pylint: disable=broad-except | ||||
|                 logger.debug("did not 'number_of_results'") | ||||
|                 logger.error(e, exc_info=True) | ||||
| 
 | ||||
|     # parse results | ||||
|     for result in eval_xpath_list(dom, results_xpath): | ||||
|  |  | |||
|  | @ -583,6 +583,7 @@ engines: | |||
|   - name: google | ||||
|     engine: google | ||||
|     shortcut: go | ||||
|     use_mobile_ui: true | ||||
|     # additional_tests: | ||||
|     #   android: *test_android | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Alexandre Flament
						Alexandre Flament