mirror of
				https://github.com/searxng/searxng.git
				synced 2025-10-31 10:37:06 -04:00 
			
		
		
		
	Wolfie kinda works using API
This commit is contained in:
		
							parent
							
								
									47b4a85fe3
								
							
						
					
					
						commit
						4578575c28
					
				
							
								
								
									
										60
									
								
								searx/engines/wolframalpha.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								searx/engines/wolframalpha.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,60 @@ | |||||||
|  | """ | ||||||
|  |  WolframAlpha | ||||||
|  | 
 | ||||||
|  |  @website     http://www.wolframalpha.com/ | ||||||
|  | 
 | ||||||
|  |  @using-api   yes | ||||||
|  |  @results     no c | ||||||
|  |  @stable      i guess so | ||||||
|  |  @parse       result | ||||||
|  | """ | ||||||
|  | 
 | ||||||
|  | import wolframalpha | ||||||
|  | 
 | ||||||
|  | # engine dependent config | ||||||
|  | paging = False | ||||||
|  | 
 | ||||||
|  | # search-url | ||||||
|  | # url = 'http://www.wolframalpha.com/' | ||||||
|  | # search_url = url+'input/?{query}' | ||||||
|  | 
 | ||||||
|  | client_id = '5952JX-X52L3VKWT8' | ||||||
|  | ''' | ||||||
|  | # do search-request | ||||||
|  | def request(query, params): | ||||||
|  |     params['url'] = search_url.format(query=urlencode({'i': query})) | ||||||
|  |     print params | ||||||
|  | 
 | ||||||
|  |     return params | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # get response from search-request | ||||||
|  | def response(resp): | ||||||
|  |     print resp | ||||||
|  | 
 | ||||||
|  |     dom = html.fromstring(resp.text) | ||||||
|  |     #resshit = dom.find_class('output pnt') | ||||||
|  |     #for shit in resshit: | ||||||
|  |         #print shit.text_content() | ||||||
|  |     results = [] | ||||||
|  |     #results.append({'url': 'https://wikipedia.org', 'title': 'Wolfie, lol', 'content': 'es kwatro'}) | ||||||
|  |     #print results | ||||||
|  |     #return results | ||||||
|  | 
 | ||||||
|  |     # parse results | ||||||
|  |     for result in dom.xpath(results_xpath): | ||||||
|  |         print result | ||||||
|  |          | ||||||
|  |         link = result.xpath(link_xpath)[0] | ||||||
|  |         href = urljoin(url, link.attrib.get('href')) | ||||||
|  |         title = escape(extract_text(link)) | ||||||
|  |         content = escape(extract_text(result.xpath(content_xpath))) | ||||||
|  | 
 | ||||||
|  |         # append result | ||||||
|  |         results.append({'url': href, | ||||||
|  |                         'title': title, | ||||||
|  |                         'content': content}) | ||||||
|  | 
 | ||||||
|  |     print results | ||||||
|  |     return results | ||||||
|  | ''' | ||||||
							
								
								
									
										70
									
								
								searx/engines/wolframalpha_api.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								searx/engines/wolframalpha_api.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,70 @@ | |||||||
|  | # Wolfram Alpha (Maths) | ||||||
|  | # | ||||||
|  | # @website     http://www.wolframalpha.com | ||||||
|  | # @provide-api yes (http://api.wolframalpha.com/v2/) | ||||||
|  | # | ||||||
|  | # @using-api   yes | ||||||
|  | # @results     XML | ||||||
|  | # @stable      yes | ||||||
|  | # @parse       result | ||||||
|  | 
 | ||||||
|  | from urllib import urlencode | ||||||
|  | from lxml import etree | ||||||
|  | from searx.engines.xpath import extract_text | ||||||
|  | from searx.utils import html_to_text | ||||||
|  | 
 | ||||||
|  | # search-url | ||||||
|  | base_url = 'http://api.wolframalpha.com/v2/query' | ||||||
|  | search_url = base_url + '?appid={api_key}&{query}&format=plaintext' | ||||||
|  | site_url = 'http://wolframalpha.com/input/?{query}' | ||||||
|  | 
 | ||||||
