harry
commited on
Commit
·
117a4bf
1
Parent(s):
26a1783
update baidu translator api.
Browse files- deep_translator/baidu.py +8 -4
- 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
|
109 |
-
|
|
|
|
|
|
|
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("
|
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
|
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 = {
|
21 |
-
|
|
|
|
|
|
|
|
|
22 |
translation = translator.translate("hello")
|
23 |
assert translation == "你好"
|
24 |
|
25 |
|
26 |
-
@patch("deep_translator.
|
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 |
-
|
36 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
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")
|