mirror of
				https://github.com/searxng/searxng
				synced 2024-01-01 19:24:07 +01:00 
			
		
		
		
	Merge pull request #1647 from return42/deepl-engine
[mod] add deepl translation engine
This commit is contained in:
		
						commit
						8e9fb0b435
					
				
					 2 changed files with 71 additions and 0 deletions
				
			
		
							
								
								
									
										62
									
								
								searx/engines/deepl.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								searx/engines/deepl.py
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,62 @@ | ||||||
|  | # SPDX-License-Identifier: AGPL-3.0-or-later | ||||||
|  | # lint: pylint | ||||||
|  | """Deepl translation engine""" | ||||||
|  | 
 | ||||||
|  | from json import loads | ||||||
|  | 
 | ||||||
|  | about = { | ||||||
|  |     "website": 'https://deepl.com', | ||||||
|  |     "wikidata_id": 'Q43968444', | ||||||
|  |     "official_api_documentation": 'https://www.deepl.com/docs-api', | ||||||
|  |     "use_official_api": True, | ||||||
|  |     "require_api_key": True, | ||||||
|  |     "results": 'JSON', | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | engine_type = 'online_dictionary' | ||||||
|  | categories = ['general'] | ||||||
|  | 
 | ||||||
|  | url = 'https://api-free.deepl.com/v2/translate' | ||||||
|  | api_key = None | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | def request(_query, params): | ||||||
|  |     '''pre-request callback | ||||||
|  | 
 | ||||||
|  |     params<dict>: | ||||||
|  | 
 | ||||||
|  |     - ``method`` : POST/GET | ||||||
|  |     - ``headers``: {} | ||||||
|  |     - ``data``: {}  # if method == POST | ||||||
|  |     - ``url``: '' | ||||||
|  |     - ``category``: 'search category' | ||||||
|  |     - ``pageno``: 1  # number of the requested page | ||||||
|  |     ''' | ||||||
|  | 
 | ||||||
|  |     params['url'] = url | ||||||
|  |     params['method'] = 'POST' | ||||||
|  |     params['data'] = {'auth_key': api_key, 'text': params['query'], 'target_lang': params['to_lang'][1]} | ||||||
|  | 
 | ||||||
|  |     return params | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | def response(resp): | ||||||
|  |     results = [] | ||||||
|  |     result = loads(resp.text) | ||||||
|  |     translations = result['translations'] | ||||||
|  | 
 | ||||||
|  |     infobox = "<dl>" | ||||||
|  | 
 | ||||||
|  |     for translation in translations: | ||||||
|  |         infobox += f"<dd>{translation['text']}</dd>" | ||||||
|  | 
 | ||||||
|  |     infobox += "</dl>" | ||||||
|  | 
 | ||||||
|  |     results.append( | ||||||
|  |         { | ||||||
|  |             'infobox': 'Deepl', | ||||||
|  |             'content': infobox, | ||||||
|  |         } | ||||||
|  |     ) | ||||||
|  | 
 | ||||||
|  |     return results | ||||||
|  | @ -1684,6 +1684,15 @@ engines: | ||||||
|     engine: seznam |     engine: seznam | ||||||
|     disabled: true |     disabled: true | ||||||
| 
 | 
 | ||||||
|  |   # - name: deepl | ||||||
|  |   #   engine: deepl | ||||||
|  |   #   shortcut: dpl | ||||||
|  |   #   # You can use the engine using the official stable API, but you need an API key | ||||||
|  |   #   # See: https://www.deepl.com/pro-api?cta=header-pro-api | ||||||
|  |   #   api_key: ''  # required! | ||||||
|  |   #   timeout: 5.0 | ||||||
|  |   #   disabled: true | ||||||
|  | 
 | ||||||
|   - name: mojeek |   - name: mojeek | ||||||
|     shortcut: mjk |     shortcut: mjk | ||||||
|     engine: xpath |     engine: xpath | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Markus Heiser
						Markus Heiser