|  | #embedded_url = '<iframe width="540" height="304" ' +\ | ||||||
|  | #    'data-src="//www.youtube-nocookie.com/embed/{videoid}" ' +\ | ||||||
|  | #    'frameborder="0" allowfullscreen></iframe>' | ||||||
|  | 
 | ||||||
|  | # do search-request | ||||||
|  | def request(query, params): | ||||||
|  |     params['url'] = search_url.format(query=urlencode({'input': query}), | ||||||
|  |                                       api_key=api_key) | ||||||
|  | 
 | ||||||
|  |     # need this for url in response | ||||||
|  |     global my_query | ||||||
|  |     my_query = query | ||||||
|  | 
 | ||||||
|  |     return params | ||||||
|  | 
 | ||||||
|  | # replace private user area characters to make text legible | ||||||
|  | def replace_pua_chars(text): | ||||||
|  |     pua_chars = { u'\uf74c': 'd', | ||||||
|  |                   u'\uf74d': u'\u212f', | ||||||
|  |                   u'\uf74e': 'i', | ||||||
|  |                   u'\uf7d9': '=' } | ||||||
|  | 
 | ||||||
|  |     for k, v in pua_chars.iteritems(): | ||||||
|  |         text = text.replace(k, v) | ||||||
|  | 
 | ||||||
|  |     return text | ||||||
|  | 
 | ||||||
|  | # get response from search-request | ||||||
|  | def response(resp): | ||||||
|  |     results = [] | ||||||
|  | 
 | ||||||
|  |     search_results = etree.XML(resp.content) | ||||||
|  | 
 | ||||||
|  |     # return empty array if there are no results | ||||||
|  |     if search_results.xpath('/queryresult[attribute::success="false"]'): | ||||||
|  |         return [] | ||||||
|  | 
 | ||||||
|  |     # parse result | ||||||
|  |     result = search_results.xpath('//pod[attribute::primary="true"]/subpod/plaintext')[0].text | ||||||
|  |     result = replace_pua_chars(result) | ||||||
|  | 
 | ||||||
|  |     # bind url from site | ||||||
|  |     result_url = site_url.format(query=urlencode({'i': my_query})) | ||||||
|  | 
 | ||||||
|  |     # append result | ||||||
|  |     results.append({'url': result_url, | ||||||
|  |                     'title': result}) | ||||||
|  | 
 | ||||||
|  |     # return results | ||||||
|  |     return results | ||||||
| @ -98,7 +98,7 @@ def make_callback(engine_name, callback, params, result_container): | |||||||
|         with threading.RLock(): |         with threading.RLock(): | ||||||
|             engines[engine_name].stats['page_load_time'] += search_duration |             engines[engine_name].stats['page_load_time'] += search_duration | ||||||
| 
 | 
 | ||||||
|         timeout_overhead = 0.2  # seconds |         timeout_overhead = 0.5  # seconds | ||||||
|         timeout_limit = engines[engine_name].timeout + timeout_overhead |         timeout_limit = engines[engine_name].timeout + timeout_overhead | ||||||
| 
 | 
 | ||||||
|         if search_duration > timeout_limit: |         if search_duration > timeout_limit: | ||||||
|  | |||||||
| @ -300,6 +300,12 @@ engines: | |||||||
|     engine : vimeo |     engine : vimeo | ||||||
|     shortcut : vm |     shortcut : vm | ||||||
| 
 | 
 | ||||||
|  |   - name : wolframalpha | ||||||
|  |     shortcut : wa | ||||||
|  |     engine : wolframalpha_api | ||||||
|  |     api_key: '5952JX-X52L3VKWT8' | ||||||
|  |     timeout: 6.0 | ||||||
|  | 
 | ||||||
| #The blekko technology and team have joined IBM Watson! -> https://blekko.com/ | #The blekko technology and team have joined IBM Watson! -> https://blekko.com/ | ||||||
| #  - name : blekko images | #  - name : blekko images | ||||||
| #    engine : blekko_images | #    engine : blekko_images | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user