mirror of
https://github.com/Physton/sd-webui-prompt-all-in-one.git
synced 2026-01-26 11:19:55 +00:00
Optimize Python code
Former-commit-id: 8d08367816ff84a2a2f62470b06421c0340f5fdb
This commit is contained in:
@@ -1 +0,0 @@
|
||||
f6a24778b29e3ac4ce40489a30befea649c34fe9
|
||||
67
javascript/main.entry.js
Normal file
67
javascript/main.entry.js
Normal file
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
eee6babe1b0f66667f5d0cc62da24707704274ea
|
||||
1
javascript/main.entry.js.map
Normal file
1
javascript/main.entry.js.map
Normal file
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
94f23b71949a9379ef12a4b726fe7babe1ebb494
|
||||
@@ -1,7 +0,0 @@
|
||||
translators
|
||||
fastapi
|
||||
hashlib
|
||||
openai
|
||||
boto3
|
||||
aliyun-python-sdk-core
|
||||
aliyun-python-sdk-alimt
|
||||
@@ -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}')
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -1,6 +1,7 @@
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def get_extensions():
|
||||
extends_dir = os.path.join(Path().absolute(), 'extensions')
|
||||
extends = []
|
||||
@@ -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
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
|
||||
@@ -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}
|
||||
@@ -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)
|
||||
@@ -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']
|
||||
@@ -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
|
||||
|
||||
@@ -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:
|
||||
@@ -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)
|
||||
@@ -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):
|
||||
@@ -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:
|
||||
@@ -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)
|
||||
@@ -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'}))
|
||||
@@ -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):
|
||||
@@ -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)):
|
||||
@@ -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):
|
||||
@@ -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):
|
||||
@@ -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):
|
||||
@@ -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):
|
||||
@@ -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,
|
||||
@@ -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)
|
||||
@@ -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'}))
|
||||
@@ -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()
|
||||
1066
src/src/components/phystonPrompt.vue
Executable file
1066
src/src/components/phystonPrompt.vue
Executable file
File diff suppressed because it is too large
Load Diff
@@ -1 +0,0 @@
|
||||
f1925daddc3097ff0dae4b577a8e100bc68fdf77
|
||||
4035
styles/main.less
Normal file
4035
styles/main.less
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1 +0,0 @@
|
||||
9a31b0506a52effe9cc6312a29f7a494d816eb00
|
||||
1
styles/main.min.css
vendored
Normal file
1
styles/main.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
@@ -1 +0,0 @@
|
||||
7088e9ddf5c4a87b2e5c028f215d500c6f3b7ee1
|
||||
@@ -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'))
|
||||
@@ -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())
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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
2649
translate_apis.json
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1 +0,0 @@
|
||||
ec7f9fdd27e99564d844eace9d67a0349c65fe33
|
||||
Reference in New Issue
Block a user