Skip to content

Commit

Permalink
fix: bugs and update
Browse files Browse the repository at this point in the history
  • Loading branch information
jianchang512 committed May 10, 2024
1 parent 17df3ad commit a267cbb
Show file tree
Hide file tree
Showing 14 changed files with 136 additions and 65 deletions.
4 changes: 2 additions & 2 deletions version.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{
"version": "1.68",
"version_num": 11068
"version": "1.73",
"version_num": 11073
}
4 changes: 2 additions & 2 deletions videotrans/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# -*- coding: utf-8 -*-

VERSION="v1.72"
VERSION_NUM=110702
VERSION="v1.73"
VERSION_NUM=110703
1 change: 1 addition & 0 deletions videotrans/configure/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ def parse_init():
"initial_prompt_zh":"",
"fontsize":16,
"fontname":"黑体",
"subtitle_bottom":0,
"voice_silence":200,
"interval_split":6,
"cjk_len":24,
Expand Down
4 changes: 2 additions & 2 deletions videotrans/language/zh.json
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@
"daoruzimu": "导入字幕",
"shitingpeiyin": "试听配音",
"xianqidongrenwu": "先启动任务,待字幕翻译完成后可试听,配音速度、自动加速实时修改生效",
"juanzhu": " 小额捐赠帮助待续更新优化 / 开发者信息 ",
"juanzhu": " 小额捐赠帮助待续更新优化 / 免责声明 ",
"nocuda": "你的设备不满足CUDA加速要求,请确认是NVIDIA显卡,并已配置好CUDA环境,点击菜单栏-帮助支持-CUDA help",
"nocudnn": "你的设备没有安装配置cuDNN,请参考 https://juejin.cn/post/7318704408727519270#heading-1 安装,然后重启软件,或者改用openai模型",
"cudatips": "如果有英伟达显卡并且配置好了CUDA环境,可启用,将极大提升执行速度",
Expand Down Expand Up @@ -302,7 +302,7 @@
"Set role by line": "设置多角色",
"&Setting": "设置TTS与翻译Key(&S)",
"&Tools": "工具(&T)",
"&Help": "帮助/教程/文档(&H)",
"&Help": "帮助/关于(&H)",
"toolBar": "toolBar",
"Video Toolbox": "视频工具箱",
"Go VLC Website": "去VLC官网",
Expand Down
31 changes: 29 additions & 2 deletions videotrans/mainwin/secwin.py
Original file line number Diff line number Diff line change
Expand Up @@ -555,7 +555,7 @@ def open_url(self, title):
elif title == 'issue':
webbrowser.open_new_tab("https://github.com/jianchang512/pyvideotrans/issues")
elif title == 'discord':
webbrowser.open_new_tab("https://discord.com/channels/1174626422044766258/1174626425702207562")
webbrowser.open_new_tab("https://discord.gg/4WrxqBTSn8")
elif title == 'models':
webbrowser.open_new_tab("https://github.com/jianchang512/stt/releases/tag/0.0")
elif title == 'dll':
Expand All @@ -573,7 +573,34 @@ def open_url(self, title):
elif title == 'download':
webbrowser.open_new_tab("https://github.com/jianchang512/pyvideotrans/releases")
elif title == 'online':
webbrowser.open_new_tab("https://tool.pyvideotrans.com/trans.html")
QMessageBox.information(self.main,'免责声明',"""
免责声明:
在您下载或使用 "pyVideoTrans视频翻译配音" 软件(以下简称"本软件")前,请仔细阅读并充分理解本免责声明中的各项条款。
您的下载、安装或使用行为将被视为对本免责声明的接受,并同意按照本声明内容约束自己的行为。如果您不同意本声明的任何条款,请不要下载、安装或使用本软件。
本软件所有源码均在 https://github.com/jianchang512/pyvideotrans 上开放。
1. 本软件是由独立开发者使用开源语音识别模型并结合第三方翻译API和第三方配音API开发的免费工具,旨在提供视频翻译和配音功能。开发者保证在软件运行过程中不会获取或存储用户数据。
2. 本软件中集成的语音识别功能(openai和faster模式)完全在本地环境下运行,不涉及将任何数据发送到开发者的服务器。当使用第三方翻译API和配音API时,相关数据将由用户的计算机直接传输至第三方服务器,未经开发者服务器处理。本软件无需用户注册或登录,不收集或存储任何个人信息。
3. 本软件纯属个人爱好项目,开发者无营利目的,未制定任何盈利计划,并不提供付费技术支持或其他付费服务。
4. 本软件不提供视频内容转移的功能,也不鼓励或支持任何形式的视频内容搬运行为。本软件仅旨在降低观赏外语视频时的语言障碍。
5. 用户在使用本软件时,须自觉遵守当地法律以及中华人民共和国的法律法规,敬重并维护他人版权和知识产权。
6. 用户因违反法律法规或侵犯他人权利而造成的任何后果,由用户本人承担,本软件开发者不承担任何连带责任。
7. 鉴于开发者从本软件中未获利,对于本软件的使用引发的任何问题或损失,开发者不负责任。
8. 本软件采用GPL-v3开源协议。任何基于本软件的二次开发或分支版本,需遵循GPL-v3协议规定,遵守相应义务和约束。
本软件的所有解释权均属于开发者。谨请用户在理解、同意、遵守本免责声明的前提下使用本软件。
""")

