Jul 28
看到了 Cheng Meng 的那个 Youtube downloader,由于对 Ruby 的无知,一点也看不懂,所以就参考 DownloadYoutube video with GAWK 用 python 自己写了一个。与 Cheng Meng 那个不同,我这个只负责把视频文件 url 打印出来。用法是 youtube-url.py video-id 所以要下载 id为 qNKtKm3SXvs 的视频,可以用这个命令
wget -O video.flv `youtube-url.py qNKtKm3SXvs`
youtube-url.py 的代码:
#!/usr/bin/env python # Time-stamp: <corsair 2007-07-28 16:16:38> # Corsair <chris.corsair@gmail.com> # Usage: youtube-url video-id import sys import urllib2 import getopt def main(): # Options parsing, fake for now. try: Options, Args = getopt.gnu_getopt(sys.argv[1:], “”, []) except getopt.GetoptError: # print help information and exit: pass if len(sys.argv) == 1: print “Pleas specify a video-id.” sys.exit(1) VideoID = sys.argv[1] WatchPage = urllib2.urlopen( “”.join([“http://youtube.com/watch?v=”, VideoID])) HtmlLine = “” while HtmlLine.find(“SWFObject”) == -1: HtmlLine = WatchPage.readline() UrlOriginal = HtmlLine[HtmlLine.find(“BASE_YT_URL”)+12:] UrlOriginal = ‘?’.join([“http://www.youtube.com/get_video”, UrlOriginal[:UrlOriginal.find(‘\”‘)]. partition(‘&’)[2]]) # Redirect RedirectOpener = urllib2.build_opener( urllib2.HTTPRedirectHandler) Request = urllib2.Request(UrlOriginal) UrlReal = RedirectOpener.open(Request).url print UrlReal if __name__ == “__main__”: main()

七月 28th, 2007 at 05:04
对的,可以用管道。我觉得ruby程序还是挺好懂的,我基本上也是第一次写正经的ruby脚本。后来改了一个,直接在脚本里调用wget了……不够unix
感觉python做正则表达式匹配不够方便,没有像perl,ruby那样直接在语言内建对正则表达式的支持,re库的那些个函数用法又不是很直观。ruby确实很elegant。
七月 28th, 2007 at 08:15
嗯,我本来是想用那个 re 库的,后来看了文档就放弃了…
Ruby 是一点也没看过,那个绝对值是什么东西?? :-p 现在 ruby 有虚拟机了么?
七月 28th, 2007 at 10:13
绝对值是block的参数,block就是do..end,类似于lambda,绝对好用,可以达到metaprogramming的效果,看起来也很漂亮。re的库不是给人用得,每次都要看文档然后试半天。
ruby的虚拟机,YARV,现在还在开发,估计会整合到Ruby 2.0里(Ruby 2.0,北京奥运之前肯定看不到)。现在还有JRuby,刚发布了1.0,是jvm上的ruby。还有ironruby,.net上的,刚出来一个pre-alpha,很破,除了一些core特性别的都不行。其实ruby这两年红主要是因为Ruby On Rails,不过我不太关心那个东西
七月 28th, 2007 at 10:36
Woo~~,好像不错阿~~ 我去官网看看~~
五月 30th, 2008 at 10:16
汗…我完全不懂你们说的这些程序语言,但是请问各位高人,楼主写的这些代码怎么用啊?我把它们都复制到记事本上了,然后把名字改为了youtube-url.py,但是我不知道如何运用它来获取youtube的url地址,上网也查不到py文件的使用方法,真的很希望你们能回复我这个对你们来说弱弱的问题,谢谢啦o(∩_∩)o…
五月 31st, 2008 at 02:26
需要安装 python 的解释器(也就是一个叫做 python 的程序),然后 python youtube-url.py xxxxx
六月 1st, 2008 at 03:14
谢谢啦,在你的指点下我找了个python2.5.1的版本。虽然还没弄懂怎么用,不过正在研究中。
感觉这里都是强人,我会经常来学习学习的o(∩_∩)o…