Optimize Python code

Former-commit-id: 8d08367816ff84a2a2f62470b06421c0340f5fdb
This commit is contained in:
Physton
2023-06-15 17:21:56 +08:00
parent 1bd3eb61f4
commit 510fa649c6
46 changed files with 10051 additions and 179 deletions

2015
i18n.json Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1 +0,0 @@
f6a24778b29e3ac4ce40489a30befea649c34fe9

67
javascript/main.entry.js Normal file

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
eee6babe1b0f66667f5d0cc62da24707704274ea

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
94f23b71949a9379ef12a4b726fe7babe1ebb494

View File

@@ -1,7 +0,0 @@
translators
fastapi
hashlib
openai
boto3
aliyun-python-sdk-core
aliyun-python-sdk-alimt

View File

@@ -5,23 +5,24 @@ from pathlib import Path
from modules import script_callbacks, extra_networks, prompt_parser
from fastapi import FastAPI, Body, Request, Response
from fastapi.responses import FileResponse
from scripts.storage import storage
from scripts.get_extensions import get_extensions
from scripts.get_token_counter import get_token_counter
from scripts.get_i18n import get_i18n
from scripts.get_translate_apis import get_translate_apis
from scripts.translate import translate
from scripts.history import history
from scripts.csv import get_csvs, get_csv
from scripts.styles import getStyleFullPath, getExtensionCssList
from scripts.get_extra_networks import get_extra_networks
from scripts.packages import get_packages_state, install_package
from scripts.gen_openai import gen_openai
from scripts.get_lang import get_lang
from scripts.get_version import get_git_commit_version, get_git_remote_versions, get_latest_version
from scripts.physton_prompt.storage import Storage
from scripts.physton_prompt.get_extensions import get_extensions
from scripts.physton_prompt.get_token_counter import get_token_counter
from scripts.physton_prompt.get_i18n import get_i18n
from scripts.physton_prompt.get_translate_apis import get_translate_apis
from scripts.physton_prompt.translate import translate
from scripts.physton_prompt.history import History
from scripts.physton_prompt.csv import get_csvs, get_csv
from scripts.physton_prompt.styles import get_style_full_path, get_extension_css_list
from scripts.physton_prompt.get_extra_networks import get_extra_networks
from scripts.physton_prompt.packages import get_packages_state, install_package
from scripts.physton_prompt.gen_openai import gen_openai
from scripts.physton_prompt.get_lang import get_lang
from scripts.physton_prompt.get_version import get_git_commit_version, get_git_remote_versions, get_latest_version
try:
from modules.shared import cmd_opts
if cmd_opts.data_dir:
extension_dir = os.path.dirname(os.path.abspath(__file__)) + '/../'
extension_dir = os.path.normpath(extension_dir) + os.path.sep
@@ -52,9 +53,10 @@ As you have set the --data-dir parameter and have not added the extension path t
except Exception as e:
pass
def on_app_started(_: gr.Blocks, app: FastAPI):
st = storage()
hi = history()
st = Storage()
hi = History()
@app.get("/physton_prompt/get_version")
async def _get_version():
@@ -179,7 +181,7 @@ def on_app_started(_: gr.Blocks, app: FastAPI):
@app.get("/physton_prompt/get_histories")
async def _get_histories(type: str):
return {"histories": hi.get_histoies(type)}
return {"histories": hi.get_histories(type)}
@app.get("/physton_prompt/get_favorites")
async def _get_favorites(type: str):
@@ -285,7 +287,8 @@ def on_app_started(_: gr.Blocks, app: FastAPI):
return {"success": hi.remove_histories(data['type'])}
@app.post("/physton_prompt/translate")
async def _translate(text: str = Body(...), from_lang: str = Body(...), to_lang: str = Body(...), api: str = Body(...), api_config: dict = Body(...)):
async def _translate(text: str = Body(...), from_lang: str = Body(...), to_lang: str = Body(...),
api: str = Body(...), api_config: dict = Body(...)):
return translate(text, from_lang, to_lang, api, api_config)
@app.post("/physton_prompt/translates")
@@ -316,14 +319,14 @@ def on_app_started(_: gr.Blocks, app: FastAPI):
@app.get("/physton_prompt/styles")
async def _styles(file: str):
file_path = getStyleFullPath(file)
file_path = get_style_full_path(file)
if not os.path.exists(file_path):
return Response(status_code=404)
return FileResponse(file_path, filename=os.path.basename(file_path))
@app.get("/physton_prompt/get_extension_css_list")
async def _get_extension_css_list():
return {"css_list": getExtensionCssList()}
return {"css_list": get_extension_css_list()}
@app.get("/physton_prompt/get_extra_networks")
async def _get_extra_networks():
@@ -341,8 +344,9 @@ def on_app_started(_: gr.Blocks, app: FastAPI):
except Exception as e:
return {"success": False, 'message': str(e)}
try:
script_callbacks.on_app_started(on_app_started)
print('sd-webui-prompt-all-in-one background API service started successfully.')
except Exception as e:
print(f'sd-webui-prompt-all-in-one background API service failed to start: {e}')
print(f'sd-webui-prompt-all-in-one background API service failed to start: {e}')

