harry commited on
Commit
117a4bf
·
1 Parent(s): 26a1783

update baidu translator api.

Browse files
Files changed (2) hide show
  1. deep_translator/baidu.py +8 -4
  2. tests/test_baidu.py +18 -8
deep_translator/baidu.py CHANGED
@@ -20,8 +20,8 @@ from deep_translator.constants import (
20
  )
21
  from deep_translator.exceptions import (
22
  ApiKeyException,
 
23
  ServerException,
24
- TencentAPIerror,
25
  TranslationNotFound,
26
  )
27
  from deep_translator.validate import is_empty, is_input_valid
@@ -97,6 +97,7 @@ class BaiduTranslator(BaseTranslator):
97
  )
98
  except ConnectionError:
99
  raise ServerException(503)
 
100
  if response.status_code != 200:
101
  raise ServerException(response.status_code)
102
  # Get the response and check is not empty.
@@ -105,8 +106,11 @@ class BaiduTranslator(BaseTranslator):
105
  raise TranslationNotFound(text)
106
  # Process and return the response.
107
  if "error_code" in res:
108
- raise TencentAPIerror(res["error_msg"])
109
- return res["trans_result"]["dst"]
 
 
 
110
 
111
  def translate_file(self, path: str, **kwargs) -> str:
112
  return self._translate_file(path, **kwargs)
@@ -123,5 +127,5 @@ if __name__ == "__main__":
123
  d = BaiduTranslator(
124
  target="zh", secret_id="some-id", secret_key="some-key"
125
  )
126
- t = d.translate("Ich habe keine ahnung")
127
  print("text: ", t)
 
20
  )
21
  from deep_translator.exceptions import (
22
  ApiKeyException,
23
+ BaiduAPIerror,
24
  ServerException,
 
25
  TranslationNotFound,
26
  )
27
  from deep_translator.validate import is_empty, is_input_valid
 
97
  )
98
  except ConnectionError:
99
  raise ServerException(503)
100
+ print(response)
101
  if response.status_code != 200:
102
  raise ServerException(response.status_code)
103
  # Get the response and check is not empty.
 
106
  raise TranslationNotFound(text)
107
  # Process and return the response.
108
  if "error_code" in res:
109
+ raise BaiduAPIerror(res["error_msg"])
110
+ if "trans_result" in res:
111
+ return "\n".join([s["dst"] for s in res["trans_result"]])
112
+ else:
113
+ raise TranslationNotFound(text)
114
 
115
  def translate_file(self, path: str, **kwargs) -> str:
116
  return self._translate_file(path, **kwargs)
 
127
  d = BaiduTranslator(
128
  target="zh", secret_id="some-id", secret_key="some-key"
129
  )
130
+ t = d.translate("Hello\nHow are you?")
131
  print("text: ", t)
tests/test_baidu.py CHANGED
@@ -3,35 +3,45 @@ from unittest.mock import Mock, patch
3
  import pytest
4
 
5
  from deep_translator import BaiduTranslator
6
- from deep_translator.exceptions import AuthorizationException
7
 
8
 
9
  @patch("deep_translator.baidu.requests")
10
  def test_simple_translation(mock_requests):
11
  translator = BaiduTranslator(
12
  secret_id="this-is-an-valid-api-id",
 
13
  source="en",
14
  target="zh",
15
- secret_key="this-is-an-valid-api-key",
16
  )
17
  # Set the request response mock.
18
  mock_response = Mock()
19
  mock_response.status_code = 200
20
- mock_response.json.return_value = {"translations": [{"text": "hola"}]}
21
- mock_requests.get.return_value = mock_response
 
 
 
 
22
  translation = translator.translate("hello")
23
  assert translation == "你好"
24
 
25
 
26
- @patch("deep_translator.tencent.requests.get")
27
  def test_wrong_api_key(mock_requests):
28
  translator = BaiduTranslator(
29
  secret_id="this-is-a-wrong-api-id",
 
30
  source="en",
31
  target="zh",
32
- secret_key="this-is-a-wrong-api-key",
33
  )
34
  # Set the response status_code only.
35
- mock_requests.return_value = Mock(status_code=403)
36
- with pytest.raises(AuthorizationException):
 
 
 
 
 
 
37
  translator.translate("Hello")
 
3
  import pytest
4
 
5
  from deep_translator import BaiduTranslator
6
+ from deep_translator.exceptions import BaiduAPIerror
7
 
8
 
9
  @patch("deep_translator.baidu.requests")
10
  def test_simple_translation(mock_requests):
11
  translator = BaiduTranslator(
12
  secret_id="this-is-an-valid-api-id",
13
+ secret_key="this-is-an-valid-api-key",
14
  source="en",
15
  target="zh",
 
16
  )
17
  # Set the request response mock.
18
  mock_response = Mock()
19
  mock_response.status_code = 200
20
+ mock_response.json.return_value = {
21
+ "from": "en",
22
+ "to": "zh",
23
+ "trans_result": [{"src": "hello", "dst": "你好"}],
24
+ }
25
+ mock_requests.post.return_value = mock_response
26
  translation = translator.translate("hello")
27
  assert translation == "你好"
28
 
29
 
30
+ @patch("deep_translator.baidu.requests.get")
31
  def test_wrong_api_key(mock_requests):
32
  translator = BaiduTranslator(
33
  secret_id="this-is-a-wrong-api-id",
34
+ secret_key="this-is-a-wrong-api-key",
35
  source="en",
36
  target="zh",
 
37
  )
38
  # Set the response status_code only.
39
+ mock_response = Mock()
40
+ mock_response.status_code = 200
41
+ mock_response.json.return_value = {
42
+ "error_code": "54001",
43
+ "error_msg": "Invalid Sign",
44
+ }
45
+ mock_requests.post.return_value = mock_response
46
+ with pytest.raises(BaiduAPIerror):
47
  translator.translate("Hello")