Loading modules/translators/trans_deepl_api_free.py 0 → 100644 +52 −0 Original line number Diff line number Diff line from .base import * import httpx @register_translator('DeepL Free v2') class DeepLTranslatorv2(BaseTranslator): concate_text = False params: Dict = { 'api_url': 'https://dpltrnslt.bropinesd.online/translate', # EndPoint will be provided by the user 'delay': 0.0, } # Setup your endpoint api with https://github.com/OwO-Network/DeepLX def _setup_translator(self): self.lang_map['简体中文'] = 'zh' self.lang_map['日本語'] = 'ja' self.lang_map['English'] = 'en' self.lang_map['한국어'] = 'ko' self.lang_map['Tiếng Việt'] = 'vi' self.lang_map['čeština'] = 'cs' self.lang_map['Nederlands'] = 'nl' self.lang_map['Français'] = 'fr' self.lang_map['Deutsch'] = 'de' self.lang_map['magyar nyelv'] = 'hu' self.lang_map['Italiano'] = 'it' self.lang_map['Polski'] = 'pl' self.lang_map['Português'] = 'pt' self.lang_map['limba română'] = 'ro' self.lang_map['русский язык'] = 'ru' self.lang_map['Español'] = 'es' self.lang_map['Türk dili'] = 'tr' # Add other languages here def _translate(self, src_list: List[str]) -> List[str]: tr_list = [] for text in src_list: data = { 'text': text, 'source_lang': 'auto', # or your source language 'target_lang': self.lang_map[self.lang_target] } response = requests.post(self.params['api_url'], json=data) if response.status_code == 200: # Extract the translated text from the 'data' key translated_text = response.json().get('data', '') tr_list.append(translated_text) else: tr_list.append('') # Or error handling return tr_list modules/translators/trans_yandex.py +30 −9 Original line number Diff line number Diff line Loading @@ -28,10 +28,27 @@ class YandexTranslator(BaseTranslator): self.lang_map['Español'] = 'es' self.lang_map['Türk dili'] = 'tr' self.api_url_v2 = "https://translate.yandex.net/api/v1.5/tr.json/translate" self.api_url = 'https://translate.api.cloud.yandex.net/translate/v2/translate' def _translate(self, src_list: List[str]) -> List[str]: def _translate_with_v2(self, src_list: List[str]) -> List[str]: tr_list = [] for text in src_list: params = { 'key': self.params['api_key'], 'text': text, 'lang': self.lang_map[self.lang_target], 'format': 'plain', } response = requests.get(self.api_url_v2, params=params) if response.status_code == 200: translated_text = response.json().get('text', [''])[0] tr_list.append(translated_text) else: tr_list.append('') return tr_list def _translate_with_standard(self, src_list: List[str]) -> List[str]: body = { "targetLanguageCode": self.lang_map[self.lang_target], "texts": src_list, Loading @@ -43,12 +60,16 @@ class YandexTranslator(BaseTranslator): "Authorization": "Api-Key {0}".format(self.params['api_key']) } translations = requests.post(self.api_url, json=body, headers=headers).json()['translations'] tr_list = [] for tr in translations: if 'text' in tr: tr_list.append(tr['text']) response = requests.post(self.api_url, json=body, headers=headers) if response.status_code == 200: translations = response.json().get('translations', []) tr_list = [tr.get('text', '') for tr in translations] else: tr_list.append('') tr_list = [''] * len(src_list) return tr_list def _translate(self, src_list: List[str]) -> List[str]: if self.params['api_key'].startswith("trnsl."): return self._translate_with_v2(src_list) else: return self._translate_with_standard(src_list) modules/translators/trans_yandexfree.py 0 → 100644 +51 −0 Original line number Diff line number Diff line from .base import * @register_translator('YandexFree') class YandexTranslatorFree(BaseTranslator): concate_text = False params: Dict = { 'endpoint': 'https://translate.toil.cc/translate', # Service endpoint 'delay': 0.0, # Go to https://github.com/FOSWLY/translate-backend to setup your API backend } def _setup_translator(self): self.lang_map['简体中文'] = 'zh' self.lang_map['日本語'] = 'ja' self.lang_map['English'] = 'en' self.lang_map['한국어'] = 'ko' self.lang_map['Tiếng Việt'] = 'vi' self.lang_map['čeština'] = 'cs' self.lang_map['Nederlands'] = 'nl' self.lang_map['Français'] = 'fr' self.lang_map['Deutsch'] = 'de' self.lang_map['magyar nyelv'] = 'hu' self.lang_map['Italiano'] = 'it' self.lang_map['Polski'] = 'pl' self.lang_map['Português'] = 'pt' self.lang_map['limba română'] = 'ro' self.lang_map['русский язык'] = 'ru' self.lang_map['Español'] = 'es' self.lang_map['Türk dili'] = 'tr' def _translate(self, src_list: List[str]) -> List[str]: tr_list = [] dest_lang_code = self.lang_map[self.lang_target] # Get the language code from lang_map for text in src_list: body = { "lang": dest_lang_code, "text": text } response = requests.post(self.params['endpoint'], json=body) if response.status_code == 200: translated_text = response.json().get('text', [''])[0] tr_list.append(translated_text) else: tr_list.append('') # Or error handling return tr_list No newline at end of file Loading
modules/translators/trans_deepl_api_free.py 0 → 100644 +52 −0 Original line number Diff line number Diff line from .base import * import httpx @register_translator('DeepL Free v2') class DeepLTranslatorv2(BaseTranslator): concate_text = False params: Dict = { 'api_url': 'https://dpltrnslt.bropinesd.online/translate', # EndPoint will be provided by the user 'delay': 0.0, } # Setup your endpoint api with https://github.com/OwO-Network/DeepLX def _setup_translator(self): self.lang_map['简体中文'] = 'zh' self.lang_map['日本語'] = 'ja' self.lang_map['English'] = 'en' self.lang_map['한국어'] = 'ko' self.lang_map['Tiếng Việt'] = 'vi' self.lang_map['čeština'] = 'cs' self.lang_map['Nederlands'] = 'nl' self.lang_map['Français'] = 'fr' self.lang_map['Deutsch'] = 'de' self.lang_map['magyar nyelv'] = 'hu' self.lang_map['Italiano'] = 'it' self.lang_map['Polski'] = 'pl' self.lang_map['Português'] = 'pt' self.lang_map['limba română'] = 'ro' self.lang_map['русский язык'] = 'ru' self.lang_map['Español'] = 'es' self.lang_map['Türk dili'] = 'tr' # Add other languages here def _translate(self, src_list: List[str]) -> List[str]: tr_list = [] for text in src_list: data = { 'text': text, 'source_lang': 'auto', # or your source language 'target_lang': self.lang_map[self.lang_target] } response = requests.post(self.params['api_url'], json=data) if response.status_code == 200: # Extract the translated text from the 'data' key translated_text = response.json().get('data', '') tr_list.append(translated_text) else: tr_list.append('') # Or error handling return tr_list
modules/translators/trans_yandex.py +30 −9 Original line number Diff line number Diff line Loading @@ -28,10 +28,27 @@ class YandexTranslator(BaseTranslator): self.lang_map['Español'] = 'es' self.lang_map['Türk dili'] = 'tr' self.api_url_v2 = "https://translate.yandex.net/api/v1.5/tr.json/translate" self.api_url = 'https://translate.api.cloud.yandex.net/translate/v2/translate' def _translate(self, src_list: List[str]) -> List[str]: def _translate_with_v2(self, src_list: List[str]) -> List[str]: tr_list = [] for text in src_list: params = { 'key': self.params['api_key'], 'text': text, 'lang': self.lang_map[self.lang_target], 'format': 'plain', } response = requests.get(self.api_url_v2, params=params) if response.status_code == 200: translated_text = response.json().get('text', [''])[0] tr_list.append(translated_text) else: tr_list.append('') return tr_list def _translate_with_standard(self, src_list: List[str]) -> List[str]: body = { "targetLanguageCode": self.lang_map[self.lang_target], "texts": src_list, Loading @@ -43,12 +60,16 @@ class YandexTranslator(BaseTranslator): "Authorization": "Api-Key {0}".format(self.params['api_key']) } translations = requests.post(self.api_url, json=body, headers=headers).json()['translations'] tr_list = [] for tr in translations: if 'text' in tr: tr_list.append(tr['text']) response = requests.post(self.api_url, json=body, headers=headers) if response.status_code == 200: translations = response.json().get('translations', []) tr_list = [tr.get('text', '') for tr in translations] else: tr_list.append('') tr_list = [''] * len(src_list) return tr_list def _translate(self, src_list: List[str]) -> List[str]: if self.params['api_key'].startswith("trnsl."): return self._translate_with_v2(src_list) else: return self._translate_with_standard(src_list)
modules/translators/trans_yandexfree.py 0 → 100644 +51 −0 Original line number Diff line number Diff line from .base import * @register_translator('YandexFree') class YandexTranslatorFree(BaseTranslator): concate_text = False params: Dict = { 'endpoint': 'https://translate.toil.cc/translate', # Service endpoint 'delay': 0.0, # Go to https://github.com/FOSWLY/translate-backend to setup your API backend } def _setup_translator(self): self.lang_map['简体中文'] = 'zh' self.lang_map['日本語'] = 'ja' self.lang_map['English'] = 'en' self.lang_map['한국어'] = 'ko' self.lang_map['Tiếng Việt'] = 'vi' self.lang_map['čeština'] = 'cs' self.lang_map['Nederlands'] = 'nl' self.lang_map['Français'] = 'fr' self.lang_map['Deutsch'] = 'de' self.lang_map['magyar nyelv'] = 'hu' self.lang_map['Italiano'] = 'it' self.lang_map['Polski'] = 'pl' self.lang_map['Português'] = 'pt' self.lang_map['limba română'] = 'ro' self.lang_map['русский язык'] = 'ru' self.lang_map['Español'] = 'es' self.lang_map['Türk dili'] = 'tr' def _translate(self, src_list: List[str]) -> List[str]: tr_list = [] dest_lang_code = self.lang_map[self.lang_target] # Get the language code from lang_map for text in src_list: body = { "lang": dest_lang_code, "text": text } response = requests.post(self.params['endpoint'], json=body) if response.status_code == 200: translated_text = response.json().get('text', [''])[0] tr_list.append(translated_text) else: tr_list.append('') # Or error handling return tr_list No newline at end of file