View File

@@ -7,6 +7,7 @@ dirs = [
os.path.join(base_dir, 'extensions', 'a1111-sd-webui-tagcomplete', 'tags'),
]
def get_csvs():
global base_dir
csvs = []
@@ -28,8 +29,9 @@ def get_csvs():
})
return csvs
def get_csv(key):
path = base_dir + key
if not os.path.exists(path):
return None
return path
return path

View File

@@ -1,4 +1,5 @@
from scripts.get_lang import get_lang
from scripts.physton_prompt.get_lang import get_lang
def gen_openai(messages, api_config):
import openai

View File

@@ -1,6 +1,7 @@
import os
from pathlib import Path
def get_extensions():
extends_dir = os.path.join(Path().absolute(), 'extensions')
extends = []

View File

@@ -12,11 +12,12 @@ filters = [
'metadata',
]
def get_extra_networks():
result = []
try:
for extra_page in ui_extra_networks.extra_pages:
resultItem = {
result_item = {
'name': extra_page.name,
'title': extra_page.title,
'items': []
@@ -58,9 +59,9 @@ def get_extra_networks():
if filter in item:
del item[filter]
resultItem['items'].append(item)
result_item['items'].append(item)
result.append(resultItem)
result.append(result_item)
except Exception as e:
pass
return result

View File

@@ -2,12 +2,14 @@ import os
import json
i18n = {}
def get_i18n(reload=False):
global i18n
if reload or not i18n:
i18n = {}
current_dir = os.path.dirname(os.path.abspath(__file__))
config_file = os.path.join(current_dir, '../i18n.json')
config_file = os.path.join(current_dir, '../../i18n.json')
config_file = os.path.normpath(config_file)
with open(config_file, 'r', encoding='utf8') as f:
i18n = json.load(f)

View File

@@ -1,13 +1,16 @@
from scripts.storage import storage
storage = storage()
from scripts.get_i18n import get_i18n
from scripts.physton_prompt.storage import Storage
storage = Storage()
from scripts.physton_prompt.get_i18n import get_i18n
def replace_vars(text, vars):
for key, value in vars.items():
text = text.replace("{" + key + "}", value)
return text
def get_lang(key, vars = {}):
def get_lang(key, vars={}):
i18n = get_i18n()
code = storage.get('languageCode')
@@ -42,4 +45,3 @@ def get_lang(key, vars = {}):
return find
return replace_vars(key, vars)

View File

@@ -2,6 +2,7 @@ from modules import script_callbacks, extra_networks, prompt_parser
from modules.sd_hijack import model_hijack
from functools import partial, reduce
def get_token_counter(text, steps):
# copy from modules.ui.py
try:
@@ -15,7 +16,8 @@ def get_token_counter(text, steps):
# messages related to it in console
prompt_schedules = [[[steps, text]]]
flat_prompts = reduce(lambda list1, list2: list1+list2, prompt_schedules)
flat_prompts = reduce(lambda list1, list2: list1 + list2, prompt_schedules)
prompts = [prompt_text for step, prompt_text in flat_prompts]
token_count, max_length = max([model_hijack.get_prompt_lengths(prompt) for prompt in prompts], key=lambda args: args[0])
token_count, max_length = max([model_hijack.get_prompt_lengths(prompt) for prompt in prompts],
key=lambda args: args[0])
return {"token_count": token_count, "max_length": max_length}

View File

@@ -1,16 +1,19 @@
import os
import json
# from scripts.storage import storage
# from scripts.physton_prompt.storage import Storage
translate_apis = {}
# st = storage()
# st = Storage()
def get_translate_apis(reload=False):
global translate_apis
global st
if reload or not translate_apis:
translate_apis = {}
current_dir = os.path.dirname(os.path.abspath(__file__))
config_file = os.path.join(current_dir, '../translate_apis.json')
config_file = os.path.join(current_dir, '../../translate_apis.json')
config_file = os.path.normpath(config_file)
with open(config_file, 'r', encoding='utf8') as f:
translate_apis = json.load(f)

View File

@@ -4,8 +4,9 @@ import requests
import subprocess
import hashlib
def get_git_commit_version():
extension_dir = os.path.dirname(os.path.abspath(__file__)) + '/../'
extension_dir = os.path.dirname(os.path.abspath(__file__)) + '/../../'
extension_dir = os.path.normpath(extension_dir)
git_path = os.path.join(extension_dir, '.git')
if os.path.exists(git_path):
@@ -31,6 +32,7 @@ def get_git_commit_version():
return ''
def _handle_versions(response, filter_update_readme=False):
try:
if response.status_code != 200:
@@ -56,6 +58,7 @@ def _handle_versions(response, filter_update_readme=False):
except Exception as e:
return []
def get_git_remote_versions(page=1, per_page=100, filter_update_readme=False):
api_urls = [
'https://api.github.com/repos/physton/sd-webui-prompt-all-in-one/commits',
@@ -74,11 +77,12 @@ def get_git_remote_versions(page=1, per_page=100, filter_update_readme=False):
return []
def get_latest_version():
current_version = get_git_commit_version()
# if not current_version:
# return current_version
# return current_version
versions = get_git_remote_versions(1, 10, True)
if len(versions) < 1:
return current_version
return versions[0]['version']
return versions[0]['version']

View File

@@ -1,9 +1,10 @@
from scripts.storage import storage
from scripts.physton_prompt.storage import Storage
import uuid
import time
class history:
histoies = {
class History:
histories = {
'txt2img': [],
'txt2img_neg': [],
'img2img': [],
@@ -16,13 +17,13 @@ class history:
'img2img_neg': [],
}
max = 100
storage = storage()
storage = Storage()
def __init__(self):
for type in self.histoies:
self.histoies[type] = self.storage.get('history.' + type)
if self.histoies[type] is None:
self.histoies[type] = []
for type in self.histories:
self.histories[type] = self.storage.get('history.' + type)
if self.histories[type] is None:
self.histories[type] = []
self.__save_histories(type)
for type in self.favorites:
@@ -32,16 +33,16 @@ class history:
self.__save_favorites(type)
def __save_histories(self, type):
self.storage.set('history.' + type, self.histoies[type])
self.storage.set('history.' + type, self.histories[type])
def __save_favorites(self, type):
self.storage.set('favorite.' + type, self.favorites[type])
def get_histoies(self, type):
histoies = self.histoies[type]
for history in histoies:
def get_histories(self, type):
histories = self.histories[type]
for history in histories:
history['is_favorite'] = self.is_favorite(type, history['id'])
return histoies
return histories
def is_favorite(self, type, id):
for favorite in self.favorites[type]:
@@ -53,8 +54,8 @@ class history:
return self.favorites[type]
def push_history(self, type, tags, prompt, name=''):
if len(self.histoies[type]) >= self.max:
self.histoies[type].pop(0)
if len(self.histories[type]) >= self.max:
self.histories[type].pop(0)
item = {
'id': str(uuid.uuid1()),
'time': int(time.time()),
@@ -62,7 +63,7 @@ class history:
'tags': tags,
'prompt': prompt,
}
self.histoies[type].append(item)
self.histories[type].append(item)
self.__save_histories(type)
return item
@@ -79,12 +80,12 @@ class history:
return item
def get_latest_history(self, type):
if len(self.histoies[type]) > 0:
return self.histoies[type][-1]
if len(self.histories[type]) > 0:
return self.histories[type][-1]
return None
def set_history(self, type, id, tags, prompt, name):
for history in self.histoies[type]:
for history in self.histories[type]:
if history['id'] == id:
history['tags'] = tags
history['prompt'] = prompt
@@ -106,7 +107,7 @@ class history:
return False
def set_history_name(self, type, id, name):
for history in self.histoies[type]:
for history in self.histories[type]:
if history['id'] == id:
history['name'] = name
self.__save_histories(type)
@@ -122,7 +123,7 @@ class history:
if favorite['id'] == id:
favorite['name'] = name
self.__save_favorites(type)
for history in self.histoies[type]:
for history in self.histories[type]:
if history['id'] == id:
history['name'] = name
self.__save_histories(type)
@@ -132,7 +133,7 @@ class history:
def dofavorite(self, type, id):
if self.is_favorite(type, id):
return False
for history in self.histoies[type]:
for history in self.histories[type]:
if history['id'] == id:
self.favorites[type].append(history)
self.__save_favorites(type)
@@ -150,15 +151,14 @@ class history:
return False
def remove_history(self, type, id):
for history in self.histoies[type]:
for history in self.histories[type]:
if history['id'] == id:
self.histoies[type].remove(history)
self.histories[type].remove(history)
self.__save_histories(type)
return True
return False
def remove_histories(self, type):
self.histoies[type] = []
self.histories[type] = []
self.__save_histories(type)
return True

View File

@@ -1,5 +1,5 @@
import launch
from scripts.get_lang import get_lang
from scripts.physton_prompt.get_lang import get_lang
packages = {
"chardet": "chardet",
@@ -14,6 +14,7 @@ packages = {
"aliyunsdkalimt": "aliyun-python-sdk-alimt",
}
def get_packages_state():
states = []
for package_name in packages:
@@ -30,6 +31,7 @@ def get_packages_state():
return states
def install_package(name, package):
result = {'state': False, 'message': ''}
try:

View File

@@ -3,13 +3,15 @@ from pathlib import Path
import json
import time
class storage:
class Storage:
storage_path = ''
def __init__(self):
pass
def __get_storage_path(self):
self.storage_path = os.path.dirname(os.path.abspath(__file__)) + '/../storage'
self.storage_path = os.path.dirname(os.path.abspath(__file__)) + '/../../storage'
self.storage_path = os.path.normpath(self.storage_path)
if not os.path.exists(self.storage_path):
os.makedirs(self.storage_path)

View File

@@ -1,15 +1,18 @@
import os
from scripts.storage import storage
storage = storage()
from scripts.physton_prompt.storage import Storage
styles_path = os.path.dirname(os.path.abspath(__file__)) + '/../styles'
storage = Storage()
styles_path = os.path.dirname(os.path.abspath(__file__)) + '/../../styles'
styles_path = os.path.normpath(styles_path)
def getStyleFullPath(file):
def get_style_full_path(file):
global styles_path
return os.path.join(styles_path, file)
def getExtensionCssList():
def get_extension_css_list():
global styles_path
extension_path = os.path.join(styles_path, 'extensions')
if not os.path.exists(extension_path):

View File

@@ -1,22 +1,27 @@
import json
import hashlib
from scripts.get_lang import get_lang
from scripts.get_translate_apis import get_translate_apis
from scripts.translator.alibaba_translator import AlibabaTranslator
from scripts.translator.amazon_translator import AmazonTranslator
from scripts.translator.baidu_translator import BaiduTranslator
from scripts.translator.deepl_translator import DeeplTranslator
from scripts.translator.google_tanslator import GoogleTranslator
from scripts.translator.microsoft_translator import MicrosoftTranslator
from scripts.translator.openai_translator import OpenaiTranslator
from scripts.translator.tencent_translator import TencentTranslator
from scripts.translator.translators_translator import TranslatorsTranslator
from scripts.translator.yandex_translator import YandexTranslator
from scripts.translator.youdao_translator import YoudaoTranslator
from scripts.physton_prompt.get_lang import get_lang
from scripts.physton_prompt.get_translate_apis import get_translate_apis
from scripts.physton_prompt.translator.alibaba_translator import AlibabaTranslator
from scripts.physton_prompt.translator.amazon_translator import AmazonTranslator
from scripts.physton_prompt.translator.baidu_translator import BaiduTranslator
from scripts.physton_prompt.translator.deepl_translator import DeeplTranslator
from scripts.physton_prompt.translator.google_tanslator import GoogleTranslator
from scripts.physton_prompt.translator.microsoft_translator import MicrosoftTranslator
from scripts.physton_prompt.translator.openai_translator import OpenaiTranslator
from scripts.physton_prompt.translator.tencent_translator import TencentTranslator
from scripts.physton_prompt.translator.translators_translator import TranslatorsTranslator
from scripts.physton_prompt.translator.yandex_translator import YandexTranslator
from scripts.physton_prompt.translator.youdao_translator import YoudaoTranslator
caches = {}
def translate(text, from_lang, to_lang, api, api_config = {}):
def translate(text, from_lang, to_lang, api, api_config=None):
if api_config is None:
api_config = {}
global caches
def _translate_result(success, message, translated_text):
return {
"success": success,
@@ -28,6 +33,7 @@ def translate(text, from_lang, to_lang, api, api_config = {}):
"api": api,
"api_config": api_config
}
def _cache_name(text):
cache_name = f'{api}.{from_lang}.{to_lang}.{text}.' + json.dumps(api_config)
cache_name = hashlib.md5(cache_name.encode('utf-8')).hexdigest()
@@ -69,7 +75,6 @@ def translate(text, from_lang, to_lang, api, api_config = {}):
if cache_name in caches:
return _translate_result(True, '', caches[cache_name])
if api == 'google':
translator = GoogleTranslator()
elif api == 'microsoft':
@@ -105,7 +110,7 @@ def translate(text, from_lang, to_lang, api, api_config = {}):
translate_indexes = []
for index in range(len(texts)):
item = texts[index]
if item == None:
if item is None:
translate_indexes.append(index)
translate_texts.append(text[index])
if len(translate_texts) < 1:

View File

@@ -1,7 +1,8 @@
from scripts.translator.base_tanslator import BaseTranslator
from scripts.physton_prompt.translator.base_tanslator import BaseTranslator
import json
from math import ceil
from scripts.get_lang import get_lang
from scripts.physton_prompt.get_lang import get_lang
class AlibabaTranslator(BaseTranslator):
def __init__(self):
@@ -31,7 +32,7 @@ class AlibabaTranslator(BaseTranslator):
request.set_SourceLanguage(self.from_lang)
request.set_Scene("general")
request.set_SourceText(text)
request.set_FormatType("text") #翻译文本的格式
request.set_FormatType("text") # 翻译文本的格式
request.set_TargetLanguage(self.to_lang)
request.set_method("POST")
response = client.do_action_with_exception(request)

View File

@@ -1,5 +1,6 @@
from scripts.translator.base_tanslator import BaseTranslator
from scripts.get_lang import get_lang
from scripts.physton_prompt.translator.base_tanslator import BaseTranslator
from scripts.physton_prompt.get_lang import get_lang
class AmazonTranslator(BaseTranslator):
def __init__(self):
@@ -19,7 +20,8 @@ class AmazonTranslator(BaseTranslator):
raise Exception(get_lang('is_required', {'0': 'Region'}))
import boto3
translate = boto3.client(service_name='translate', region_name=region, use_ssl=True, aws_access_key_id=api_key_id, aws_secret_access_key=api_key_secret)
translate = boto3.client(service_name='translate', region_name=region, use_ssl=True,
aws_access_key_id=api_key_id, aws_secret_access_key=api_key_secret)
result = translate.translate_text(Text=text, SourceLanguageCode=self.from_lang, TargetLanguageCode=self.to_lang)
if 'TranslatedText' not in result:
raise Exception(get_lang('no_response_from', {'0': 'Amazon'}))

View File

@@ -1,8 +1,9 @@
from scripts.translator.base_tanslator import BaseTranslator
from scripts.physton_prompt.translator.base_tanslator import BaseTranslator
import requests
import hashlib
import random
from scripts.get_lang import get_lang
from scripts.physton_prompt.get_lang import get_lang
class BaiduTranslator(BaseTranslator):
def __init__(self):

View File

@@ -1,10 +1,11 @@
from scripts.get_translate_apis import get_translate_apis
from abc import ABC, abstractmethod
from math import ceil
import time
from concurrent.futures import ThreadPoolExecutor, as_completed
from collections import OrderedDict
from scripts.get_lang import get_lang
from abc import ABC, abstractmethod
from concurrent.futures import ThreadPoolExecutor
from math import ceil
from scripts.physton_prompt.get_lang import get_lang
from scripts.physton_prompt.get_translate_apis import get_translate_apis
class BaseTranslator(ABC):
from_lang = None
@@ -55,7 +56,6 @@ class BaseTranslator(ABC):
pass
def translate_batch(self, texts):
self.concurrent = self.get_concurrent()
concurrent = self.get_concurrent()
texts_len = len(texts)
group_num = ceil(texts_len / concurrent)
@@ -64,7 +64,7 @@ class BaseTranslator(ABC):
results = []
with ThreadPoolExecutor(max_workers=concurrent) as executor:
for i in range(group_num):
group_texts = texts[i*concurrent: (i+1)*concurrent]
group_texts = texts[i * concurrent: (i + 1) * concurrent]
texts_dict = {}
futures = []
for i in range(len(group_texts)):

View File

@@ -1,6 +1,7 @@
from scripts.translator.base_tanslator import BaseTranslator
from scripts.physton_prompt.translator.base_tanslator import BaseTranslator
import requests
from scripts.get_lang import get_lang
from scripts.physton_prompt.get_lang import get_lang
class DeeplTranslator(BaseTranslator):
def __init__(self):

View File

@@ -1,6 +1,7 @@
from scripts.translator.base_tanslator import BaseTranslator
from scripts.physton_prompt.translator.base_tanslator import BaseTranslator
import requests
from scripts.get_lang import get_lang
from scripts.physton_prompt.get_lang import get_lang
class GoogleTranslator(BaseTranslator):
def __init__(self):

View File

@@ -1,7 +1,8 @@
from scripts.translator.base_tanslator import BaseTranslator
from scripts.physton_prompt.translator.base_tanslator import BaseTranslator
import uuid
import requests
from scripts.get_lang import get_lang
from scripts.physton_prompt.get_lang import get_lang
class MicrosoftTranslator(BaseTranslator):
def __init__(self):

View File

@@ -1,6 +1,7 @@
from scripts.translator.base_tanslator import BaseTranslator
from scripts.physton_prompt.translator.base_tanslator import BaseTranslator
import json
from scripts.get_lang import get_lang
from scripts.physton_prompt.get_lang import get_lang
class OpenaiTranslator(BaseTranslator):
def __init__(self):
@@ -30,8 +31,8 @@ class OpenaiTranslator(BaseTranslator):
messages = [
{"role": "system", "content": "You are a translator assistant."},
{"role":
"user",
{
"role": "user",
"content": f"You are a translator assistant. Please translate the following JSON data {self.to_lang}. Preserve the original format. Only return the translation result, without any additional content or annotations. If the prompt word is in the target language, please send it to me unchanged:\n{body_str}"
},
]
@@ -39,14 +40,13 @@ class OpenaiTranslator(BaseTranslator):
if len(completion.choices) == 0:
raise Exception(get_lang('no_response_from', {'0': 'OpenAI'}))
content = completion.choices[0].message.content
result_json = ''
try:
# 找到第一个[,然后找到最后一个],截取中间的内容
start = content.index('[')
end = content.rindex(']')
if start == -1 or end == -1:
raise Exception(get_lang('response_error', {'0': 'OpenAI'}))
result_json = '['+ content[start+1:end] +']'
result_json = '[' + content[start + 1:end] + ']'
# 解析json
result = json.loads(result_json)
if isinstance(text, list):

View File

@@ -1,8 +1,14 @@
from scripts.translator.base_tanslator import BaseTranslator
import requests
import hashlib, hmac, json, time
import hashlib
import hmac
import json
import time
from datetime import datetime
from scripts.get_lang import get_lang
import requests
from scripts.physton_prompt.get_lang import get_lang
from scripts.physton_prompt.translator.base_tanslator import BaseTranslator
class TencentTranslator(BaseTranslator):
def __init__(self):
@@ -59,7 +65,7 @@ class TencentTranslator(BaseTranslator):
return result['Response']['TargetTextList']
def sign_tencent(secret_id, secret_key, regin, params, action="TextTranslate", version = "2018-03-21"):
def sign_tencent(secret_id, secret_key, regin, params, action="TextTranslate", version="2018-03-21"):
host = 'tmt.tencentcloudapi.com'
endpoint = "https://" + host
@@ -78,25 +84,25 @@ def sign_tencent(secret_id, secret_key, regin, params, action="TextTranslate", v
signed_headers = "content-type;host;x-tc-action"
hashed_request_payload = hashlib.sha256(payload.encode("utf-8")).hexdigest()
canonical_request = (http_request_method + "\n" +
canonical_uri + "\n" +
canonical_querystring + "\n" +
canonical_headers + "\n" +
signed_headers + "\n" +
hashed_request_payload)
canonical_uri + "\n" +
canonical_querystring + "\n" +
canonical_headers + "\n" +
signed_headers + "\n" +
hashed_request_payload)
# ************* 步骤 2拼接待签名字符串 *************
credential_scope = date + "/" + service + "/" + "tc3_request"
hashed_canonical_request = hashlib.sha256(canonical_request.encode("utf-8")).hexdigest()
string_to_sign = (algorithm + "\n" +
str(timestamp) + "\n" +
credential_scope + "\n" +
hashed_canonical_request)
str(timestamp) + "\n" +
credential_scope + "\n" +
hashed_canonical_request)
# ************* 步骤 3计算签名 *************
# 计算签名摘要函数
def sign(key, msg):
return hmac.new(key, msg.encode("utf-8"), hashlib.sha256).digest()
secret_date = sign(("TC3" + secret_key).encode("utf-8"), date)
secret_service = sign(secret_date, service)
secret_signing = sign(secret_service, "tc3_request")
@@ -104,9 +110,9 @@ def sign_tencent(secret_id, secret_key, regin, params, action="TextTranslate", v
# ************* 步骤 4拼接 Authorization *************
authorization = (algorithm + " " +
"Credential=" + secret_id + "/" + credential_scope + ", " +
"SignedHeaders=" + signed_headers + ", " +
"Signature=" + signature)
"Credential=" + secret_id + "/" + credential_scope + ", " +
"SignedHeaders=" + signed_headers + ", " +
"Signature=" + signature)
return {
"url": endpoint,

View File

@@ -1,6 +1,7 @@
from scripts.translator.base_tanslator import BaseTranslator
from scripts.physton_prompt.translator.base_tanslator import BaseTranslator
import os
class TranslatorsTranslator(BaseTranslator):
translator = None
@@ -15,4 +16,5 @@ class TranslatorsTranslator(BaseTranslator):
tss.server_region = region
tss._bing.server_region = region
tss._google.server_region = region
return translate_text(text, from_language=self.from_lang, to_language=self.to_lang, translator=self.translator, timeout=30)
return translate_text(text, from_language=self.from_lang, to_language=self.to_lang, translator=self.translator,
timeout=30)

View File

@@ -1,6 +1,7 @@
from scripts.translator.base_tanslator import BaseTranslator
from scripts.physton_prompt.translator.base_tanslator import BaseTranslator
import requests
from scripts.get_lang import get_lang
from scripts.physton_prompt.get_lang import get_lang
class YandexTranslator(BaseTranslator):
def __init__(self):
@@ -32,9 +33,9 @@ class YandexTranslator(BaseTranslator):
"Authorization": f"Api-Key {api_key}"
}
response = requests.post('https://translate.api.cloud.yandex.net/translate/v2/translate',
json = body,
headers = headers
)
json=body,
headers=headers
)
result = response.json()
if not result:
raise Exception(get_lang('no_response_from', {'0': 'Yandex'}))

View File

@@ -1,9 +1,10 @@
from scripts.translator.base_tanslator import BaseTranslator
from scripts.physton_prompt.translator.base_tanslator import BaseTranslator
import requests
import hashlib
import random
import time
from scripts.get_lang import get_lang
from scripts.physton_prompt.get_lang import get_lang
class YoudaoTranslator(BaseTranslator):
def __init__(self):
@@ -31,9 +32,10 @@ class YoudaoTranslator(BaseTranslator):
sign_text = "".join(text)
else:
sign_text = text
if(len(sign_text) <= 20):
input = ''
if len(sign_text) <= 20:
input = sign_text
elif(len(sign_text) > 20):
elif len(sign_text) > 20:
input = sign_text[:10] + str(len(sign_text)) + sign_text[-10:]
sign = app_id + input + str(salt) + curtime + app_secret
sign = hashlib.sha256(sign.encode()).hexdigest()

File diff suppressed because it is too large Load Diff

View File

@@ -1 +0,0 @@
f1925daddc3097ff0dae4b577a8e100bc68fdf77

4035
styles/main.less Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1 +0,0 @@
9a31b0506a52effe9cc6312a29f7a494d816eb00

1
styles/main.min.css vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
7088e9ddf5c4a87b2e5c028f215d500c6f3b7ee1

View File

@@ -2,7 +2,7 @@ import os
import sys
sys.path.append(os.path.join(os.path.dirname(__file__), ".."))
from scripts.get_lang import get_lang
from scripts.physton_prompt.get_lang import get_lang
print(get_lang('is_required', {'0': '11'}))
print(get_lang('is_required1'))

View File

@@ -2,7 +2,7 @@ import os
import sys
sys.path.append(os.path.join(os.path.dirname(__file__), ".."))
from scripts.get_version import get_git_commit_version, get_git_remote_versions, get_latest_version
from scripts.physton_prompt.get_version import get_git_commit_version, get_git_remote_versions, get_latest_version
print(get_git_remote_versions())
print(get_git_commit_version())

View File

@@ -3,13 +3,13 @@ import sys
sys.path.append(os.path.join(os.path.dirname(__file__), ".."))
import time
import json
from scripts.translate import translate
from scripts.get_i18n import get_i18n
from scripts.get_translate_apis import get_translate_apis
from scripts.storage import storage
from scripts.physton_prompt.translate import translate
from scripts.physton_prompt.get_i18n import get_i18n
from scripts.physton_prompt.get_translate_apis import get_translate_apis
from scripts.physton_prompt.storage import Storage
i18n = get_i18n()
st = storage()
st = Storage()
text = 'Hello World, I am a boy'
tested_file = os.path.join(os.path.dirname(__file__), 'tested.json')

View File

@@ -5,19 +5,19 @@ sys.path.append(os.path.join(os.path.dirname(__file__), ".."))
from dotenv import load_dotenv
load_dotenv(os.path.join(os.path.dirname(__file__), '.env'))
from scripts.translator.microsoft_translator import MicrosoftTranslator
from scripts.translator.google_tanslator import GoogleTranslator
from scripts.translator.openai_translator import OpenaiTranslator
from scripts.translator.amazon_translator import AmazonTranslator
from scripts.translator.deepl_translator import DeeplTranslator
from scripts.translator.baidu_translator import BaiduTranslator
from scripts.translator.youdao_translator import YoudaoTranslator
from scripts.translator.alibaba_translator import AlibabaTranslator
from scripts.translator.tencent_translator import TencentTranslator
from scripts.translator.translators_translator import TranslatorsTranslator
from scripts.translator.yandex_translator import YandexTranslator
from scripts.physton_prompt.translator.microsoft_translator import MicrosoftTranslator
from scripts.physton_prompt.translator.google_tanslator import GoogleTranslator
from scripts.physton_prompt.translator.openai_translator import OpenaiTranslator
from scripts.physton_prompt.translator.amazon_translator import AmazonTranslator
from scripts.physton_prompt.translator.deepl_translator import DeeplTranslator
from scripts.physton_prompt.translator.baidu_translator import BaiduTranslator
from scripts.physton_prompt.translator.youdao_translator import YoudaoTranslator
from scripts.physton_prompt.translator.alibaba_translator import AlibabaTranslator
from scripts.physton_prompt.translator.tencent_translator import TencentTranslator
from scripts.physton_prompt.translator.translators_translator import TranslatorsTranslator
from scripts.physton_prompt.translator.yandex_translator import YandexTranslator
from scripts.translate import translate
from scripts.physton_prompt.translate import translate
text = 'Hello World'
texts = [

2649
translate_apis.json Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1 +0,0 @@
ec7f9fdd27e99564d844eace9d67a0349c65fe33