Today I used LiveHTTPHeaders to take a closer look at how the youtube video streams are directed to the browser. And I found that
my previous attempt
actually has some redundency in it. To get the flv video stream, simply request the URL:
http://cache.googlevideo.com/get_video?video_id=${vid}
where vid is simply the v string in the original URL. e.g.
http://www.youtube.com/watch?v=5C0I7Ef4gQI
So the simplified version is
one line of code
even shorter now.
def vid = (args[0] =~ (/(?<=v=).*$/)).getAt(0)
new File(“${vid}.flv”).withOutputStream{os -> new URL(