machine learning公开课的字幕获取脚本


话说10月10日斯坦福开始的machine learning很有意思,网站在这,而且视频可以下载,观看起来非常方便,但是有个问题就是下载下来的视频没有字幕,而从网上的视频有字幕,于是可以写个程序将字幕搞下来。

感谢scturtle提供的最初的脚本程序

下面是我经过修改的精简版,只要输入视频的文件名(名字中不要有后缀名)就可以下载字幕了

  1. # coding: utf-8
  2. import urllib2,os
  3. import sys,re,codecs
  4.  
  5. limit=[60,60,60,1000]
  6. def xml2srt(fi,fo):
  7.     data=''.join((fi.split('\n')[9:-4])).strip().split('</p>')
  8.     for i in range(0,len(data)-1):
  9.         if data[i]:
  10.             st_st=data[i].index('"')
  11.             st_ed=data[i].index('"',st_st+1)
  12.             if i+1<len(data)-1:
  13.                 nx_st=data[i+1].index('"')
  14.                 nx_ed=data[i+1].index('"',nx_st+1)
  15.             fo.write(str(i+1)+' \n')
  16.             stamps=[data[i][st_st+1:st_ed],
  17.                     data[i+1][nx_st+1:nx_ed] if i+1<len(data)-1 else "99:59:59.999"]
  18.             word=data[i][data[i].index('>')+1:].replace('\n',' ')+' \n\n\n'
  19.             for i,stamp in enumerate(stamps):
  20.                 stamp=stamp.split('.')
  21.                 stamps[i]=map(int,stamp[0].split(':'))
  22.                 stamps[i].append(int(stamp[1]))
  23.             stamps=map(lambda s:"%02d:%02d:%02d,%03d" % tuple(s),stamps)
  24.             fo.write("%s --> %s \n" % tuple(stamps))
  25.             fo.write(word)
  26.     print 'OK!'
  27.    
  28. baseurl='http://s3.amazonaws.com/stanford_videos/cs229/subtitles/%s-subtitles.xml'
  29. fn=raw_input('file name:')
  30. if os.path.exists(fn+'.srt'):
  31.     print 'file exit!'
  32.     exit(0)
  33. fi=urllib2.urlopen(baseurl % fn).read()
  34. fo=file(fn+'.srt','w')
  35. xml2srt(fi,fo)
  36. fo.close()
  37. print 'Done'

为了方便使用,我还制作了windows下可执行的exe的程序,直接运行run.exe输入视频名就可以了,这里下载

您可能喜欢:
我猜您可能还喜欢:
, ,

《machine learning公开课的字幕获取脚本》有 11 条评论

  1. sth | #1

    请问文件名是指什么,machine learning?

  2. Mrl | #2

    thanks a lot!!!

  3. Dean | #3

    使用说明能不能提供下?我输入了 但是机器没有反应,下载下来的位置是哪里?

  4. Yatao Bian | #4

    但是现在视频文件的名字好像改了,原来视频文件的名字你知道吗?

Trackbacks/Pingbacks:

  1. gevent初步 | 吃杂烩
  2. 查找第K小的元素 | 吃杂烩
  3. Thought this was cool: 查找第K小的元素 « CWYAlpha
  4. Recommended Online Courses for Computer Science Students | Science Matrix

发表评论