elif title == 'freechatgpt':
webbrowser.open_new_tab("https://apiskey.top")
elif title == 'aihelp':
Expand Down
4 changes: 4 additions & 0 deletions videotrans/set.ini
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,10 @@ fontsize=16
;必须确保正确填写了字体名称,否则字幕可能无法显示或者无法使用指定的字体显示
fontname=黑体

;字幕默认位于视频底部,此处可设置大于0的数值,代表字幕上移多少距离,注意最大不可大于(视频高度-20),也就是要保留至少20的高度用于显示字幕
subtitle_bottom=0



;中日韩字幕一行长度字符个数,多于这个将换行
;CJK subtitle line length character count, more than this will be line feeds.
Expand Down
8 changes: 7 additions & 1 deletion videotrans/task/check_update.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

import videotrans
from videotrans.configure import config
from videotrans.util import tools
from videotrans.util.tools import set_process
from videotrans.configure.config import transobj

Expand All @@ -17,7 +18,12 @@ def __init__(self, parent=None):

def get(self):
try:
res=requests.get("https://pyvideotrans.com/version2.json")
proxies=None
proxy=tools.set_proxy()
if proxy:
proxies={"http":proxy,"https":proxy}

res=requests.get("https://raw.githubusercontent.com/jianchang512/pyvideotrans/main/version.json",proxies=proxies)
if res.status_code==200:
d=res.json()
if d['version_num']>videotrans.VERSION_NUM:
Expand Down
4 changes: 4 additions & 0 deletions videotrans/task/main_worker.py
Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,8 @@ def run(self) -> None:
if self.is_batch:
return self.wait_end()
# 非批量直接结束
self.tasklist = {}
config.queue_mp4 = []
set_process("", 'end')


Expand Down Expand Up @@ -212,6 +214,8 @@ def wait_end(self):
self.unidlist.append(unid)
time.sleep(0.5)
# 全部完成
self.tasklist = {}
config.queue_mp4 = []
set_process("", 'end')

def stop(self):
Expand Down
16 changes: 12 additions & 4 deletions videotrans/task/step.py
Original file line number Diff line number Diff line change
Expand Up @@ -881,10 +881,18 @@ def _compos_video(self):
hard_srt = "tmp.srt"
hard_srt_path = Path(mp4_dirpath / hard_srt)

if True:#Path(config.rootdir + '/simhei.ttf').is_file():
fontname=config.settings['fontname']
fontsize_px=config.settings['fontsize']
fontsize= f":fontsdir='./videotrans/styles':force_style='Fontname={fontname},Fontsize={fontsize_px}'"
fontname=config.settings['fontname']
fontsize_px=config.settings['fontsize']
vh= ""
try:
remain_h=20
if config.settings['subtitle_bottom'] and config.settings['subtitle_bottom'] > (self.init['video_info']['height']-remain_h):
vh=f",MarginV={self.init['video_info']['height']-remain_h}"
elif config.settings['subtitle_bottom'] and config.settings['subtitle_bottom']>0:
vh=f",MarginV={vh}"
except Exception:
pass
fontsize= f":fontsdir='./videotrans/styles':force_style='Fontname={fontname},Fontsize={fontsize_px}{vh}'"
maxlen = config.settings['cjk_len'] if self.init['target_language_code'][:2] in ["zh", "ja", "jp",
"ko"] else \
config.settings['other_len']
Expand Down
39 changes: 23 additions & 16 deletions videotrans/task/trans_create.py
Original file line number Diff line number Diff line change
Expand Up @@ -365,14 +365,19 @@ def hebing(self):
def move_at_end(self):
self.hasend=True
self.step_inst.precent=100
output = self.obj['output']
# 需要移动
if self.config_params['app_mode']=='peiyin':
return

