var http = require('http') var fs = require('fs') http.get("http://www.youtube.com/get_video_info?video_id=F_CvDj8pLo0", function(res) { //console.log("Got response: " + res.statusCode); var chunks = [] res.on('data', function(chunk){chunks.push(chunk) }).on('end', function(){ var data = Buffer.concat(chunks).toString() var videoInfo = parseVideoInfo(data) downloadVideo(videoInfo) }) }).on('error', function(e) { console.log("Got error: " + e.message) }); function parseVideoInfo(videoInfo) { var rxUrlMap = /url_encoded_fmt_stream_map=([\]\[!"#$%'()*+,.\/:;<=>?@\^_`{|}~-\w]*)/ urlmap = unescape(videoInfo.match(rxUrlMap)[1]) //console.log(urlmap); var rxUrlG = /url=([\]\[!"#$%'()*+,.\/:;<=>?@\^_`{|}~-\w]*)/g var rxUrl = /url=([\]\[!"#$%'()*+,.\/:;<=>?@\^_`{|}~-\w]*)/ urls = urlmap.match(rxUrlG) urls = map(urls, function(s) {return s.match(rxUrl)[1]} ) urls = map(urls, unescape) //console.log(urls[0]) return { title:"test", urls: urls } } function downloadVideo(videoInfo) { var url = videoInfo.urls[0]; var filename = videoInfo.title + ".flv" http.get(url, function(res) { var stream = fs.createWriteStream(filename) res.pipe(stream) }) console.log("Downloading to "+filename); } function map (a,f) { for(i=0;i