Loading modules/translators/trans_sakura.py +97 −41 Original line number Diff line number Diff line Loading @@ -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' Loading @@ -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=''): Loading Loading @@ -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 Loading @@ -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}') Loading @@ -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}') Loading Loading
modules/translators/trans_sakura.py +97 −41 Original line number Diff line number Diff line Loading @@ -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' Loading @@ -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=''): Loading Loading @@ -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 Loading @@ -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}') Loading @@ -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}') Loading