这是个工具

先前看TED视频,关于 学校教育扼杀创造性的视频。
视频很好,也有中文字幕等。下面也提供高清版本下载,很是欣喜。
遗憾的是,字幕不提供下载。(或者说我没有找到)

俗话说,自己动手丰衣足食。直接拿Firebug找到字幕文件地址,下载下来看到是JSON格式的,随即想到直接用JS输出字符串就可以转换到srt字幕。
代码如下,非常简单的代码,实用就好,不求效率、安全和边界问题,只求最快解决我的问题~

不得不说,学一门编程语言很有意义,不论是什么,都能很方便解决一些实际的问题。这很开心。
JS仔细说来是一门很强大的语言,处理JSON和XML都很方便,大多数时候应付足够了。不过也会有力不从心的时候,尤其是对于系统的操作,总有很多缺陷。不过如果算上微软的JScript的话,也很可以了。曾经想学Python,现在也坦然了,随便用什么,喜欢就好。或许,这与我不再从事IT相关行业有关吧。够用就行咯~

  1. //读取chi_hans文件
  2. $.getJSON("chi_hans",function(json) {
  3.     var c=json.captions,o=[];
  4.     for (var i=0,l=c.length; i<l; i++) {
  5.         o.push(i+1);
  6.         //这里的18500是时间偏移
  7.         o.push(timeline(c[i].startTime+18500)+" --> "
  8.             +timeline(c[i].startTime+c[i].duration+18500));
  9.         o.push(c[i].content);
  10.         o.push("");
  11.         //if (i==5) break;
  12.     }
  13.     //这里我输出到一个textarea
  14.     $("#output").text(o.join("\r"));
  15. });
  16. //这是根据JSON里时间得到srt字幕里的时间
  17. function timeline(time) {
  18.     t=new Date(time);
  19.     return [
  20.         leadZero(t.getUTCHours()),
  21.         leadZero(t.getUTCMinutes()),
  22.         leadZero(t.getUTCSeconds())
  23.     ].join(":")+","+leadZero3(t.getUTCMilliseconds());
  24. }
  25. //加入前导零
  26. function leadZero(s) {
  27.     if (s<10) {
  28.         return "0"+s;
  29.     }else {
  30.         return s;
  31.     }
  32. }
  33. //这也是前导零,三位数的
  34. function leadZero3(s) {
  35.     var ret;
  36.     if (s<10) {
  37.         ret="00"+s;
  38.     }else if (s<100) {
  39.         ret= "0"+s;
  40.     }else {
  41.         ret=s;
  42.     }
  43.     return ret;
  44. }
This entry was posted in jQuery. Bookmark the permalink.

5 Responses to 这是个工具

  1. Hobo says:

    哈哈,果真是自己动手….还是在线看视频吧.

  2. lanqy says:

    不再从事IT相关行业了啊?

  3. Daniel says:

    能否请教博主一个问题,我点击进入了TED视频页面,尝试用Firebug找subtitle的地址,但是运气不好,请问如何才能找到?谢谢。

    • Shawphy says:

      切换到网络标签,这里可以监控页面所有的请求。然后你切换字幕后,就会多出几条请求了。其中就能找到字幕文件了。

  4. Evance says:

    Shawphy,怎么转行了叻?
    哈,看你博客有一段时间了,不过今天才第一次留言哈。

發表迴響

您的電子郵件位址並不會被公開。 必要欄位標記為 *

*

您可以使用這些 HTML 標籤與屬性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>