wait_deldir=None
linshi_deldir=None
# 需要移动 linshi移动到 output
if self.obj and self.obj['output'] != self.obj['linshi_output']:
target_mp4=Path(self.init['targetdir_mp4'])
if target_mp4.exists() and target_mp4.stat().st_size>0:
target_mp4.rename(Path(self.obj['linshi_output'] + f'/{self.obj["raw_noextname"]}.mp4'))
shutil.copytree(self.obj['linshi_output'], self.obj['output'], dirs_exist_ok=True)
shutil.rmtree(self.obj['linshi_output'], ignore_errors=True)
linshi_deldir=self.obj['linshi_output']
# shutil.rmtree(self.obj['linshi_output'], ignore_errors=True)
# 提取时,删除
if self.config_params['app_mode']=='tiqu':
self._unlink(f"{self.obj['output']}/{self.init['source_language_code']}.srt")
Expand All @@ -382,41 +387,43 @@ def move_at_end(self):
outputpath=Path(self.obj['output'])
for it in outputpath.iterdir():
ext = it.suffix.lower()
# 软字幕时也需要保存字幕
# 软字幕时也需要保存字幕, 仅删除非 mp4非srt文件
if int(self.config_params['subtitle_type']) in [2, 4]:
if ext not in ['.mp4', '.srt']:
it.unlink(missing_ok=True)
elif int(self.config_params['subtitle_type']) in [1, 3]:
# 硬字幕 移动视频到上一级
else:
# 其他情况 移动视频到上一级
if ext != '.mp4':
it.unlink(missing_ok=True)
else:
try:
it.rename(it.parent/"../"/f'{it.name}')
except Exception:
pass
# 硬字幕删除文件夹
if int(self.config_params['subtitle_type']) in [1, 3]:
# 不是软字幕则删除文件夹
if int(self.config_params['subtitle_type']) not in [2, 4]:
try:
output=outputpath.parent.resolve().as_posix()
shutil.rmtree(self.obj['output'], ignore_errors=True)
self.obj['output']=output
outputpath.rmdir()
self.obj['output']=outputpath.parent.resolve().as_posix()
wait_deldir=outputpath.resolve().as_posix()
except Exception:
pass

#删除临时文件
shutil.rmtree(self.init['cache_folder'], ignore_errors=True)

# 批量不允许编辑字幕
if not self.config_params['is_batch']:
tools.set_process('', 'allow_edit', btnkey=self.init['btnkey'])
#time.sleep(3)

print(f"结束100% {self.obj['raw_basename']}")

tools.set_process(
f"{output}##{self.obj['raw_basename']}",
f"{self.obj['output']}##{self.obj['raw_basename']}",
'succeed',
btnkey=self.init['btnkey']
)
tools.send_notification("Succeed", f"{self.obj['raw_basename']}")
#删除临时文件
shutil.rmtree(self.init['cache_folder'], ignore_errors=True)
if linshi_deldir:
shutil.rmtree(linshi_deldir)
if wait_deldir:
shutil.rmtree(wait_deldir,ignore_errors=True)
4 changes: 2 additions & 2 deletions videotrans/translator/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -394,8 +394,8 @@ def run(*, translate_type=None, text_list=None, target_language_name=None, set_p
from videotrans.translator.tencent import trans
elif lower_translate_type == CHATGPT_NAME.lower():
from videotrans.translator.chatgpt import trans
#elif lower_translate_type == FREECHATGPT_NAME.lower():
# from videotrans.translator.freechatgpt import trans
# elif lower_translate_type == FREECHATGPT_NAME.lower():
# from videotrans.translator.freechatgpt import trans
elif lower_translate_type == GEMINI_NAME.lower():
from videotrans.translator.gemini import trans
elif lower_translate_type == AZUREGPT_NAME.lower():
Expand Down
8 changes: 5 additions & 3 deletions videotrans/ui/en.py
Original file line number Diff line number Diff line change
Expand Up @@ -713,8 +713,7 @@ def setupUi(self, MainWindow):
self.menu_H.addSeparator()
self.menu_H.addAction(self.action_blog)
self.menu_H.addSeparator()
self.menu_H.addAction(self.action_online)
self.menu_H.addSeparator()

self.menu_H.addAction(self.action_models)
self.menu_H.addSeparator()
self.menu_H.addAction(self.action_gtrans)
Expand All @@ -733,6 +732,9 @@ def setupUi(self, MainWindow):
self.menu_H.addSeparator()
self.menu_H.addAction(self.action_about)
self.menu_H.addSeparator()
self.menu_H.addAction(self.action_online)
self.menu_H.addSeparator()

self.menuBar.addAction(self.menu_Key.menuAction())
self.menuBar.addAction(self.menu.menuAction())
self.menuBar.addAction(self.menu_H.menuAction())
Expand Down Expand Up @@ -828,7 +830,7 @@ def retranslateUi(self):
self.action_dll.setText(config.uilanglist["Download cuBLASxx.dll"])
self.action_gtrans.setText(config.transobj["miandailigoogle"])
self.action_cuda.setText('CUDA')
self.action_online.setText('在线免费视频翻译' if config.defaulelang=='zh' else 'Web Online VideoTrans')
self.action_online.setText('免责声明')
self.actiontencent_key.setText("腾讯翻译设置" if config.defaulelang=='zh' else "Tencent Key")
self.action_about.setText(config.uilanglist.get("Donating developers"))
self.action_biaozhun.setText(config.uilanglist.get("Standard Function Mode"))
Expand Down
37 changes: 29 additions & 8 deletions videotrans/ui/info.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,16 +69,37 @@ def retranslateUi(self, infoform):
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">你可以向微信或支付宝二维码付款,备注你的github名称</p>
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">
<img src=":/png/wx.png" width="240" />
<img src=":/png/alipay.png" width="240" style="margin-left:8px" /></p>
<img src=":/png/alipay.png" width="240" style="margin-left:8px" />
<img src=":/png/mp.jpg" width="200" /></p>
<hr />
<p style=" margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">
<img src=":/png/mp.jpg" width="300" />
</p>
<p></p>
<hr />
<h1 style=" margin-top:16px; margin-bottom:30px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a style=" font-size:x-large; font-weight:600;color:#ff0" href="https://github.com/jianchang512/pyvideotrans/blob/main/about.md">
感谢所有捐助者,本项目的每一点改善都离不开您的帮助,点击查看所有捐助者</a></h1>
<h2 style=" margin-top:16px; margin-bottom:30px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><a style=" font-size:x-large; font-weight:600;color:#ff0" href="https://github.com/jianchang512/pyvideotrans/blob/main/about.md">
感谢所有捐助者,本项目的每一点改善都离不开您的帮助,点击查看所有捐助者</a></h2>
<hr />
<h2>免责声明:</h2>
在您下载或使用 "pyVideoTrans视频翻译配音" 软件(以下简称"本软件")前,请仔细阅读并充分理解本免责声明中的各项条款。您的下载、安装或使用行为将被视为对本免责声明的接受,并同意按照本声明内容约束自己的行为。如果您不同意本声明的任何条款,请不要下载、安装或使用本软件。<br><br>
本软件所有源码均在 https://github.com/jianchang512/pyvideotrans 上开放。<br><br>
1. 本软件是由独立开发者使用开源语音识别模型并结合第三方翻译API和第三方配音API开发的免费工具,旨在提供视频翻译和配音功能。开发者保证在软件运行过程中不会获取或存储用户数据。<br><br>
2. 本软件中集成的语音识别功能(openai和faster模式)完全在本地环境下运行,不涉及将任何数据发送到开发者的服务器。当使用第三方翻译API和配音API时,相关数据将由用户的计算机直接传输至第三方服务器,未经开发者服务器处理。本软件无需用户注册或登录,不收集或存储任何个人信息。<br><br>
3. 本软件纯属个人爱好项目,开发者无营利目的,未制定任何盈利计划,并不提供付费技术支持或其他付费服务。<br><br>
4. 本软件不提供视频内容转移的功能,也不鼓励或支持任何形式的视频内容搬运行为。本软件仅旨在降低观赏外语视频时的语言障碍。<br><br>
5. 用户在使用本软件时,须自觉遵守当地法律以及中华人民共和国的法律法规,敬重并维护他人版权和知识产权。<br><br>
6. 用户因违反法律法规或侵犯他人权利而造成的任何后果,由用户本人承担,本软件开发者不承担任何连带责任。<br><br>
7. 鉴于开发者从本软件中未获利,对于本软件的使用引发的任何问题或损失,开发者不负责任。<br><br>
8. 本软件采用GPL-v3开源协议。任何基于本软件的二次开发或分支版本,需遵循GPL-v3协议规定,遵守相应义务和约束。<br>
本软件的所有解释权均属于开发者。谨请用户在理解、同意、遵守本免责声明的前提下使用本软件。<br>
</body></html>
"""))
Loading

0 comments on commit a267cbb

Please sign in to comment.