Commit a8a922ea authored by PiDanShouRouZhouXD's avatar PiDanShouRouZhouXD
Browse files

fix property update

parent 4b851f29
Loading
Loading
Loading
Loading
+97 −41
Original line number Diff line number Diff line
@@ -262,14 +262,26 @@ class SakuraTranslator(BaseTranslator):
            url += '/v1'
        return url

    @api_base.setter
    def api_base(self, url: str):
        self.params['api baseurl'] = url

    @property
    def sakura_version(self) -> str:
        return self.params['version']['select']

    @sakura_version.setter
    def sakura_version(self, version: str):
        self.params['version']['select'] = version

    @property
    def dict_path(self) -> str:
        return self.params['dict path']

    @dict_path.setter
    def dict_path(self, path: str):
        self.params['dict path'] = path

    def _setup_translator(self):
        self.lang_map['简体中文'] = 'Simplified Chinese'
        self.lang_map['日本語'] = 'Japanese'
@@ -279,14 +291,28 @@ class SakuraTranslator(BaseTranslator):
        self._current_style = "precise"
        self._emoji_pattern = re.compile(r'[\U00010000-\U0010ffff]')
        self._heart_pattern = re.compile(r'')
        self.sakura_dict = SakuraDict(self.get_dict_path(), self.logger, self.sakura_version)
        self.sakura_dict = SakuraDict(self.dict_path, self.logger, self.sakura_version)
        self.logger.info(f'当前选择的Sakura版本: {self.sakura_version}')
    
    def get_sakura_version(self):
        return self.sakura_version
    def updateParam(self, param_key: str, param_content):
        super().updateParam(param_key, param_content)
        if param_key == 'api baseurl':
            self.api_base = param_content
            self.logger.debug(f'更新API地址为: {param_content}')
        if param_key == 'version':
            self.set_sakura_version(self.params['version']['select'])
        if param_key == 'dict path':
            self.set_dict_path(self.params['dict path'])

    def set_sakura_version(self, version: str):
        self.sakura_version = version
        self.logger.debug(f'更新Sakura版本为: {version}')

    def set_dict_path(self, path: str):
        self.params['dict path'] = path
        self.sakura_dict = SakuraDict(path, self.logger, self.sakura_version)
        self.logger.debug(f'更新Sakura字典路径为: {path}')

    def get_dict_path(self):
        return self.dict_path

    @staticmethod
    def enlarge_small_kana(text, ignore=''):
@@ -515,6 +541,36 @@ class SakuraTranslator(BaseTranslator):
        server_error_attempt = 0
        timeout_attempt = 0
        while True:
            if OPENAPI_V1_API:
                try:
                    response = self._request_translation(prompt)
                    break
                except openai.RateLimitError:
                    ratelimit_attempt += 1
                    if ratelimit_attempt >= self._RATELIMIT_RETRY_ATTEMPTS:
                        raise
                    self.logger.warning(
                        f'Sakura因被限速而进行重试。尝试次数: {ratelimit_attempt}')
                    time.sleep(2)
                except openai.APIError as e:
                    server_error_attempt += 1
                    if server_error_attempt >= self.retry_attempts:
                        self.logger.warning(
                            e, 'Sakura翻译失败。返回原始文本。')
                        return '\n'.join(prompt)
                    self.logger.warn(
                        f'Sakura因服务器错误而进行重试。 当前API baseurl为"{self.api_base}",尝试次数: {server_error_attempt}, 错误信息: {e}')
                    time.sleep(1)
                except FileNotFoundError:
                    self.logger.warn(
                        'Sakura因文件不存在而进行重试。')
                    time.sleep(30)
                except TimeoutError:
                    timeout_attempt += 1
                    if timeout_attempt >= self._TIMEOUT_RETRY_ATTEMPTS:
                        raise Exception('Sakura超时。')
                    self.logger.warning(f'Sakura因超时而进行重试。尝试次数: {timeout_attempt}')
            else:
                try:
                    response = self._request_translation(prompt)
                    break
@@ -529,7 +585,7 @@ class SakuraTranslator(BaseTranslator):
                    server_error_attempt += 1
                    if server_error_attempt >= self.retry_attempts:
                        self.logger.warning(
                        e, 'Sakura翻译失败。返回原始文本。', exception_type='SakuraTranslator')
                            e, 'Sakura翻译失败。返回原始文本。')
                        return '\n'.join(prompt)
                    self.logger.warn(
                        f'Sakura因服务器错误而进行重试。 当前API baseurl为"{self.api_base}",尝试次数: {server_error_attempt}, 错误信息: {e}')
@@ -538,7 +594,7 @@ class SakuraTranslator(BaseTranslator):
                    server_error_attempt += 1
                    if server_error_attempt >= self.retry_attempts:
                        self.logger.warning(
                        e, 'Sakura翻译失败。返回原始文本。', exception_type='SakuraTranslator')
                            e, 'Sakura翻译失败。返回原始文本。')
                        return '\n'.join(prompt)
                    self.logger.warn(
                        f'Sakura因服务器连接错误而进行重试。 当前API baseurl为"{self.api_base}",尝试次数: {server_error_attempt}, 错误信息: {e}')