在六维空间下载了电影,想看一看,结果无字幕,菜鸡表示听不懂。去其他网站找字幕,结果时间不一致。
可以去下载新的,码农表示更想用代码操作试一试。
写个脚本,自动翻译,让电脑先看一遍电影,然后自动生成英文字幕,并同声翻译。后期的电影内容如果可以矫正对前期内容的理解,自动修正前面已经翻译好的内容。
不过好像旷世还没这个功能。
真香警告,菜鸡选择修改字幕文件。将字幕时间提前(扩展功能:也可滞后)
源代码:
import re,os,time,math,os.path,datetime
def time_stamp2time(x):
time_list = [str(i) for i in x.split(' --> ')]
time_list1_1 = [x for x in time_list[0].split(':')]
time_list1_2 = [int(x) for x in time_list1_1[2].split(',')]
time_list1_1.pop()
time_list2_1 = [x for x in time_list[1].split(':')]
time_list2_2 = [int(x) for x in time_list2_1[2].split(',')]
time_list2_1.pop()
t1=[int(time_list1_1[0]),int(time_list1_1[1]),(time_list1_2[0]+time_list1_2[1]/1000)]
t2=[int(time_list2_1[0]),int(time_list2_1[1]),(time_list2_2[0]+time_list2_2[1]/1000)]
return t1,t2
#加上指定的时间
def add_time(time,s):
time[2] = time[2]+s
if time[2] >= 60:
time[1] = time[1]+int(time[2]//60)
time[2] = time[2]%60
if time[1] >=60:
time[0] = time[0]+int(time[1]//60)
time[1] = time[1]%60
return time
#减去指定的时间
def reduce_time(time,s):
time[2] = time[2]-s
if time[2] < 0:
time[1] = time[1]-int((time[2] + 60)//60)
time[2] = (time[2] + 60)%60
if time[1] < 0:
time[0] = time[0]+int((time[1] + 60)//60)
time[1] = (time[1] + 60)%60
return time
def time2time_stamp(x):
x.append(round((x[2]-math.floor(x[2])),3))
x[2] = math.floor(x[2])
H = str(x[0]).zfill(2)
M = str(x[1]).zfill(2)
S = str(x[2]).zfill(2)
MS = str(int(x[3]*1000)).zfill(3)
time_stamp = H+':'+M+':'+S+','+MS
return time_stamp
def modify(f, s):
with open(f,'r') as f1:
path, name = os.path.split(f)
f2 = open(os.path.join(path,'Temporary.txt'),'a')
for line in f1:
if re.match(r'\d{1,2}:\d{1,2}:\d{1,2},\d{1,3} --> \d{1,2}:\d{1,2}:\d{1,2},\d{3}',line):
line = line.strip()
time_stamp1 = line
t1,t2 = time_stamp2time(time_stamp1)
# t1 = add_time(t1,s)
# t2 = add_time(t2,s)
t1 = reduce_time(t1,s)
t2 = reduce_time(t2,s)
time_stamp_1 = time2time_stamp(t1)
time_stamp_2 = time2time_stamp(t2)
time_stamp2=time_stamp_1+' --> '+time_stamp_2+'\n'
line = time_stamp2
f2.write(line)
f2.close()
os.remove(name)
os.rename('Temporary.txt',name)
if __name__ == '__main__':
file_name = '1.srt'# 填写修改srt文件的目录
time_mody = float(input('请输入向后移动时间轴的秒数:',))
starttime = datetime.datetime.now()
modify(file_name, time_mody)
endtime = datetime.datetime.now()
print ('转换耗时:',endtime - starttime)
下一步看能否删除中文,只留英文,因吹斯汀