Commit 1d2f2b64 authored by xuanweiace's avatar xuanweiace

Merge branch 'feat_1' of http://gitlab.uiiai.com/xuanweiace/accessibility_movie_2 into feat_1

parents 24ee251e ee4f5e81
import os
class Content:
StartTimeColumn = 0
AsideColumnNumber = 2
SpeedColumnNumber = 3
ActivateColumns = [2,3]
ActivateColumns = [2, 3]
# ColumnCount = 3
ObjectName = "all_tableWidget"
TimeFormatColumns = [0]
class Aside:
StartTimeColumn = 0
AsideColumnNumber = 3
SpeedColumnNumber = 4
ActivateColumns = [3,4]
AsideColumnNumber = 2
SpeedColumnNumber = 3
ActivateColumns = [2, 3]
ObjectName = "pb_tableWidget"
TimeFormatColumns = [0,1]
PreviewColumnNumber = 5
TimeFormatColumns = [0]
PreviewColumnNumber = 4
SpeedList = ["1.00(4字/秒)", "1.10(4.5字/秒)", "1.25(5字/秒)",
"1.50(6字/秒)", "1.75(7字/秒)", "2.00(8字/秒)", "2.50(10字/秒)"]
class Subtitle:
ObjectName = "zm_tableWidget"
TimeFormatColumns = [0,1]
import os
TimeFormatColumns = [0, 1]
dir_path = os.path.dirname(os.path.abspath(__file__))
class Pathes:
speaker_conf_path = os.path.join(dir_path, "speakers.json")
\ No newline at end of file
speaker_conf_path = os.path.join(dir_path, "speakers.json")
This diff is collapsed.
......@@ -309,8 +309,11 @@
background: #ffd740;
}</string>
</property>
<property name="maximum">
<number>100</number>
</property>
<property name="value">
<number>99</number>
<number>100</number>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
......@@ -445,17 +448,17 @@
<rect>
<x>0</x>
<y>0</y>
<width>827</width>
<height>64</height>
<width>800</width>
<height>40</height>
</rect>
</property>
<widget class="myVideoSlider" name="sld_video">
<property name="geometry">
<rect>
<x>10</x>
<y>30</y>
<width>811</width>
<height>20</height>
<y>20</y>
<width>790</width>
<height>30</height>
</rect>
</property>
<property name="minimumSize">
......@@ -568,7 +571,7 @@
<x>0</x>
<y>0</y>
<width>944</width>
<height>26</height>
<height>22</height>
</rect>
</property>
<widget class="QMenu" name="menu">
......
......@@ -121,6 +121,7 @@ class Ui_MainWindow(object):
self.sld_audio = QtWidgets.QSlider(self.centralwidget)
self.sld_audio.setMinimumSize(QtCore.QSize(0, 24))
self.sld_audio.setMaximumSize(QtCore.QSize(80, 24))
self.sld_audio.setProperty("value", 100)
self.sld_audio.setStyleSheet("QSlider:horizontal {\n"
" min-height: 24px;\n"
" max-height: 24px;\n"
......@@ -208,6 +209,7 @@ class Ui_MainWindow(object):
self.all_tableWidget.setObjectName("all_tableWidget")
self.all_tableWidget.setColumnCount(0)
self.all_tableWidget.setRowCount(0)
self.all_tableWidget.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
self.horizontalLayout_4.addWidget(self.all_tableWidget)
self.tabWidget.addTab(self.all_tab, "")
self.zm_tab = QtWidgets.QWidget()
......@@ -219,6 +221,7 @@ class Ui_MainWindow(object):
self.zm_tableWidget.setObjectName("zm_tableWidget")
self.zm_tableWidget.setColumnCount(0)
self.zm_tableWidget.setRowCount(0)
self.zm_tableWidget.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
self.horizontalLayout_2.addWidget(self.zm_tableWidget)
self.tabWidget.addTab(self.zm_tab, "")
self.pb_tab = QtWidgets.QWidget()
......@@ -229,6 +232,7 @@ class Ui_MainWindow(object):
self.pb_tableWidget.setObjectName("pb_tableWidget")
self.pb_tableWidget.setColumnCount(0)
self.pb_tableWidget.setRowCount(0)
self.pb_tableWidget.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows)
self.horizontalLayout_3.addWidget(self.pb_tableWidget)
self.tabWidget.addTab(self.pb_tab, "")
self.shuiping.addWidget(self.tabWidget)
......@@ -254,11 +258,11 @@ class Ui_MainWindow(object):
self.scrollArea.setWidgetResizable(False)
self.scrollArea.setObjectName("scrollArea")
self.scrollAreaWidgetContents = myWidgetContents()
self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 827, 64))
self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 800, 40))
self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents")
self.sld_video = myVideoSlider(self.scrollAreaWidgetContents)
self.sld_video.setGeometry(QtCore.QRect(10, 30, 811, 20))
self.sld_video.setMinimumSize(QtCore.QSize(410, 0))
self.sld_video.setGeometry(QtCore.QRect(10, 20, 780, 30))
self.sld_video.setMinimumSize(QtCore.QSize(770, 0))
self.sld_video.setMaximumSize(QtCore.QSize(16777215, 20))
self.sld_video.setMaximum(100)
self.sld_video.setOrientation(QtCore.Qt.Horizontal)
......
......@@ -97,7 +97,8 @@ class Element:
def to_short_list(self):
return [self.st_time_sec, self.subtitle, self.aside, self.speed]
def to_aside_list(self):
return [self.st_time_sec, self.ed_time_sec, self.suggest, self.aside, self.speed]
# return [self.st_time_sec, self.ed_time_sec, self.suggest, self.aside, self.speed]
return [self.st_time_sec, self.suggest, self.aside, self.speed]
def to_subtitle_list(self):
return [self.st_time_sec, self.ed_time_sec, self.subtitle]
......@@ -119,9 +120,10 @@ class ProjectContext:
self.all_elements = []
self.speaker_info = None
self.speaker_speed = None
self.duration = 0
# 一些常量
self.header = ["起始时间", "终止时间", "字幕", '建议', '解说脚本', "语速"]
self.aside_header = ["起始时间", "终止时间", '推荐插入字数', '解说脚本',"语速", "预览音频"]
self.aside_header = ['起始时间', '推荐插入字数', '解说脚本',"语速", "预览音频"]
self.subtitle_header = ["起始时间", "终止时间", "字幕"]
self.contentHeader = ["起始时间", "字幕", "解说脚本", "语速"]
......@@ -264,20 +266,27 @@ class ProjectContext:
self.subtitle_list.append(Element(st_time_sec, ed_time_sec, subtitle, suggest, aside, speed))
self.all_elements.append(self.subtitle_list[-1])
else:
if i == 0:
st_time_sec = "0.01"
if d["起始时间"][i] is None:
if i == 0:
st_time_sec = "0.01"
else:
try:
st_time_sec = "%.2f"%(float(d["终止时间"][i-1])+0.01)
except Exception as e:
# 如果是两端连续旁白,那是没有终止时间的,需要做微调,这里是直接用上一条旁白的起始时间。
st_time_sec = "%.2f"%(float(d["起始时间"][i-1])+0.01)
else:
try:
st_time_sec = "%.2f"%(float(d["终止时间"][i-1])+0.01)
except Exception as e:
# 如果是两端连续旁白,那是没有终止时间的,需要做微调,这里是直接用上一条旁白的起始时间。
st_time_sec = "%.2f"%(float(d["起始时间"][i-1])+0.01)
# 如果是最后一条
if i == len(d["字幕"])-1:
ed_time_sec = "360000" # todo 默认最大时长是100h
st_time_sec = d["起始时间"][i]
if d["终止时间"][i] is None:
# 如果是最后一条
if i == len(d["字幕"]) - 1:
ed_time_sec = "360000" if self.duration == 0 else self.duration # todo 默认最大时长是100h
else:
ed_time_sec = "%.2f"%(float(d["起始时间"][i + 1]) - 0.01)
else:
ed_time_sec = "%.2f"%(float(d["起始时间"][i + 1]) - 0.01)
ed_time_sec = d["终止时间"][i]
self.aside_list.append(Element(st_time_sec, ed_time_sec, subtitle, suggest, aside, speed))
self.all_elements.append(self.aside_list[-1])
# print("[load_excel_from_path] ", end='')
......
......@@ -31,11 +31,10 @@ class Operation_Dialog(QDialog, Ui_Dialog):
self.pickStartPos.clicked.connect(self.pick_start_pos_slot)
self.pickEndPos.clicked.connect(self.pick_end_pos_slot)
self.buttonBox.setEnabled(False)
self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).clicked.connect(
self.start_operation_slot)
# 字幕/旁白 选择框
self.comboBox.currentIndexChanged.connect(self.zmpb_change_slot)
# 增加一行/删除一行 选择框
......@@ -43,19 +42,23 @@ class Operation_Dialog(QDialog, Ui_Dialog):
self.speed_list = ["1.00(4字/秒)", "1.10(4.5字/秒)", "1.25(5字/秒)",
"1.50(6字/秒)", "1.75(7字/秒)", "2.00(8字/秒)", "2.50(10字/秒)"]
self.comboBox_3.addItems(self.speed_list)
self.lineEdits = [self.lineEdit, self.lineEdit_2, self.lineEdit_3,
self.lineEdit_4, self.lineEdit_5, self.lineEdit_6]
self.lineEdits = [self.lineEdit, self.lineEdit_4, self.lineEdit_5, self.lineEdit_6]
self.timeEdits = [self.timeEdit, self.timeEdit_2]
self.zmpb_change_slot()
self.adddel_change_slot()
def pick_start_pos_slot(self):
time = utils.transfer_second_to_time(str(self.mainWindow.player.position()/1000))
self.lineEdit_2.setText(time)
time = utils.transfer_second_to_time(
str(self.mainWindow.player.position()/1000))
st_time = QTime.fromString(time, "hh:mm:ss.zzz")
print("st_time", st_time.hour(), st_time.minute(), st_time.second(), st_time.msec())
self.timeEdit.setTime(st_time)
def pick_end_pos_slot(self):
time = utils.transfer_second_to_time(str(self.mainWindow.player.position()/1000))
self.lineEdit_3.setText(time)
time = utils.transfer_second_to_time(
str(self.mainWindow.player.position()/1000))
self.timeEdit_2.setTime(QTime.fromString(time, "hh:mm:ss.zzz"))
def zmpb_change_slot(self):
# 如果是删除,则直接return
......@@ -67,7 +70,7 @@ class Operation_Dialog(QDialog, Ui_Dialog):
self.lineEdit_5.setEnabled(False)
self.lineEdit_6.setEnabled(False)
else:
self.lineEdit_3.setEnabled(False)
self.timeEdit_2.setEnabled(False)
self.lineEdit_4.setEnabled(False)
self.lineEdit_5.setEnabled(False)
......@@ -96,20 +99,22 @@ class Operation_Dialog(QDialog, Ui_Dialog):
return False
# 校验时间填写是否是hh:mm:ss格式的
try:
time = self.timeEdit.time()
import re
if type(self.lineEdit_2.text()) == str and len(self.lineEdit_2.text()) > 0:
if type(time) == QTime and len(time.toString("hh:mm:ss.zzz")) > 0:
x = re.match(
"^(([0-1]\d)|(2[0-4])):[0-5]\d:[0-5]\d(.\d{1,2})?$", self.lineEdit_2.text())
"^(([0-1]\d)|(2[0-4])):[0-5]\d:[0-5]\d(.\d{1,3})?$", time.toString("hh:mm:ss.zzz"))
assert x != None
if type(self.lineEdit_3.text()) == str and len(self.lineEdit_3.text()) > 0:
time = self.timeEdit_2.time()
if type(time) == QTime and len(time.toString("hh:mm:ss.zzz")) > 0:
x = re.match(
"^(([0-1]\d)|(2[0-4])):[0-5]\d:[0-5]\d(.\d{1,2})?$", self.lineEdit_3.text())
"^(([0-1]\d)|(2[0-4])):[0-5]\d:[0-5]\d(.\d{1,3})?$", time.toString("hh:mm:ss.zzz"))
assert x != None
except Exception as e:
self.mainWindow.prompt_dialog.show_with_msg(
"校验失败!起始或结束时间输入的格式有误!应该为hh:mm:ss!!" % (rowCount, self.lineEdit.text()))
"校验失败!起始或结束时间输入的格式有误!应该为hh:mm:ss.zzz!!")
return False
# 这些是只有【add】才需要检测的
......@@ -118,10 +123,10 @@ class Operation_Dialog(QDialog, Ui_Dialog):
start_time_f, end_time_f = 0.0, 0.0
try:
start_time_f = float(
utils.trans_to_seconds(self.lineEdit_2.text()))
utils.trans_to_seconds(self.timeEdit.time().toString("hh:mm:ss")))
if self.comboBox.currentText() == "字幕":
end_time_f = float(
utils.trans_to_seconds(self.lineEdit_3.text()))
utils.trans_to_seconds(self.timeEdit_2.time().toString("hh:mm:ss")))
assert start_time_f < end_time_f
except Exception as e:
self.mainWindow.prompt_dialog.show_with_msg(
......@@ -164,7 +169,9 @@ class Operation_Dialog(QDialog, Ui_Dialog):
self.comboBox_2.setEnabled(status)
def start_operation_slot(self):
row, start_time, end_time, subtitle, suggest, aside = [
print("operation 触发")
start_time, end_time = ["%02d:%02d:%02d.%03d" % (x.time().hour(), x.time().minute(), x.time().second(), x.time().msec()) for x in self.timeEdits]
row, subtitle, suggest, aside = [
x.text() for x in self.lineEdits]
speed = self.comboBox_3.currentText()
# 将hh:mm:ss转成秒的形式传给mainWindow
......@@ -186,6 +193,8 @@ class Operation_Dialog(QDialog, Ui_Dialog):
self.zmpb_change_slot()
self.adddel_change_slot()
print(suggest)
# 根据增删两种操作,分别触发不同信号。
if self.comboBox_2.currentText() == "增加一行":
self.start_add_signal.emit(
......@@ -207,10 +216,13 @@ class Operation_Dialog(QDialog, Ui_Dialog):
assert 1 <= row_number <= rowCount
elem = self.mainWindow.projectContext.all_elements[int(
row_number)-1]
self.lineEdit_2.setText(
str(utils.transfer_second_to_time(elem.st_time_sec)))
self.lineEdit_3.setText(str(utils.transfer_second_to_time(elem.ed_time_sec))) if len(
elem.ed_time_sec) > 0 else self.lineEdit_3.setText("")
# todo, 改成可以spinbox的那种形式
self.timeEdit.setTime(QTime.fromString(
str(utils.transfer_second_to_time(elem.st_time_sec)), "hh:mm:ss.zzz"))
self.timeEdit_2.setTime(QTime.fromString(str(utils.transfer_second_to_time(
elem.ed_time_sec)), "hh:mm:ss.zzz")) if len(elem.ed_time_sec) > 0 else self.timeEdit_2.setEnabled(False)
self.lineEdit_4.setText(elem.subtitle)
self.lineEdit_6.setText(elem.aside)
self.comboBox_3.setCurrentIndex(
......
......@@ -14,11 +14,10 @@
<string>Dialog</string>
</property>
<layout class="QGridLayout" name="gridLayout" columnstretch="0,0,0,0,0">
<item row="1" column="3" colspan="2">
<widget class="QPushButton" name="pushButton_3">
<item row="6" column="2">
<widget class="QLabel" name="label_11">
<property name="text">
<string>填充
行信息</string>
<string>*请填文字</string>
</property>
</widget>
</item>
......@@ -32,6 +31,121 @@
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QLabel" name="label_9">
<property name="text">
<string>*请填数字,最多保留两位小数</string>
</property>
</widget>
</item>
<item row="1" column="2">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>行(如果操作是增加,则在该行后面增加)</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_13">
<property name="font">
<font>
<pointsize>8</pointsize>
</font>
</property>
<property name="text">
<string>*需要填在【字幕旁白】页面中的行数</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>结束时间:</string>
</property>
</widget>
</item>
<item row="2" column="3">
<widget class="QPushButton" name="pickStartPos">
<property name="text">
<string>取当前位置</string>
</property>
</widget>
</item>
<item row="4" column="2">
<widget class="QLabel" name="label_10">
<property name="text">
<string>*请填文字</string>
</property>
</widget>
</item>
<item row="6" column="3">
<widget class="QLabel" name="label_14">
<property name="text">
<string>语速:</string>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>旁白:</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>起始时间:</string>
</property>
</widget>
</item>
<item row="3" column="3">
<widget class="QPushButton" name="pickEndPos">
<property name="text">
<string>取当前位置</string>
</property>
</widget>
</item>
<item row="5" column="2">
<widget class="QLabel" name="label_12">
<property name="text">
<string>*请填数字,必须是不超过100的正整数</string>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QLineEdit" name="lineEdit_6">
<property name="enabled">
<bool>true</bool>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QLineEdit" name="lineEdit_4">
<property name="enabled">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>我想操作第</string>
</property>
</widget>
</item>
<item row="1" column="3" colspan="2">
<widget class="QPushButton" name="pushButton_3">
<property name="text">
<string>填充
行信息</string>
</property>
</widget>
</item>
<item row="8" column="4">
<widget class="QDialogButtonBox" name="buttonBox">
<property name="enabled">
......@@ -66,10 +180,10 @@
</property>
</widget>
</item>
<item row="6" column="3">
<widget class="QLabel" name="label_14">
<item row="2" column="2">
<widget class="QLabel" name="label_8">
<property name="text">
<string>语速:</string>
<string>*请填数字,最多保留两位小数</string>
</property>
</widget>
</item>
......@@ -107,69 +221,20 @@
</item>
</layout>
</item>
<item row="6" column="2">
<widget class="QLabel" name="label_11">
<property name="text">
<string>*请填文字</string>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QComboBox" name="comboBox_2">
<item>
<property name="text">
<string>增加一行</string>
</property>
</item>
<item>
<property name="text">
<string>修改一行</string>
</property>
</item>
<item>
<property name="text">
<string>删除一行</string>
</property>
</item>
</widget>
</item>
<item row="5" column="2">
<widget class="QLabel" name="label_12">
<item row="5" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string>*请填数字,必须是不超过100的正整数</string>
<string>推荐字数:</string>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QLabel" name="label_9">
<item row="4" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>*请填数字,最多保留两位小数</string>
<string>字幕:</string>
</property>
</widget>
</item>
<item row="1" column="2">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLabel" name="label_2">
<property name="text">
<string>行(如果操作是增加,则在该行后面增加)</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_13">
<property name="font">
<font>
<pointsize>8</pointsize>
</font>
</property>
<property name="text">
<string>*需要填在【字幕旁白】页面中的行数</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="0" column="1">
<layout class="QHBoxLayout" name="horizontalLayout" stretch="1,1">
<item>
......@@ -207,56 +272,23 @@
</item>
</layout>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_6">
<property name="text">
<string>推荐字数:</string>
</property>
</widget>
</item>
<item row="6" column="1">
<widget class="QLineEdit" name="lineEdit_6">
<property name="enabled">
<bool>true</bool>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QLineEdit" name="lineEdit_2"/>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>起始时间:</string>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QLabel" name="label_8">
<property name="text">
<string>*请填数字,最多保留两位小数</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_5">
<property name="text">
<string>字幕:</string>
</property>
</widget>
</item>
<item row="4" column="2">
<widget class="QLabel" name="label_10">
<property name="text">
<string>*请填文字</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QLineEdit" name="lineEdit_4">
<property name="enabled">
<bool>true</bool>
</property>
<item row="0" column="2">
<widget class="QComboBox" name="comboBox_2">
<item>
<property name="text">
<string>增加一行</string>
</property>
</item>
<item>
<property name="text">
<string>修改一行</string>
</property>
</item>
<item>
<property name="text">
<string>删除一行</string>
</property>
</item>
</widget>
</item>
<item row="5" column="1">
......@@ -266,48 +298,32 @@
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>我想操作第</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="lineEdit"/>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_4">
<property name="text">
<string>结束时间:</string>
<item row="2" column="1">
<widget class="QTimeEdit" name="timeEdit">
<property name="currentSection">
<enum>QDateTimeEdit::MinuteSection</enum>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QLineEdit" name="lineEdit_3">
<property name="enabled">
<bool>true</bool>
<property name="displayFormat">
<string>hh:mm:ss.zzz</string>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>旁白:</string>
<property name="currentSectionIndex">
<number>1</number>
</property>
</widget>
</item>
<item row="2" column="3">
<widget class="QPushButton" name="pickStartPos">
<property name="text">
<string>取当前位置</string>
<item row="3" column="1">
<widget class="QTimeEdit" name="timeEdit_2">
<property name="currentSection">
<enum>QDateTimeEdit::SecondSection</enum>
</property>
</widget>
</item>
<item row="3" column="3">
<widget class="QPushButton" name="pickEndPos">
<property name="text">
<string>取当前位置</string>
<property name="displayFormat">
<string>hh:mm:ss.zzz</string>
</property>
<property name="currentSectionIndex">
<number>2</number>
</property>
</widget>
</item>
......
This diff is collapsed.
......@@ -40,10 +40,8 @@ def transfer_second_to_time(sec: str) -> str:
hour = int(duration/3600)
minutes = int((duration % 3600)/60)
seconds = int(duration%60)
idx = sec.find('.')
if(idx == -1):
idx = len(sec)
time = "%02d:%02d:%02d%s" % (hour, minutes, seconds, sec[idx:idx+3])
msec = (float(sec) - hour * 3600 - minutes * 60 - seconds) * 1000
time = "%02d:%02d:%02d.%03d" % (hour, minutes, seconds, msec)
return time
def replace_path_suffix(path, new_suffix):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment