mirror of
https://github.com/HIllya51/LunaTranslator.git
synced 2025-01-01 18:14:13 +08:00
not dir
This commit is contained in:
parent
f10c785d97
commit
44a0a12cdf
@ -8,24 +8,8 @@ if __name__ == "__main__":
|
|||||||
windows.loadlibrary(
|
windows.loadlibrary(
|
||||||
"./LunaTranslator/runtime/PyQt5/Qt5/bin/Qt5Core.dll"
|
"./LunaTranslator/runtime/PyQt5/Qt5/bin/Qt5Core.dll"
|
||||||
) # win7 no vcredist2015
|
) # win7 no vcredist2015
|
||||||
for p in (
|
|
||||||
"./userconfig/memory",
|
|
||||||
"./userconfig/memory",
|
|
||||||
"./userconfig/posts",
|
|
||||||
"./translation_record",
|
|
||||||
"./translation_record/cache",
|
|
||||||
"./cache",
|
|
||||||
"./cache/ocr",
|
|
||||||
"./cache/update",
|
|
||||||
"./cache/screenshot",
|
|
||||||
"./cache/tts",
|
|
||||||
"./cache/icon",
|
|
||||||
"./cache/backup",
|
|
||||||
):
|
|
||||||
|
|
||||||
os.makedirs(p, exist_ok=True)
|
from myutils.config import _TR, static_data, globalconfig
|
||||||
|
|
||||||
from myutils.config import _TR, static_data, testpriv, globalconfig
|
|
||||||
|
|
||||||
sys.path.append("./userconfig")
|
sys.path.append("./userconfig")
|
||||||
sys.path.insert(
|
sys.path.insert(
|
||||||
@ -81,12 +65,6 @@ if __name__ == "__main__":
|
|||||||
)
|
)
|
||||||
os._exit(0)
|
os._exit(0)
|
||||||
|
|
||||||
try:
|
|
||||||
testpriv()
|
|
||||||
except:
|
|
||||||
getQMessageBox(None, "错误", "当前路径读写权限不足,请使用管理员权限运行!")
|
|
||||||
os._exit(0)
|
|
||||||
|
|
||||||
gobject.baseobject = MAINUI()
|
gobject.baseobject = MAINUI()
|
||||||
gobject.baseobject.checklang()
|
gobject.baseobject.checklang()
|
||||||
gobject.baseobject.aa()
|
gobject.baseobject.aa()
|
||||||
|
@ -7,6 +7,7 @@ from myutils.config import _TR, globalconfig
|
|||||||
from gui.usefulwidget import saveposwindow
|
from gui.usefulwidget import saveposwindow
|
||||||
from myutils.wrapper import Singleton_close
|
from myutils.wrapper import Singleton_close
|
||||||
from winsharedutils import showintab
|
from winsharedutils import showintab
|
||||||
|
import os
|
||||||
|
|
||||||
|
|
||||||
@Singleton_close
|
@Singleton_close
|
||||||
@ -36,6 +37,7 @@ class dialog_memory(saveposwindow):
|
|||||||
self.gamemd5 = gamemd5
|
self.gamemd5 = gamemd5
|
||||||
formLayout = QVBoxLayout() #
|
formLayout = QVBoxLayout() #
|
||||||
self.showtext = QTextEdit()
|
self.showtext = QTextEdit()
|
||||||
|
os.makedirs("./userconfig/memory", exist_ok=True)
|
||||||
self.rwpath = "./userconfig/memory/{}.html".format(gamemd5)
|
self.rwpath = "./userconfig/memory/{}.html".format(gamemd5)
|
||||||
try:
|
try:
|
||||||
with open(self.rwpath, "r", encoding="utf8") as ff:
|
with open(self.rwpath, "r", encoding="utf8") as ff:
|
||||||
|
@ -120,6 +120,7 @@ def sqlite2json2(self, sqlitefile, targetjson=None, existsmerge=False):
|
|||||||
|
|
||||||
|
|
||||||
def sqlite2json(self):
|
def sqlite2json(self):
|
||||||
|
os.makedirs("./translation_record", exist_ok=True)
|
||||||
f = QFileDialog.getOpenFileName(directory="./translation_record", filter="*.sqlite")
|
f = QFileDialog.getOpenFileName(directory="./translation_record", filter="*.sqlite")
|
||||||
if f[0] == "":
|
if f[0] == "":
|
||||||
return
|
return
|
||||||
|
@ -104,6 +104,7 @@ class QButtonGroup_switch_widegt(QWidget):
|
|||||||
|
|
||||||
|
|
||||||
def listprocessm():
|
def listprocessm():
|
||||||
|
os.makedirs("./cache", exist_ok=True)
|
||||||
cachefname = os.path.abspath("./cache/{}.txt".format(time.time()))
|
cachefname = os.path.abspath("./cache/{}.txt".format(time.time()))
|
||||||
arch = "64" if gobject.baseobject.textsource.is64bit else "32"
|
arch = "64" if gobject.baseobject.textsource.is64bit else "32"
|
||||||
exe = os.path.abspath("./files/plugins/shareddllproxy{}.exe".format(arch))
|
exe = os.path.abspath("./files/plugins/shareddllproxy{}.exe".format(arch))
|
||||||
|
@ -190,6 +190,7 @@ def exportchspatch(self):
|
|||||||
doexportchspatch(exe, realgame)
|
doexportchspatch(exe, realgame)
|
||||||
md5 = getfilemd5(exe)
|
md5 = getfilemd5(exe)
|
||||||
name = os.path.basename(exe).replace("." + os.path.basename(exe).split(".")[-1], "")
|
name = os.path.basename(exe).replace("." + os.path.basename(exe).split(".")[-1], "")
|
||||||
|
os.makedirs("./translation_record", exist_ok=True)
|
||||||
sqlfname_all = "./translation_record/" + name + "_" + md5 + ".sqlite"
|
sqlfname_all = "./translation_record/" + name + "_" + md5 + ".sqlite"
|
||||||
if os.path.exists(sqlfname_all) == False:
|
if os.path.exists(sqlfname_all) == False:
|
||||||
f = QFileDialog.getOpenFileName(
|
f = QFileDialog.getOpenFileName(
|
||||||
|
@ -30,7 +30,7 @@ from myutils.utils import (
|
|||||||
loadpostsettingwindowmethod,
|
loadpostsettingwindowmethod,
|
||||||
)
|
)
|
||||||
from myutils.config import savehook_new_data
|
from myutils.config import savehook_new_data
|
||||||
import copy
|
import copy, os
|
||||||
from myutils.post import POSTSOLVE
|
from myutils.post import POSTSOLVE
|
||||||
|
|
||||||
|
|
||||||
@ -39,6 +39,7 @@ def savegameprocesstext():
|
|||||||
try:
|
try:
|
||||||
with open("./userconfig/mypost.py", "r", encoding="utf8") as ff:
|
with open("./userconfig/mypost.py", "r", encoding="utf8") as ff:
|
||||||
_mypost = ff.read()
|
_mypost = ff.read()
|
||||||
|
os.makedirs("./userconfig/posts", exist_ok=True)
|
||||||
with open(
|
with open(
|
||||||
"./userconfig/posts/{}.py".format(gobject.baseobject.textsource.uuname),
|
"./userconfig/posts/{}.py".format(gobject.baseobject.textsource.uuname),
|
||||||
"w",
|
"w",
|
||||||
|
@ -387,6 +387,7 @@ class QUnFrameWindow(resizableframeless):
|
|||||||
def ocroncefunction(rect):
|
def ocroncefunction(rect):
|
||||||
img = imageCut(0, rect[0][0], rect[0][1], rect[1][0], rect[1][1])
|
img = imageCut(0, rect[0][0], rect[0][1], rect[1][0], rect[1][1])
|
||||||
fname = "./cache/ocr/once.png"
|
fname = "./cache/ocr/once.png"
|
||||||
|
os.makedirs("./cache/ocr", exist_ok=True)
|
||||||
img.save(fname)
|
img.save(fname)
|
||||||
text = ocr_run(fname)
|
text = ocr_run(fname)
|
||||||
gobject.baseobject.textgetmethod(text, False)
|
gobject.baseobject.textgetmethod(text, False)
|
||||||
|
@ -232,13 +232,6 @@ def _TRL(kk):
|
|||||||
return x
|
return x
|
||||||
|
|
||||||
|
|
||||||
def testpriv():
|
|
||||||
fname = f"./userconfig/{os.getpid()}"
|
|
||||||
with open(fname, "w") as ff:
|
|
||||||
ff.write("")
|
|
||||||
os.remove(fname)
|
|
||||||
|
|
||||||
|
|
||||||
def saveallconfig():
|
def saveallconfig():
|
||||||
def safesave(fname, js):
|
def safesave(fname, js):
|
||||||
# 有时保存时意外退出,会导致config文件被清空
|
# 有时保存时意外退出,会导致config文件被清空
|
||||||
@ -248,6 +241,7 @@ def saveallconfig():
|
|||||||
os.remove(fname)
|
os.remove(fname)
|
||||||
os.rename(fname + ".tmp", fname)
|
os.rename(fname + ".tmp", fname)
|
||||||
|
|
||||||
|
os.makedirs("./userconfig", exist_ok=True)
|
||||||
safesave("./userconfig/config.json", globalconfig)
|
safesave("./userconfig/config.json", globalconfig)
|
||||||
safesave("./userconfig/magpie_config.json", magpie_config)
|
safesave("./userconfig/magpie_config.json", magpie_config)
|
||||||
safesave("./userconfig/postprocessconfig.json", postprocessconfig)
|
safesave("./userconfig/postprocessconfig.json", postprocessconfig)
|
||||||
|
@ -83,6 +83,7 @@ def updatemethod(_version, progresscallback):
|
|||||||
savep = "./cache/update/LunaTranslator{}.zip".format(bit)
|
savep = "./cache/update/LunaTranslator{}.zip".format(bit)
|
||||||
|
|
||||||
def endcallback():
|
def endcallback():
|
||||||
|
os.makedirs("./cache/update", exist_ok=True)
|
||||||
if os.path.exists("./cache/update/LunaTranslator"):
|
if os.path.exists("./cache/update/LunaTranslator"):
|
||||||
shutil.rmtree("./cache/update/LunaTranslator")
|
shutil.rmtree("./cache/update/LunaTranslator")
|
||||||
zipf = zipfile.ZipFile("./cache/update/LunaTranslator{}.zip".format(bit))
|
zipf = zipfile.ZipFile("./cache/update/LunaTranslator{}.zip".format(bit))
|
||||||
|
@ -167,6 +167,7 @@ def getExeIcon(name, icon=True, cache=False):
|
|||||||
name = exepath
|
name = exepath
|
||||||
data = winsharedutils.extracticon2data(name)
|
data = winsharedutils.extracticon2data(name)
|
||||||
if cache:
|
if cache:
|
||||||
|
os.makedirs("./cache/icon", exist_ok=True)
|
||||||
fn = "./cache/icon/{}.bmp".format(hashlib.md5(name.encode("utf8")).hexdigest())
|
fn = "./cache/icon/{}.bmp".format(hashlib.md5(name.encode("utf8")).hexdigest())
|
||||||
if data:
|
if data:
|
||||||
pixmap = QPixmap()
|
pixmap = QPixmap()
|
||||||
|
@ -11,6 +11,7 @@ def b64string(a):
|
|||||||
|
|
||||||
|
|
||||||
def vndbdownloadimg(url, wait=True):
|
def vndbdownloadimg(url, wait=True):
|
||||||
|
os.makedirs("./cache/vndb", exist_ok=True)
|
||||||
savepath = "./cache/vndb/" + b64string(url) + ".jpg"
|
savepath = "./cache/vndb/" + b64string(url) + ".jpg"
|
||||||
if os.path.exists(savepath):
|
if os.path.exists(savepath):
|
||||||
return savepath
|
return savepath
|
||||||
@ -59,6 +60,7 @@ def vndbdowloadinfo(vid):
|
|||||||
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 Edg/113.0.1774.42",
|
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 Edg/113.0.1774.42",
|
||||||
}
|
}
|
||||||
url = "https://vndb.org/" + vid
|
url = "https://vndb.org/" + vid
|
||||||
|
os.makedirs("./cache/vndb", exist_ok=True)
|
||||||
savepath = "./cache/vndb/" + b64string(url) + ".html"
|
savepath = "./cache/vndb/" + b64string(url) + ".html"
|
||||||
# print(url,savepath)
|
# print(url,savepath)
|
||||||
if not os.path.exists(savepath):
|
if not os.path.exists(savepath):
|
||||||
@ -197,12 +199,13 @@ def safedownload():
|
|||||||
"https://dl.vndb.org/dump/vndb-tags-latest.json.gz",
|
"https://dl.vndb.org/dump/vndb-tags-latest.json.gz",
|
||||||
proxies=getproxy(),
|
proxies=getproxy(),
|
||||||
)
|
)
|
||||||
with open("./cache/vndb-tags-latest.json.gz", "wb") as ff:
|
os.makedirs("./cache/vndb", exist_ok=True)
|
||||||
|
with open("./cache/vndb/vndb-tags-latest.json.gz", "wb") as ff:
|
||||||
ff.write(resp.content)
|
ff.write(resp.content)
|
||||||
decompress_gzip_file(
|
decompress_gzip_file(
|
||||||
"./cache/vndb-tags-latest.json.gz", "./cache/vndb-tags-latest.json"
|
"./cache/vndb/vndb-tags-latest.json.gz", "./cache/vndb/vndb-tags-latest.json"
|
||||||
)
|
)
|
||||||
with open("./cache/vndb-tags-latest.json", "r", encoding="utf8") as ff:
|
with open("./cache/vndb/vndb-tags-latest.json", "r", encoding="utf8") as ff:
|
||||||
js = json.load(ff)
|
js = json.load(ff)
|
||||||
newjs = {}
|
newjs = {}
|
||||||
for item in js:
|
for item in js:
|
||||||
@ -250,8 +253,7 @@ def getvntagsbyid(vid):
|
|||||||
|
|
||||||
def searchforidimage(titleorid):
|
def searchforidimage(titleorid):
|
||||||
print(titleorid)
|
print(titleorid)
|
||||||
if os.path.exists("./cache/vndb") == False:
|
os.makedirs("./cache/vndb", exist_ok=True)
|
||||||
os.mkdir("./cache/vndb")
|
|
||||||
if isinstance(titleorid, str):
|
if isinstance(titleorid, str):
|
||||||
vid = getvidbytitle(titleorid)
|
vid = getvidbytitle(titleorid)
|
||||||
if not vid:
|
if not vid:
|
||||||
|
@ -25,6 +25,7 @@ class Method(scalebase):
|
|||||||
|
|
||||||
def init(self):
|
def init(self):
|
||||||
self.statuslistener()
|
self.statuslistener()
|
||||||
|
os.makedirs("./cache", exist_ok=True)
|
||||||
self.jspath = os.path.abspath("./cache/magpie.config.json")
|
self.jspath = os.path.abspath("./cache/magpie.config.json")
|
||||||
self.engine = subproc_w(
|
self.engine = subproc_w(
|
||||||
'./files/plugins/Magpie/Magpie.Core.exe "{}"'.format(self.jspath),
|
'./files/plugins/Magpie/Magpie.Core.exe "{}"'.format(self.jspath),
|
||||||
|
@ -3,7 +3,7 @@ from myutils.config import globalconfig
|
|||||||
import winsharedutils
|
import winsharedutils
|
||||||
from gui.rangeselect import rangeadjust
|
from gui.rangeselect import rangeadjust
|
||||||
from myutils.ocrutil import imageCut, ocr_run, ocr_end
|
from myutils.ocrutil import imageCut, ocr_run, ocr_end
|
||||||
import time, gobject
|
import time, gobject, os
|
||||||
from PyQt5.QtWidgets import QApplication
|
from PyQt5.QtWidgets import QApplication
|
||||||
from PyQt5.QtGui import QImage
|
from PyQt5.QtGui import QImage
|
||||||
from textsource.textsourcebase import basetext
|
from textsource.textsourcebase import basetext
|
||||||
@ -164,7 +164,7 @@ class ocrtext(basetext):
|
|||||||
return "\n".join(__text)
|
return "\n".join(__text)
|
||||||
|
|
||||||
def ocrtest(self, img):
|
def ocrtest(self, img):
|
||||||
|
os.makedirs("./cache/ocr", exist_ok=True)
|
||||||
fname = "./cache/ocr/{}.png".format(self.timestamp)
|
fname = "./cache/ocr/{}.png".format(self.timestamp)
|
||||||
img.save(fname)
|
img.save(fname)
|
||||||
# print(fname)
|
# print(fname)
|
||||||
|
@ -16,7 +16,7 @@ class basetext:
|
|||||||
self.pids = []
|
self.pids = []
|
||||||
self.md5 = md5
|
self.md5 = md5
|
||||||
self.basename = basename
|
self.basename = basename
|
||||||
|
os.makedirs("./translation_record", exist_ok=True)
|
||||||
sqlfname_all_old = (
|
sqlfname_all_old = (
|
||||||
"./translation_record/" + md5 + "_" + basename + ".pretrans_common.sqlite"
|
"./translation_record/" + md5 + "_" + basename + ".pretrans_common.sqlite"
|
||||||
)
|
)
|
||||||
|
@ -5,7 +5,7 @@ from myutils.config import globalconfig, translatorsetting, static_data
|
|||||||
from threading import Thread
|
from threading import Thread
|
||||||
import time, types
|
import time, types
|
||||||
import zhconv, gobject
|
import zhconv, gobject
|
||||||
import sqlite3
|
import sqlite3, os
|
||||||
from myutils.commonbase import commonbase
|
from myutils.commonbase import commonbase
|
||||||
import functools
|
import functools
|
||||||
from myutils.utils import stringfyerror, autosql, PriorityQueue
|
from myutils.utils import stringfyerror, autosql, PriorityQueue
|
||||||
@ -109,6 +109,7 @@ class basetrans(commonbase):
|
|||||||
|
|
||||||
if self.transtype != "pre":
|
if self.transtype != "pre":
|
||||||
try:
|
try:
|
||||||
|
os.makedirs("./translation_record/cache", exist_ok=True)
|
||||||
self.sqlwrite2 = autosql(
|
self.sqlwrite2 = autosql(
|
||||||
sqlite3.connect(
|
sqlite3.connect(
|
||||||
"./translation_record/cache/{}.sqlite".format(self.typename),
|
"./translation_record/cache/{}.sqlite".format(self.typename),
|
||||||
|
@ -10,6 +10,7 @@ from myutils.subproc import subproc_w, autoproc
|
|||||||
class TTS(TTSbase):
|
class TTS(TTSbase):
|
||||||
def checkchange(self):
|
def checkchange(self):
|
||||||
fname = str(time.time())
|
fname = str(time.time())
|
||||||
|
os.makedirs("./cache/tts/", exist_ok=True)
|
||||||
savepath = os.path.join(os.getcwd(), "cache/tts", fname)
|
savepath = os.path.join(os.getcwd(), "cache/tts", fname)
|
||||||
exepath = os.path.join(os.getcwd(), "files/plugins/shareddllproxy32.exe")
|
exepath = os.path.join(os.getcwd(), "files/plugins/shareddllproxy32.exe")
|
||||||
t = time.time()
|
t = time.time()
|
||||||
|
@ -5,7 +5,7 @@ import websocket
|
|||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
import time
|
import time
|
||||||
import re
|
import re
|
||||||
import uuid
|
import uuid, os
|
||||||
import time
|
import time
|
||||||
import requests
|
import requests
|
||||||
import time
|
import time
|
||||||
@ -193,6 +193,7 @@ def transferMsTTSData(rate, content, voice):
|
|||||||
else:
|
else:
|
||||||
break
|
break
|
||||||
ws.close()
|
ws.close()
|
||||||
|
os.makedirs("./cache/tts/", exist_ok=True)
|
||||||
outputPath = "./cache/tts/" + str(time.time()) + ".mp3"
|
outputPath = "./cache/tts/" + str(time.time()) + ".mp3"
|
||||||
with open(outputPath, "wb") as audio_out:
|
with open(outputPath, "wb") as audio_out:
|
||||||
audio_out.write(audio_stream)
|
audio_out.write(audio_stream)
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
from traceback import print_exc
|
from traceback import print_exc
|
||||||
import requests
|
import requests
|
||||||
import base64
|
import base64
|
||||||
import time
|
import time, os
|
||||||
from tts.basettsclass import TTSbase
|
from tts.basettsclass import TTSbase
|
||||||
|
|
||||||
|
|
||||||
@ -48,7 +48,7 @@ class TTS(TTSbase):
|
|||||||
)
|
)
|
||||||
fname = str(time.time())
|
fname = str(time.time())
|
||||||
b64 = base64.b64decode(response.json()["audio"]["data"])
|
b64 = base64.b64decode(response.json()["audio"]["data"])
|
||||||
|
os.makedirs("./cache/tts/", exist_ok=True)
|
||||||
with open("./cache/tts/" + fname + ".mp3", "wb") as ff:
|
with open("./cache/tts/" + fname + ".mp3", "wb") as ff:
|
||||||
ff.write(b64)
|
ff.write(b64)
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import requests
|
import requests
|
||||||
import time
|
import time, os
|
||||||
from tts.basettsclass import TTSbase
|
from tts.basettsclass import TTSbase
|
||||||
from urllib.parse import quote
|
from urllib.parse import quote
|
||||||
|
|
||||||
@ -29,6 +29,7 @@ class TTS(TTSbase):
|
|||||||
f"http://127.0.0.1:23456/voice/{model}?text={encoded_content}&id={idx}&lang=ja&format=wav"
|
f"http://127.0.0.1:23456/voice/{model}?text={encoded_content}&id={idx}&lang=ja&format=wav"
|
||||||
).content
|
).content
|
||||||
fname = str(time.time())
|
fname = str(time.time())
|
||||||
|
os.makedirs("./cache/tts/", exist_ok=True)
|
||||||
with open("./cache/tts/" + fname + ".wav", "wb") as ff:
|
with open("./cache/tts/" + fname + ".wav", "wb") as ff:
|
||||||
ff.write(response)
|
ff.write(response)
|
||||||
|
|
||||||
|
@ -75,6 +75,7 @@ class TTS(TTSbase):
|
|||||||
self.rate = globalconfig["ttscommon"]["rate"]
|
self.rate = globalconfig["ttscommon"]["rate"]
|
||||||
self.voice = self.config["voice"]
|
self.voice = self.config["voice"]
|
||||||
fname = str(time.time())
|
fname = str(time.time())
|
||||||
|
os.makedirs("./cache/tts/", exist_ok=True)
|
||||||
savepath = os.path.join(os.getcwd(), "cache/tts", fname + ".wav")
|
savepath = os.path.join(os.getcwd(), "cache/tts", fname + ".wav")
|
||||||
dllpath = os.path.join(self.path, "aitalked.dll")
|
dllpath = os.path.join(self.path, "aitalked.dll")
|
||||||
##dllpath=r'C:\Users\wcy\Downloads\zunko\aitalked.dll'
|
##dllpath=r'C:\Users\wcy\Downloads\zunko\aitalked.dll'
|
||||||
|
@ -73,6 +73,7 @@ class TTS(TTSbase):
|
|||||||
self.rate = globalconfig["ttscommon"]["rate"]
|
self.rate = globalconfig["ttscommon"]["rate"]
|
||||||
self.voice = self.config["voice"]
|
self.voice = self.config["voice"]
|
||||||
fname = str(time.time())
|
fname = str(time.time())
|
||||||
|
os.makedirs("./cache/tts/", exist_ok=True)
|
||||||
savepath = os.path.join(os.getcwd(), "cache/tts", fname + ".wav")
|
savepath = os.path.join(os.getcwd(), "cache/tts", fname + ".wav")
|
||||||
dllpath = os.path.join(self.path, "aitalked.dll")
|
dllpath = os.path.join(self.path, "aitalked.dll")
|
||||||
|
|
||||||
|
@ -101,6 +101,7 @@ class TTS(TTSbase):
|
|||||||
headers=headers,
|
headers=headers,
|
||||||
data=json.dumps(response.json()),
|
data=json.dumps(response.json()),
|
||||||
)
|
)
|
||||||
|
os.makedirs("./cache/tts/", exist_ok=True)
|
||||||
with open("./cache/tts/" + fname + ".wav", "wb") as ff:
|
with open("./cache/tts/" + fname + ".wav", "wb") as ff:
|
||||||
ff.write(response.content)
|
ff.write(response.content)
|
||||||
return "./cache/tts/" + fname + ".wav"
|
return "./cache/tts/" + fname + ".wav"
|
||||||
|
@ -36,7 +36,7 @@ class TTS(TTSbase):
|
|||||||
version = 7
|
version = 7
|
||||||
voice_idx = self._7m[voice]
|
voice_idx = self._7m[voice]
|
||||||
fname = str(time.time())
|
fname = str(time.time())
|
||||||
|
os.makedirs("./cache/tts/", exist_ok=True)
|
||||||
winsharedutils.SAPI_Speak(
|
winsharedutils.SAPI_Speak(
|
||||||
content, version, voice_idx, rate, 100, "./cache/tts/" + fname + ".wav"
|
content, version, voice_idx, rate, 100, "./cache/tts/" + fname + ".wav"
|
||||||
)
|
)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import requests
|
import requests
|
||||||
import time
|
import time, os
|
||||||
from tts.basettsclass import TTSbase
|
from tts.basettsclass import TTSbase
|
||||||
|
|
||||||
|
|
||||||
@ -39,6 +39,7 @@ class TTS(TTSbase):
|
|||||||
proxies={"http": None, "https": None},
|
proxies={"http": None, "https": None},
|
||||||
).content
|
).content
|
||||||
fname = str(time.time())
|
fname = str(time.time())
|
||||||
|
os.makedirs("./cache/tts/", exist_ok=True)
|
||||||
with open("./cache/tts/" + fname + ".mp3", "wb") as ff:
|
with open("./cache/tts/" + fname + ".mp3", "wb") as ff:
|
||||||
ff.write(response)
|
ff.write(response)
|
||||||
|
|
||||||
|
@ -569,7 +569,6 @@
|
|||||||
"使用说明": "تعليمات الاستخدام",
|
"使用说明": "تعليمات الاستخدام",
|
||||||
"注册地址": "العنوان المسجل",
|
"注册地址": "العنوان المسجل",
|
||||||
"API接口地址": "عنوان واجهة المعهد",
|
"API接口地址": "عنوان واجهة المعهد",
|
||||||
"当前路径读写权限不足,请使用管理员权限运行!": "المسار الحالي لا يملك أذونات القراءة والكتابة ، يرجى استخدام أذونات المسؤول لتشغيل !",
|
|
||||||
"通用文字识别(标准版)": "العام التعرف على الحروف ( طبعة قياسية )",
|
"通用文字识别(标准版)": "العام التعرف على الحروف ( طبعة قياسية )",
|
||||||
"通用文字识别(标准含位置版)": "العام التعرف على الحروف ( بما في ذلك موقع النسخة القياسية )",
|
"通用文字识别(标准含位置版)": "العام التعرف على الحروف ( بما في ذلك موقع النسخة القياسية )",
|
||||||
"通用文字识别(高精度版)": "العام التعرف على الحروف ( عالية الدقة )",
|
"通用文字识别(高精度版)": "العام التعرف على الحروف ( عالية الدقة )",
|
||||||
|
@ -569,7 +569,6 @@
|
|||||||
"使用说明": "使用說明",
|
"使用说明": "使用說明",
|
||||||
"注册地址": "註冊地址",
|
"注册地址": "註冊地址",
|
||||||
"API接口地址": "API介面地址",
|
"API接口地址": "API介面地址",
|
||||||
"当前路径读写权限不足,请使用管理员权限运行!": "當前路徑讀寫許可權不足,請使用管理員許可權運行!",
|
|
||||||
"通用文字识别(标准版)": "通用文字識別(標準版)",
|
"通用文字识别(标准版)": "通用文字識別(標準版)",
|
||||||
"通用文字识别(标准含位置版)": "通用文字識別(標準含位置版)",
|
"通用文字识别(标准含位置版)": "通用文字識別(標準含位置版)",
|
||||||
"通用文字识别(高精度版)": "通用文字識別(高精度版)",
|
"通用文字识别(高精度版)": "通用文字識別(高精度版)",
|
||||||
|
@ -569,7 +569,6 @@
|
|||||||
"使用说明": "Instructions for use",
|
"使用说明": "Instructions for use",
|
||||||
"注册地址": "Company Registered Address",
|
"注册地址": "Company Registered Address",
|
||||||
"API接口地址": "API interface address",
|
"API接口地址": "API interface address",
|
||||||
"当前路径读写权限不足,请使用管理员权限运行!": "The current path has insufficient read and write permissions. Please run with administrator privileges!",
|
|
||||||
"通用文字识别(标准版)": "Universal Text Recognition (Standard Edition)",
|
"通用文字识别(标准版)": "Universal Text Recognition (Standard Edition)",
|
||||||
"通用文字识别(标准含位置版)": "Universal text recognition (standard with positional version)",
|
"通用文字识别(标准含位置版)": "Universal text recognition (standard with positional version)",
|
||||||
"通用文字识别(高精度版)": "Universal Text Recognition (High Precision Edition)",
|
"通用文字识别(高精度版)": "Universal Text Recognition (High Precision Edition)",
|
||||||
|
@ -569,7 +569,6 @@
|
|||||||
"使用说明": "Instrucciones de uso",
|
"使用说明": "Instrucciones de uso",
|
||||||
"注册地址": "Dirección registrada",
|
"注册地址": "Dirección registrada",
|
||||||
"API接口地址": "Dirección de la interfaz API",
|
"API接口地址": "Dirección de la interfaz API",
|
||||||
"当前路径读写权限不足,请使用管理员权限运行!": "¡Los permisos de lectura y escritura de la ruta actual son insuficientes, ¡ por favor, use los permisos de Administrador para ejecutar!",
|
|
||||||
"通用文字识别(标准版)": "Reconocimiento de texto universal (versión estándar)",
|
"通用文字识别(标准版)": "Reconocimiento de texto universal (versión estándar)",
|
||||||
"通用文字识别(标准含位置版)": "Reconocimiento de texto universal (estándar con versión de ubicación)",
|
"通用文字识别(标准含位置版)": "Reconocimiento de texto universal (estándar con versión de ubicación)",
|
||||||
"通用文字识别(高精度版)": "Reconocimiento de texto universal (versión de alta precisión)",
|
"通用文字识别(高精度版)": "Reconocimiento de texto universal (versión de alta precisión)",
|
||||||
|
@ -569,7 +569,6 @@
|
|||||||
"使用说明": "Instructions d'utilisation",
|
"使用说明": "Instructions d'utilisation",
|
||||||
"注册地址": "Adresse enregistrée",
|
"注册地址": "Adresse enregistrée",
|
||||||
"API接口地址": "Adresse de l'interface API",
|
"API接口地址": "Adresse de l'interface API",
|
||||||
"当前路径读写权限不足,请使用管理员权限运行!": "Le chemin actuel n'a pas les droits de lecture et d'écriture suffisants, exécutez - le avec les droits d'administrateur!",
|
|
||||||
"通用文字识别(标准版)": "Reconnaissance de texte universelle (version standard)",
|
"通用文字识别(标准版)": "Reconnaissance de texte universelle (version standard)",
|
||||||
"通用文字识别(标准含位置版)": "Reconnaissance de texte universelle (version standard avec emplacement)",
|
"通用文字识别(标准含位置版)": "Reconnaissance de texte universelle (version standard avec emplacement)",
|
||||||
"通用文字识别(高精度版)": "Reconnaissance de texte universelle (version haute précision)",
|
"通用文字识别(高精度版)": "Reconnaissance de texte universelle (version haute précision)",
|
||||||
|
@ -569,7 +569,6 @@
|
|||||||
"使用说明": "Istruzioni per l'uso",
|
"使用说明": "Istruzioni per l'uso",
|
||||||
"注册地址": "Indirizzo di registrazione della società",
|
"注册地址": "Indirizzo di registrazione della società",
|
||||||
"API接口地址": "Indirizzo interfaccia API",
|
"API接口地址": "Indirizzo interfaccia API",
|
||||||
"当前路径读写权限不足,请使用管理员权限运行!": "Il percorso corrente non ha permessi di lettura e scrittura sufficienti. Esegui con privilegi di amministratore!",
|
|
||||||
"通用文字识别(标准版)": "Riconoscimento universale del testo (edizione standard)",
|
"通用文字识别(标准版)": "Riconoscimento universale del testo (edizione standard)",
|
||||||
"通用文字识别(标准含位置版)": "Riconoscimento universale del testo (standard con versione posizionale)",
|
"通用文字识别(标准含位置版)": "Riconoscimento universale del testo (standard con versione posizionale)",
|
||||||
"通用文字识别(高精度版)": "Riconoscimento universale del testo (Edizione ad alta precisione)",
|
"通用文字识别(高精度版)": "Riconoscimento universale del testo (Edizione ad alta precisione)",
|
||||||
|
@ -569,7 +569,6 @@
|
|||||||
"使用说明": "使用方法",
|
"使用说明": "使用方法",
|
||||||
"注册地址": "登録アドレス",
|
"注册地址": "登録アドレス",
|
||||||
"API接口地址": "APIインタフェースアドレス",
|
"API接口地址": "APIインタフェースアドレス",
|
||||||
"当前路径读写权限不足,请使用管理员权限运行!": "現在のパスは読み書き権限が不足しています。管理者権限を使用して実行してください!",
|
|
||||||
"通用文字识别(标准版)": "汎用文字認識(標準版)",
|
"通用文字识别(标准版)": "汎用文字認識(標準版)",
|
||||||
"通用文字识别(标准含位置版)": "共通文字認識(標準位置版含む)",
|
"通用文字识别(标准含位置版)": "共通文字認識(標準位置版含む)",
|
||||||
"通用文字识别(高精度版)": "汎用文字認識(高精度版)",
|
"通用文字识别(高精度版)": "汎用文字認識(高精度版)",
|
||||||
|
@ -569,7 +569,6 @@
|
|||||||
"使用说明": "사용 설명",
|
"使用说明": "사용 설명",
|
||||||
"注册地址": "등록 주소",
|
"注册地址": "등록 주소",
|
||||||
"API接口地址": "API 인터페이스 주소",
|
"API接口地址": "API 인터페이스 주소",
|
||||||
"当前路径读写权限不足,请使用管理员权限运行!": "현재 경로에 읽기 및 쓰기 권한이 부족합니다. 관리자 권한으로 실행하십시오!",
|
|
||||||
"通用文字识别(标准版)": "일반 텍스트 인식 (표준)",
|
"通用文字识别(标准版)": "일반 텍스트 인식 (표준)",
|
||||||
"通用文字识别(标准含位置版)": "일반 텍스트 인식 (위치 버전 표준 포함)",
|
"通用文字识别(标准含位置版)": "일반 텍스트 인식 (위치 버전 표준 포함)",
|
||||||
"通用文字识别(高精度版)": "일반 텍스트 인식 (고정밀 버전)",
|
"通用文字识别(高精度版)": "일반 텍스트 인식 (고정밀 버전)",
|
||||||
|
@ -569,7 +569,6 @@
|
|||||||
"使用说明": "Instrukcja użytkowania",
|
"使用说明": "Instrukcja użytkowania",
|
||||||
"注册地址": "Adres zarejestrowany w firmie",
|
"注册地址": "Adres zarejestrowany w firmie",
|
||||||
"API接口地址": "Adres interfejsu API",
|
"API接口地址": "Adres interfejsu API",
|
||||||
"当前路径读写权限不足,请使用管理员权限运行!": "Bieżąca ścieżka ma niewystarczające uprawnienia do odczytu i zapisu. Proszę uruchomić z uprawnieniami administratora!",
|
|
||||||
"通用文字识别(标准版)": "Uniwersalne rozpoznawanie tekstu (wersja standardowa)",
|
"通用文字识别(标准版)": "Uniwersalne rozpoznawanie tekstu (wersja standardowa)",
|
||||||
"通用文字识别(标准含位置版)": "Uniwersalne rozpoznawanie tekstu (standardowo z wersją pozycyjną)",
|
"通用文字识别(标准含位置版)": "Uniwersalne rozpoznawanie tekstu (standardowo z wersją pozycyjną)",
|
||||||
"通用文字识别(高精度版)": "Uniwersalne rozpoznawanie tekstu (High Precision Edition)",
|
"通用文字识别(高精度版)": "Uniwersalne rozpoznawanie tekstu (High Precision Edition)",
|
||||||
|
@ -569,7 +569,6 @@
|
|||||||
"使用说明": "Описание использования",
|
"使用说明": "Описание использования",
|
||||||
"注册地址": "Адрес регистрации",
|
"注册地址": "Адрес регистрации",
|
||||||
"API接口地址": "Адрес интерфейса API",
|
"API接口地址": "Адрес интерфейса API",
|
||||||
"当前路径读写权限不足,请使用管理员权限运行!": "Текущие права чтения и записи пути недостаточны, пожалуйста, используйте права администратора для запуска!",
|
|
||||||
"通用文字识别(标准版)": "Универсальное распознавание текста (стандартная версия)",
|
"通用文字识别(标准版)": "Универсальное распознавание текста (стандартная версия)",
|
||||||
"通用文字识别(标准含位置版)": "Универсальное распознавание текста (стандартная версия с указанием местоположения)",
|
"通用文字识别(标准含位置版)": "Универсальное распознавание текста (стандартная версия с указанием местоположения)",
|
||||||
"通用文字识别(高精度版)": "Универсальное распознавание текста (высокоточная версия)",
|
"通用文字识别(高精度版)": "Универсальное распознавание текста (высокоточная версия)",
|
||||||
|
@ -518,7 +518,6 @@
|
|||||||
"韩语(EUC-KR)": "เกาหลี (EUC-KR)",
|
"韩语(EUC-KR)": "เกาหลี (EUC-KR)",
|
||||||
"选择路径": "เลือกเส้นทาง",
|
"选择路径": "เลือกเส้นทาง",
|
||||||
"普通字体": "Normal ตัวอักษร",
|
"普通字体": "Normal ตัวอักษร",
|
||||||
"当前路径读写权限不足,请使用管理员权限运行!": "การเข้าถึงการอ่านและการเขียนพาธปัจจุบันไม่เพียงพอโปรดใช้สิทธิ์ของผู้ดูแลระบบเพื่อเรียกใช้!",
|
|
||||||
"快捷键": "ปุ่มลัด",
|
"快捷键": "ปุ่มลัด",
|
||||||
"转区启动": "เริ่มการเปลี่ยนโซน",
|
"转区启动": "เริ่มการเปลี่ยนโซน",
|
||||||
"快译通": "แปลด่วน",
|
"快译通": "แปลด่วน",
|
||||||
|
@ -569,7 +569,6 @@
|
|||||||
"使用说明": "Kullanılacak talimatlar",
|
"使用说明": "Kullanılacak talimatlar",
|
||||||
"注册地址": "Şirket Kayıtlı Adresi",
|
"注册地址": "Şirket Kayıtlı Adresi",
|
||||||
"API接口地址": "API arayüz adresi",
|
"API接口地址": "API arayüz adresi",
|
||||||
"当前路径读写权限不足,请使用管理员权限运行!": "Mevcut yolun okuma ve yazma izni yetersiz. Lütfen yönetici hakkınla çalışın!",
|
|
||||||
"通用文字识别(标准版)": "Universal Text Recognition (Standard Edition)",
|
"通用文字识别(标准版)": "Universal Text Recognition (Standard Edition)",
|
||||||
"通用文字识别(标准含位置版)": "Evrensel metin tanımlaması (pozisyonel versiyonla standart)",
|
"通用文字识别(标准含位置版)": "Evrensel metin tanımlaması (pozisyonel versiyonla standart)",
|
||||||
"通用文字识别(高精度版)": "Universal Text Recognition (High Precision Edition)",
|
"通用文字识别(高精度版)": "Universal Text Recognition (High Precision Edition)",
|
||||||
|
@ -569,7 +569,6 @@
|
|||||||
"使用说明": "Накази використання",
|
"使用说明": "Накази використання",
|
||||||
"注册地址": "Реєстрована адреса компанії",
|
"注册地址": "Реєстрована адреса компанії",
|
||||||
"API接口地址": "Адреса інтерфейсу API",
|
"API接口地址": "Адреса інтерфейсу API",
|
||||||
"当前路径读写权限不足,请使用管理员权限运行!": "У поточному шляху недостатньо прав на читання і запис. Будь ласка, запускайте привілеї адміністратора!",
|
|
||||||
"通用文字识别(标准版)": "Універсальне визнання тексту (стандартне редагування)",
|
"通用文字识别(标准版)": "Універсальне визнання тексту (стандартне редагування)",
|
||||||
"通用文字识别(标准含位置版)": "Універсальне розпізнавання тексту (стандартне з позиційною версією)",
|
"通用文字识别(标准含位置版)": "Універсальне розпізнавання тексту (стандартне з позиційною версією)",
|
||||||
"通用文字识别(高精度版)": "Universal Text Recognition (High Precision Edition)",
|
"通用文字识别(高精度版)": "Universal Text Recognition (High Precision Edition)",
|
||||||
|
@ -569,7 +569,6 @@
|
|||||||
"使用说明": "Hướng dẫn sử dụng",
|
"使用说明": "Hướng dẫn sử dụng",
|
||||||
"注册地址": "Địa chỉ đăng ký",
|
"注册地址": "Địa chỉ đăng ký",
|
||||||
"API接口地址": "Địa chỉ giao diện API",
|
"API接口地址": "Địa chỉ giao diện API",
|
||||||
"当前路径读写权限不足,请使用管理员权限运行!": "Đường dẫn hiện tại không đủ quyền đọc và ghi, hãy chạy với quyền quản trị viên!",
|
|
||||||
"通用文字识别(标准版)": "Nhận dạng văn bản chung (Standard Edition)",
|
"通用文字识别(标准版)": "Nhận dạng văn bản chung (Standard Edition)",
|
||||||
"通用文字识别(标准含位置版)": "Nhận dạng văn bản chung (phiên bản tiêu chuẩn bao gồm vị trí)",
|
"通用文字识别(标准含位置版)": "Nhận dạng văn bản chung (phiên bản tiêu chuẩn bao gồm vị trí)",
|
||||||
"通用文字识别(高精度版)": "Nhận dạng văn bản chung (phiên bản chính xác cao)",
|
"通用文字识别(高精度版)": "Nhận dạng văn bản chung (phiên bản chính xác cao)",
|
||||||
|
@ -513,7 +513,6 @@
|
|||||||
"韩语(EUC-KR)": "",
|
"韩语(EUC-KR)": "",
|
||||||
"选择路径": "",
|
"选择路径": "",
|
||||||
"普通字体": "",
|
"普通字体": "",
|
||||||
"当前路径读写权限不足,请使用管理员权限运行!": "",
|
|
||||||
"快捷键": "",
|
"快捷键": "",
|
||||||
"转区启动": "",
|
"转区启动": "",
|
||||||
"快译通": "",
|
"快译通": "",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user