Commit 377d418c authored by dmMaze's avatar dmMaze
Browse files

support delay after translating a page for online translators

parent 065bc47f
Loading
Loading
Loading
Loading
+21 −4
Original line number Diff line number Diff line
import urllib.request
from urllib3.exceptions import ConnectTimeoutError
from ordered_set import OrderedSet
from typing import Dict, List, Union, Set, Callable
import time, requests, re, uuid, base64, hmac, functools, json, deepl
@@ -64,6 +65,7 @@ class TranslatorBase(ModuleParamParser):
    concate_text = True
    cht_require_convert = False
    
    
    def __init__(self,
                 lang_source: str, 
                 lang_target: str,
@@ -194,12 +196,23 @@ class TranslatorBase(ModuleParamParser):
        else:
            return text
        
    def delay(self) -> float:
        if 'delay' in self.setup_params:
            delay = self.setup_params['delay']
            if delay:
                try:
                    return float(delay)
                except:
                    pass
        return 0.


@register_translator('google')
class GoogleTranslator(TranslatorBase):

    concate_text = True
    setup_params: Dict = {
        'delay': '0.0',
        'url': {
            'type': 'selector',
            'options': [
@@ -207,7 +220,8 @@ class GoogleTranslator(TranslatorBase):
                'https://translate.google.com/m'
            ],
            'select': 'https://translate.google.com/m'
        }
        },
        
    }
    
    def _setup_translator(self):
@@ -247,7 +261,7 @@ class GoogleTranslator(TranslatorBase):
class PapagoTranslator(TranslatorBase):

    concate_text = True
    setup_params: Dict = None
    setup_params: Dict = {'delay': '0.0'}
    papagoVer: str = None

    # https://github.com/zyddnys/manga-image-translator/blob/main/translators/papago.py
@@ -304,6 +318,7 @@ class CaiyunTranslator(TranslatorBase):
    cht_require_convert = True
    setup_params: Dict = {
        'token': '',
        'delay': '0.0'
    }

    def _setup_translator(self):
@@ -344,7 +359,8 @@ class DeeplTranslator(TranslatorBase):
    concate_text = False
    cht_require_convert = True
    setup_params: Dict = {
        'api_key': ''
        'api_key': '',
        'delay': '0.0',
    }

    def _setup_translator(self):
@@ -442,7 +458,8 @@ class YandexTranslator(TranslatorBase):

    concate_text = False
    setup_params: Dict = {
        'api_key': ''
        'api_key': '',
        'delay': '0.0',
    }

    def _setup_translator(self):
+8 −0
Original line number Diff line number Diff line
@@ -217,6 +217,8 @@ class TranslateThread(ModuleThread):

    def _run_translate_pipeline(self):
        num_pages = len(self.imgtrans_proj.pages)
        delay = self.translator.delay()

        while not self.pipeline_finished():
            if len(self.pipeline_pagekey_queue) == 0:
                time.sleep(0.1)
@@ -227,6 +229,9 @@ class TranslateThread(ModuleThread):
            try:
                self._translate_page(self.imgtrans_proj.pages, page_key, raise_exception=True, emit_finished=False)
            except Exception as e:
                
                # TODO: allowing retry/skip/terminate

                msg = self.tr('Translation Failed.')
                if isinstance(e, MissingTranslatorParams):
                    msg = msg + '\n' + str(e) + self.tr(' is required for ' + self.translator.name)
@@ -241,6 +246,9 @@ class TranslateThread(ModuleThread):
            self.finished_counter += 1
            self.progress_changed.emit(self.finished_counter)

            if not self.pipeline_finished() and delay > 0:
                time.sleep(delay)


class ImgtransThread(QThread):