Created
April 17, 2023 02:46
-
-
Save k-okada/a22cc574d398937d0f4726edef4cad77 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff -x .~ -x '*.pyc' -u /tmp/googletrans/client.py /home/k-okada/.local/lib/python2.7/site-packages/googletrans/client.py | |
--- /tmp/googletrans/client.py 2023-04-15 18:50:05.255488550 +0900 | |
+++ /home/k-okada/.local/lib/python2.7/site-packages/googletrans/client.py 2023-04-15 22:12:46.605582467 +0900 | |
@@ -6,12 +6,13 @@ | |
""" | |
import requests | |
import random | |
+import re | |
from googletrans import urls, utils | |
from googletrans.adapters import TimeoutAdapter | |
from googletrans.compat import PY3 | |
from googletrans.gtoken import TokenAcquirer | |
-from googletrans.constants import DEFAULT_USER_AGENT, LANGCODES, LANGUAGES, SPECIAL_CASES | |
+from googletrans.constants import DEFAULT_CLIENT_SERVICE_URLS, DEFAULT_USER_AGENT, LANGCODES, LANGUAGES, SPECIAL_CASES | |
from googletrans.models import Translated, Detected | |
@@ -40,7 +41,7 @@ | |
:type timeout: number or a double of numbers | |
""" | |
- def __init__(self, service_urls=None, user_agent=DEFAULT_USER_AGENT, | |
+ def __init__(self, service_urls=DEFAULT_CLIENT_SERVICE_URLS, user_agent=DEFAULT_USER_AGENT, | |
proxies=None, timeout=None): | |
self.session = requests.Session() | |
@@ -56,6 +57,14 @@ | |
self.service_urls = service_urls or ['translate.google.com'] | |
self.token_acquirer = TokenAcquirer(session=self.session, host=self.service_urls[0]) | |
+ #if we have a service url pointing to client api we force the use of it as defaut client | |
+ for t in enumerate(service_urls): | |
+ api_type = re.search('googleapis',service_urls[0]) | |
+ if (api_type): | |
+ self.service_urls = ['translate.googleapis.com'] | |
+ self.client_type = 'gtx' | |
+ break | |
+ | |
# Use HTTP2 Adapter if hyper is installed | |
try: # pragma: nocover | |
from hyper.contrib import HTTP20Adapter | |
@@ -69,17 +78,30 @@ | |
return random.choice(self.service_urls) | |
def _translate(self, text, dest, src): | |
+ token = "xxxx" | |
if not PY3 and isinstance(text, str): # pragma: nocover | |
text = text.decode('utf-8') | |
- token = self.token_acquirer.do(text) | |
- params = utils.build_params(query=text, src=src, dest=dest, | |
+ if self.client_type == 'webapp': | |
+ token = self.token_acquirer.do(text) | |
+ | |
+ params = utils.build_params(client=self.client_type, | |
+ query=text, src=src, dest=dest, | |
token=token) | |
url = urls.TRANSLATE.format(host=self._pick_service_url()) | |
r = self.session.get(url, params=params) | |
- data = utils.format_json(r.text) | |
- return data | |
+ if r.status_code == 200: | |
+ data = utils.format_json(r.text) | |
+ return data | |
+ | |
+ raise Exception('Unexpected status code "{}" from {}'.format( | |
+ r.status_code, self.service_urls)) | |
+ | |
+ # # DUMMY_DATA | |
+ # return [[[text, None, None, 0]], None, "en", None, | |
+ # None, None, 1, None, [["en"], None, [1], ["en"]]] | |
+ | |
def _parse_extra_data(self, data): | |
response_parts_name_mapping = { | |
diff -x .~ -x '*.pyc' -u /tmp/googletrans/constants.py /home/k-okada/.local/lib/python2.7/site-packages/googletrans/constants.py | |
--- /tmp/googletrans/constants.py 2023-04-15 18:50:05.251488524 +0900 | |
+++ /home/k-okada/.local/lib/python2.7/site-packages/googletrans/constants.py 2023-04-15 20:59:04.132552877 +0900 | |
@@ -1,5 +1,9 @@ | |
DEFAULT_USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)' | |
+DEFAULT_CLIENT_SERVICE_URLS = ( | |
+ 'translate.googleapis.com', | |
+) | |
+ | |
SPECIAL_CASES = { | |
'ee': 'et', | |
} | |
diff -x .~ -x '*.pyc' -u /tmp/googletrans/utils.py /home/k-okada/.local/lib/python2.7/site-packages/googletrans/utils.py | |
--- /tmp/googletrans/utils.py 2023-04-15 18:50:05.251488524 +0900 | |
+++ /home/k-okada/.local/lib/python2.7/site-packages/googletrans/utils.py 2023-04-15 21:50:03.286595909 +0900 | |
@@ -4,9 +4,9 @@ | |
import json | |
-def build_params(query, src, dest, token): | |
+def build_params(client, query, src, dest, token): | |
params = { | |
- 'client': 't', | |
+ 'client': client, | |
'sl': src, | |
'tl': dest, | |
'hl': dest, |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment