Nidhal Baccouri commited on
Commit
263c243
·
unverified ·
2 Parent(s): c10b496 82f3d24

Merge pull request #12 from nidhaloff/dev

Browse files
deep_translator/exceptions.py CHANGED
@@ -21,10 +21,17 @@ class NotValidPayload(BaseError):
21
  super(NotValidPayload, self).__init__(val, message)
22
 
23
 
 
 
 
 
 
 
 
24
  class ElementNotFoundInGetRequest(BaseError):
25
  def __init__(self,
26
  val,
27
- message='Element was not found in the get request.'):
28
  super(ElementNotFoundInGetRequest, self).__init__(val, message)
29
 
30
 
 
21
  super(NotValidPayload, self).__init__(val, message)
22
 
23
 
24
+ class TranslationNotFound(BaseError):
25
+ def __init__(self,
26
+ val,
27
+ message='No translation was found using the current translator. Try another translator?'):
28
+ super(TranslationNotFound, self).__init__(val, message)
29
+
30
+
31
  class ElementNotFoundInGetRequest(BaseError):
32
  def __init__(self,
33
  val,
34
+ message='Required element was not found in the API response'):
35
  super(ElementNotFoundInGetRequest, self).__init__(val, message)
36
 
37
 
deep_translator/google_trans.py CHANGED
@@ -1,6 +1,6 @@
1
 
2
  from deep_translator.constants import BASE_URLS, GOOGLE_LANGUAGES_TO_CODES
3
- from deep_translator.exceptions import LanguageNotSupportedException, ElementNotFoundInGetRequest, NotValidPayload
4
  from deep_translator.parent import BaseTranslator
5
  from bs4 import BeautifulSoup
6
  import requests
@@ -36,7 +36,7 @@ class GoogleTranslator(BaseTranslator):
36
  def get_supported_languages(as_dict=False):
37
  return GoogleTranslator.supported_languages if not as_dict else GoogleTranslator._languages
38
 
39
- def _map_language_to_code(self, *languages, **kwargs):
40
  """
41
 
42
  @param language: type of language
@@ -50,7 +50,7 @@ class GoogleTranslator(BaseTranslator):
50
  else:
51
  raise LanguageNotSupportedException(language)
52
 
53
- def is_language_supported(self, *languages, **kwargs):
54
  for lang in languages:
55
  if lang != 'auto' and lang not in GOOGLE_LANGUAGES_TO_CODES.keys():
56
  if lang != 'auto' and lang not in GOOGLE_LANGUAGES_TO_CODES.values():
@@ -76,7 +76,8 @@ class GoogleTranslator(BaseTranslator):
76
  soup = BeautifulSoup(response.text, 'html.parser')
77
  element = soup.find(self._element_tag, self._element_query)
78
  if not element:
79
- raise ElementNotFoundInGetRequest(element)
 
80
 
81
  return element.get_text(strip=True)
82
 
 
1
 
2
  from deep_translator.constants import BASE_URLS, GOOGLE_LANGUAGES_TO_CODES
3
+ from deep_translator.exceptions import LanguageNotSupportedException, TranslationNotFound, NotValidPayload
4
  from deep_translator.parent import BaseTranslator
5
  from bs4 import BeautifulSoup
6
  import requests
 
36
  def get_supported_languages(as_dict=False):
37
  return GoogleTranslator.supported_languages if not as_dict else GoogleTranslator._languages
38
 
39
+ def _map_language_to_code(self, *languages):
40
  """
41
 
42
  @param language: type of language
 
50
  else:
51
  raise LanguageNotSupportedException(language)
52
 
53
+ def is_language_supported(self, *languages):
54
  for lang in languages:
55
  if lang != 'auto' and lang not in GOOGLE_LANGUAGES_TO_CODES.keys():
56
  if lang != 'auto' and lang not in GOOGLE_LANGUAGES_TO_CODES.values():
 
76
  soup = BeautifulSoup(response.text, 'html.parser')
77
  element = soup.find(self._element_tag, self._element_query)
78
  if not element:
79
+ # raise ElementNotFoundInGetRequest(element)
80
+ raise TranslationNotFound(text)
81
 
82
  return element.get_text(strip=True)
83
 
deep_translator/linguee.py CHANGED
@@ -1,5 +1,5 @@
1
  from deep_translator.constants import BASE_URLS, LINGUEE_LANGUAGES_TO_CODES, LINGUEE_CODE_TO_LANGUAGE
2
- from deep_translator.exceptions import LanguageNotSupportedException, ElementNotFoundInGetRequest, NotValidPayload, NotValidLength
3
  from deep_translator.parent import BaseTranslator
4
  from bs4 import BeautifulSoup
5
  import requests
@@ -72,6 +72,9 @@ class LingueeTranslator(BaseTranslator):
72
  pronoun = ''
73
  filtered_elements.append(el.get_text(strip=True).replace(pronoun, ''))
74
 
 
 
 
75
  return filtered_elements if return_all else filtered_elements[0]
76
 
77
  def translate_words(self, words, **kwargs):
 
1
  from deep_translator.constants import BASE_URLS, LINGUEE_LANGUAGES_TO_CODES, LINGUEE_CODE_TO_LANGUAGE
