
话说10月10日斯坦福开始的machine learning很有意思,网站在这,而且视频可以下载,观看起来非常方便,但是有个问题就是下载下来的视频没有字幕,而从网上的视频有字幕,于是可以写个程序将字幕搞下来。
感谢scturtle提供的最初的脚本程序
下面是我经过修改的精简版,只要输入视频的文件名(名字中不要有后缀名)就可以下载字幕了
- # coding: utf-8
- import urllib2,os
- import sys,re,codecs
- limit=[60,60,60,1000]
- def xml2srt(fi,fo):
- data=''.join((fi.split('\n')[9:-4])).strip().split('</p>')
- for i in range(0,len(data)-1):
- if data[i]:
- st_st=data[i].index('"')
- st_ed=data[i].index('"',st_st+1)
- if i+1<len(data)-1:
- nx_st=data[i+1].index('"')
- nx_ed=data[i+1].index('"',nx_st+1)
- fo.write(str(i+1)+' \n')
- stamps=[data[i][st_st+1:st_ed],
- data[i+1][nx_st+1:nx_ed] if i+1<len(data)-1 else "99:59:59.999"]
- word=data[i][data[i].index('>')+1:].replace('\n',' ')+' \n\n\n'
- for i,stamp in enumerate(stamps):
- stamp=stamp.split('.')
- stamps[i]=map(int,stamp[0].split(':'))
- stamps[i].append(int(stamp[1]))
- stamps=map(lambda s:"%02d:%02d:%02d,%03d" % tuple(s),stamps)
- fo.write("%s --> %s \n" % tuple(stamps))
- fo.write(word)
- print 'OK!'
- baseurl='http://s3.amazonaws.com/stanford_videos/cs229/subtitles/%s-subtitles.xml'
- fn=raw_input('file name:')
- if os.path.exists(fn+'.srt'):
- print 'file exit!'
- exit(0)
- fi=urllib2.urlopen(baseurl % fn).read()
- fo=file(fn+'.srt','w')
- xml2srt(fi,fo)
- fo.close()
- print 'Done'
为了方便使用,我还制作了windows下可执行的exe的程序,直接运行run.exe输入视频名就可以了,这里下载





请问文件名是指什么,machine learning?
@sth: 指的是下载下来的视频的名字
thanks a lot!!!