mirror of
				https://github.com/MCV-Software/TWBlue.git
				synced 2025-10-30 20:02:01 +00:00 
			
		
		
		
	
		
			
	
	
		
			45 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			45 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|  | # -*- coding: utf-8 -*- | ||
|  | """ Modified Libretranslatepy module which adds an user agent for making requests against more instances. """ | ||
|  | import json | ||
|  | from typing import Any, Dict | ||
|  | from urllib import request, parse | ||
|  | from libretranslatepy import LibreTranslateAPI | ||
|  | 
 | ||
|  | class CustomLibreTranslateAPI(LibreTranslateAPI): | ||
|  |     USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36" | ||
|  | 
 | ||
|  |     def _create_request(self, url: str, method: str, data: Dict[str, str]) -> request.Request: | ||
|  |         url_params = parse.urlencode(data) | ||
|  |         req = request.Request(url, method=method, data=url_params.encode()) | ||
|  |         req.add_header("User-Agent", self.USER_AGENT) | ||
|  |         return req | ||
|  | 
 | ||
|  |     def translate(self, q: str, source: str = "en", target: str = "es", timeout: int | None = None) -> Any: | ||
|  |         url = self.url + "translate" | ||
|  |         params: Dict[str, str] = {"q": q, "source": source, "target": target} | ||
|  |         if self.api_key is not None: | ||
|  |             params["api_key"] = self.api_key | ||
|  |         req = self._create_request(url=url, method="POST", data=params) | ||
|  |         response = request.urlopen(req, timeout=timeout) | ||
|  |         response_str = response.read().decode() | ||
|  |         return json.loads(response_str)["translatedText"] | ||
|  | 
 | ||
|  |     def detect(self, q: str, timeout: int | None = None) -> Any: | ||
|  |         url = self.url + "detect" | ||
|  |         params: Dict[str, str] = {"q": q} | ||
|  |         if self.api_key is not None: | ||
|  |             params["api_key"] = self.api_key | ||
|  |         req = self._create_request(url=url, method="POST", data=params) | ||
|  |         response = request.urlopen(req, timeout=timeout) | ||
|  |         response_str = response.read().decode() | ||
|  |         return json.loads(response_str) | ||
|  | 
 | ||
|  |     def languages(self, timeout: int | None = None) -> Any: | ||
|  |         url = self.url + "languages" | ||
|  |         params: Dict[str, str] = dict() | ||
|  |         if self.api_key is not None: | ||
|  |             params["api_key"] = self.api_key | ||
|  |         req = self._create_request(url=url, method="GET", data=params) | ||
|  |         response = request.urlopen(req, timeout=timeout) | ||
|  |         response_str = response.read().decode() | ||
|  |         return json.loads(response_str) |