forked from: soundchaos core

by wh0 forked from soundchaos core (diff: 55)
♥0 | Line 100 | Modified 2010-05-07 13:45:03 | MIT License | (replaced)
play

ActionScript3 source code

/**
 * Copyright wh0 ( http://wonderfl.net/user/wh0 )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/m2PR
 */

package {
	import mx.utils.Base64Decoder;
	import flash.display.*;
	import flash.events.*;
	import flash.system.*;
	import flash.net.*;
	import flash.media.*;
	import flash.filters.*;
	[SWF(backgroundColor='#000000', width=380, height=216)]
	public class SoundChaos extends Sprite {
		
		private static const PROXY:String = 'http://5ivestar.org/proxy/';
		private static const SERVER:String = 'http://www.google.com/recaptcha/api/';
		private static const KEY:String = '6LcFAAAAAAAAAO3J7S8Djh3uV9stj1GR57EeSdr-';
		private static const CONTEXT:LoaderContext = new LoaderContext(true);
		
		private const scrapeChallenge:RegExp = /challenge:'(.+?)'/;
		private const scrapeReload:RegExp = /Recaptcha.finish_reload\('(.+)', 'audio'\);/;
		
		private var c:String;
		
		private var qty:int = 0;
		private var src:Video;
		private var sf:ShaderFilter;
		private var ns:NetStream;
		
		public function SoundChaos() {
			Security.loadPolicyFile(PROXY + 'crossdomain.xml');
			stage.scaleMode = StageScaleMode.NO_SCALE;
			
			var nc:NetConnection = new NetConnection();
			nc.connect(null);
			ns = new NetStream(nc);
			ns.addEventListener(NetStatusEvent.NET_STATUS, loop);
			ns.play('http://www.istockphoto.com/video_passthrough.php/11662685/65/11662685.flv');
			//ns.play('http://www.istockphoto.com/video_passthrough.php/12194254/65/12194254.flv');
			src = new Video(380, 216);
			src.attachNetStream(ns);
			
			var ll:Loader = new Loader();
			ll.contentLoaderInfo.addEventListener(Event.COMPLETE, loGet);
			ll.load(new URLRequest('http://assets.wonderfl.net/images/related_images/9/9f/9fde/9fde781cea66f12057a884e1e67a6c79dd605c28'), CONTEXT);
			
			var hl:Loader = new Loader();
			hl.contentLoaderInfo.addEventListener(Event.COMPLETE, hiGet);
			hl.load(new URLRequest('http://assets.wonderfl.net/images/related_images/e/ed/ed00/ed007fbcbba77a94c3fed31bf7c35156652d3150'), CONTEXT);
			
			var d:Base64Decoder = new Base64Decoder();
			d.decode('oQECAAAMX091dENvb3JkAKEBAgQADGQAowAEc3JjAKMBBGxvAKMCBGhpAKECBAEAD2RzdAAdBQDBAAAQAAIFAMEEABAAMAEA8QAAEAAwAgDxBQAQATADAPEFABACAgEA4gIAGAACAwDiAgAYAAUBAOIDABgA');
			sf = new ShaderFilter(new Shader(d.toByteArray()));
			sf.shader.data.d.value = [0, 0];

			challenge();
		}
		
		private function challenge():void {
			var req:URLRequest = new URLRequest(PROXY + SERVER + 'challenge');
			req.method = URLRequestMethod.GET;
			req.data = new URLVariables();
			req.data['k'] = KEY;
			req.data['lang'] = 'en';
			req.data['rand'] = Math.random();
			var ul:URLLoader = new URLLoader();
			ul.addEventListener(Event.COMPLETE, handleChallenge);
			ul.load(req);
		}
		
		private function handleChallenge(e:Event):void {
			c = scrapeChallenge.exec(e.target.data)[1];
			reload('a');
		}
		
		private function reload(r:String):void {
			var req:URLRequest = new URLRequest(PROXY + SERVER + 'reload');
			req.method = URLRequestMethod.GET;
			req.data = new URLVariables();
			req.data['c'] = c;
			req.data['k'] = KEY;
			req.data['type'] = 'audio';
			req.data['lang'] = 'en';
			req.data['audio_beta_12_08'] = '1';
			var ul:URLLoader = new URLLoader();
			ul.addEventListener(Event.COMPLETE, handleReload);
			ul.load(req);
		}
		
		private function handleReload(e:Event):void {
			c = scrapeReload.exec(e.target.data)[1];
			var req:URLRequest = new URLRequest(SERVER + 'image');
			req.method = URLRequestMethod.GET;
			req.data = new URLVariables();
			req.data['c'] = c;
			new Sound(req).play();
			reload('r');
		}
		
		private function loop(x:*):void {
			if (x.info.code == 'NetStream.Play.Stop')
				ns.seek(0);
		}
		
		private function loGet(e:Event):void {
			sf.shader.data.lo.input = e.target.content.bitmapData;
			if (++qty == 2)
				done();
		}
		
		private function hiGet(e:Event):void {
			sf.shader.data.hi.input = e.target.content.bitmapData;
			if (++qty == 2)
				done();
		}
		
		private function done():void {
			src.filters = [sf];
			addChild(src);
		}
		
	}
}