Skip to content

Instantly share code, notes, and snippets.

@k-okada
Created April 17, 2023 02:46
Show Gist options
  • Save k-okada/a22cc574d398937d0f4726edef4cad77 to your computer and use it in GitHub Desktop.
Save k-okada/a22cc574d398937d0f4726edef4cad77 to your computer and use it in GitHub Desktop.
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