2
+ from deep_translator.exceptions import LanguageNotSupportedException, TranslationNotFound, NotValidPayload, ElementNotFoundInGetRequest
3
  from deep_translator.parent import BaseTranslator
4
  from bs4 import BeautifulSoup
5
  import requests
 
72
  pronoun = ''
73
  filtered_elements.append(el.get_text(strip=True).replace(pronoun, ''))
74
 
75
+ if not filtered_elements:
76
+ raise TranslationNotFound(word)
77
+
78
  return filtered_elements if return_all else filtered_elements[0]
79
 
80
  def translate_words(self, words, **kwargs):
deep_translator/mymemory.py CHANGED
@@ -1,6 +1,6 @@
1
 
2
  from deep_translator.constants import BASE_URLS, GOOGLE_LANGUAGES_TO_CODES
3
- from deep_translator.exceptions import NotValidPayload
4
  from deep_translator.parent import BaseTranslator
5
  import requests
6
 
@@ -52,7 +52,7 @@ class MyMemoryTranslator(BaseTranslator):
52
  headers=self.headers)
53
  data = response.json()
54
  if not data:
55
- raise Exception("Translation was not found in response!")
56
 
57
  translation = data.get('responseData').get('translatedText')
58
  if translation:
 
1
 
2
  from deep_translator.constants import BASE_URLS, GOOGLE_LANGUAGES_TO_CODES
3
+ from deep_translator.exceptions import NotValidPayload, TranslationNotFound
4
  from deep_translator.parent import BaseTranslator
5
  import requests
6
 
 
52
  headers=self.headers)
53
  data = response.json()
54
  if not data:
55
+ TranslationNotFound(text)
56
 
57
  translation = data.get('responseData').get('translatedText')
58
  if translation:
deep_translator/pons.py CHANGED
@@ -2,7 +2,7 @@
2
  from bs4 import BeautifulSoup
3
  import requests
4
  from deep_translator.constants import BASE_URLS, PONS_LANGUAGES_TO_CODES, PONS_CODES_TO_LANGUAGES
5
- from deep_translator.exceptions import LanguageNotSupportedException, ElementNotFoundInGetRequest, NotValidPayload
6
  from deep_translator.parent import BaseTranslator
7
  from requests.utils import requote_uri
8
 
@@ -66,18 +66,25 @@ class PonsTranslator(BaseTranslator):
66
  soup = BeautifulSoup(response.text, 'html.parser')
67
  elements = soup.findAll(self._element_tag, self._element_query)
68
  if not elements:
69
- raise ElementNotFoundInGetRequest(elements)
70
 
71
- eof = []
72
  for el in elements:
73
  temp = ''
74
  for e in el.findAll('a'):
75
  if e.parent.name == 'div':
76
  if e and "/translate/{}-{}/".format(self._target, self._source) in e.get('href'):
77
  temp += e.get_text() + ' '
78
- eof.append(temp)
 
 
 
 
 
 
 
 
79
 
80
- word_list = [word for word in eof if word and len(word) > 1]
81
  return word_list if return_all else word_list[0]
82
 
83
  def translate_words(self, words, **kwargs):
 
2
  from bs4 import BeautifulSoup
3
  import requests
4
  from deep_translator.constants import BASE_URLS, PONS_LANGUAGES_TO_CODES, PONS_CODES_TO_LANGUAGES
5
+ from deep_translator.exceptions import LanguageNotSupportedException, TranslationNotFound, NotValidPayload, ElementNotFoundInGetRequest
6
  from deep_translator.parent import BaseTranslator
7
  from requests.utils import requote_uri
8
 
 
66
  soup = BeautifulSoup(response.text, 'html.parser')
67
  elements = soup.findAll(self._element_tag, self._element_query)
68
  if not elements:
69
+ raise ElementNotFoundInGetRequest(word)
70
 
71
+ filtered_elements = []
72
  for el in elements:
73
  temp = ''
74
  for e in el.findAll('a'):
75
  if e.parent.name == 'div':
76
  if e and "/translate/{}-{}/".format(self._target, self._source) in e.get('href'):
77
  temp += e.get_text() + ' '
78
+ filtered_elements.append(temp)
79
+
80
+ if not filtered_elements:
81
+ raise ElementNotFoundInGetRequest(word)
82
+
83
+ word_list = [word for word in filtered_elements if word and len(word) > 1]
84
+
85
+ if not word_list:
86
+ raise TranslationNotFound(word)
87
 
 
88
  return word_list if return_all else word_list[0]
89
 
90
  def translate_words(self, words, **kwargs):
examples/mymemory.py ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+
2
+ from deep_translator import MyMemoryTranslator
3
+
4
+
5
+ res = MyMemoryTranslator(source='ar', target='en').translate('آخُذ اَلْباص.')
6
+
7
+ print(res)
examples/pons.py CHANGED
@@ -4,4 +4,7 @@ from deep_translator import PonsTranslator
4
 
5
  res = PonsTranslator(source='de', target='en').translate('übersetzen', return_all=False)
6
 
7
- print(res)
 
 
 
 
4
 
5
  res = PonsTranslator(source='de', target='en').translate('übersetzen', return_all=False)
6
 
7
+
8
+ e2a = PonsTranslator('ar', 'en').translate('آخُذ اَلْباص.', return_all=True)
9
+
10
+ print(e2a)