mirror of
https://github.com/barkeser2002/srtranslator-bariskeser.git
synced 2026-09-25 03:49:55 +03:00
62 lines
1.9 KiB
Python
62 lines
1.9 KiB
Python
from PyDeepLX import PyDeepLX as PDLX
|
|
from random import randint
|
|
from time import sleep
|
|
|
|
from .base import Translator as BaseTranslator
|
|
from fp.fp import FreeProxy
|
|
|
|
|
|
class PyDeepLX(BaseTranslator):
|
|
max_char = 1500
|
|
|
|
def __init__(self, proxies=None):
|
|
self.proxies = proxies
|
|
|
|
# Use proxy by default if self.proxies is True
|
|
if self.proxies:
|
|
print("...... Use proxy")
|
|
self.proxies = FreeProxy(rand=True, timeout=1).get()
|
|
|
|
def translate(self, text, source_language, destination_language):
|
|
# Sleep a random number of seconds (between 5 and 10)
|
|
# https://www.shellhacks.com/python-sleep-random-time-web-scraping/
|
|
RANDOM_WAIT = randint(5, 10)
|
|
print(f"...... Wait randomly {RANDOM_WAIT}s")
|
|
sleep(RANDOM_WAIT)
|
|
|
|
# Max retry 10
|
|
RETRY_COUNTER = 10
|
|
result = None
|
|
|
|
while RETRY_COUNTER > 0 :
|
|
try:
|
|
result = PDLX.translate(
|
|
text,
|
|
source_language,
|
|
destination_language,
|
|
proxies=self.proxies
|
|
)
|
|
|
|
if result == None:
|
|
print("...... Exception: result is empty raise exception")
|
|
raise Exception("Result is empty")
|
|
|
|
# Everyting alright
|
|
break
|
|
except Exception as e:
|
|
print(f"...... Exception {e} with retry number {RETRY_COUNTER}")
|
|
|
|
# Get a random proxy
|
|
print("...... Use or change proxy")
|
|
self.proxies = FreeProxy(rand=True, timeout=1).get()
|
|
|
|
# Decrease RETRY_COUNTER
|
|
RETRY_COUNTER -= 1
|
|
|
|
# Raise error if RETRY_COUNTER is 0
|
|
if RETRY_COUNTER == 0:
|
|
print("...... Exception RETRY_COUNTER reached 0")
|
|
raise
|
|
|
|
return result
|