<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" viewSourceURL="srcview/index.html"> <mx:HBox> <mx:Label text="YouTube URL:" /> <mx:VBox> <mx:TextInput id="siteUrl" /> <mx:Button id="getBtn" label="Download" click="download()" /> </mx:VBox> </mx:HBox> <mx:Script> <![CDATA[ import flash.net.navigateToURL; import phi.controls.phiBusy; import mx.rpc.events.ResultEvent; import mx.rpc.http.HTTPService; private const GET_VIDEO :String = "http://youtube.com/get_video.php"; private const GET_VIDEO_INFO :String = "http://youtube.com/get_video_info.php"; private var videoID :String = ""; private function download():void { var service :HTTPService = new HTTPService(); videoID = parseURL(siteUrl.text); service.url = GET_VIDEO_INFO + "?video_id=" + videoID; service.resultFormat = 'object'; phiBusy.showBusy(); service.addEventListener(ResultEvent.RESULT, onLoadVideoInfoComplete); service.send(); } private function parseURL(url:String):String { var reg :RegExp = /youtube\.com\/watch\?v=([^&\/]+)/; var res :Object = reg.exec(url); return res[1]; } private function onLoadVideoInfoComplete(evt:ResultEvent):void { phiBusy.removeBusy(); var tmp :Array = evt.result.toString().split("&"); var token :String = tmp[8].toString().split("=")[1]; downloadVideo(token); } private function downloadVideo(token:String):void { navigateToURL(new URLRequest(GET_VIDEO + "?video_id="+ videoID +"&t="+ token)); } ]]> </mx:Script> </mx:Application>