[PYTHON]python代码秀!!!强人们快来参与啊!
最近人气太差啦.大家随件找些代码贴出来相互学习一下吧.
我先来.
昨天搞到了relolution_os的avi,看了半天发现只能听得大概意思,不爽.还好在linuxfourm上找到了它的中英文字幕.不过可能强人们造字幕时用的avi和我下的有点不同:我的前面剪了7秒的空白.导致对不上,在mplayer里找了半天也不知道怎么调,到是有一个subtitle delay的控制,不过没啥用.
打开字幕文件发现时间是按如下方式控制的:
1
00:00:01,500 --> 00:00:09,000
English subtitle generated by geek@geekbone.org
中文字幕由yinux翻译整理,2004年3月
2
00:00:09,500 --> 00:00:11,000
I was at the Agenda 2000
那是在2000年例会(Agenda 2000)期间
3
00:00:11,600 --> 00:00:14,400
and uh, one of the people who was there
was Craig Mundie,
参加人的里有个叫Craig Mundie的家伙
4
00:00:14,400 --> 00:00:17,500
who is some kind of
high mucky muck at Microsoft,
是Microsoft公司的一个大头头
5
00:00:18,000 --> 00:00:21,500
I think uh, vice-president of consumer products
or something like that.
我觉得,嗯,是管客户产品的副总裁吧,或是
和那差不多的大头。
用我的超强代码一搞,每个时间都提前7秒啦.这样看起来才爽.不过昨天搞到1:30,今天才有福看碟.
顺便学习了一下re
#code start
#
#puropose shift srt-subtitle time
#author mahongxi enjoylinux@hotmai.com
#createdate 2004-09-23
#
import re
import sys
def usage():
print """
usage:python shiftsrt.py in_srtfilename out_srtfilename delayseconds
e.g. python shiftsrt.py mysrt.srt mysrt2.srt 4
"""
sys.exit(1)
#oldtime string "01:04:01,500"
#delay 4 (seconds) ret "01:07:57,500"
#delay -2.5 (seconds) ret "01:03:59,000"
def delaytime(oldtime,delay):
#get time info ,result like this [('01', '04', '01', '500')]
times = re.findall(r'^(\d+):(\d+):(\d+),(\d+)$',oldtime)
if len(times) == 0:
return none
#t1=1 t2=4 t3=1 t4=500
t1,t2,t3,t4 = [int(s) for s in times[0]]
#get seconds
val1 = t1*3600 + t2*60 + t3 + t4/1000.0
#get wanted seconds
val2 = val1 + delay
if val2 < 0:
return '00:00:00,000'
t1,mod = int(val2/3600),val2%3600
t2,mod = int(mod/60),mod%60
t3,mod = int(mod/1),mod%1
t4 = round(mod,3) * 1000
#return result
return r'%02d:%02d:%02d,%03d' % (t1,t2,t3,t4)
#end of def
if __name__ == '__main__':
if len(sys.argv) != 4:
usage()
infile = open(sys.argv[1],'r')
outfile = open(sys.argv[2],'w')
delay = float(sys.argv[3])
for s in infile.readlines():
res = re.findall(r'^(\d+:\d+:\d+,\d+) --> (\d+:\d+:\d+,\d+)\s*$',s)
if len(res) == 0:
outfile.write(s)
else:
temp = r'%s --> %s' % (delaytime(res[0][0],delay),delaytime(res[0][1],delay))
outfile.write(temp + '\n')
outfile.close()
infile.close()
#code end