// ==SiteScript== // @siteName add-anime // @siteUrl http://add-anime.net/ // @author mayan // @authorUrl // @scriptUrl // @description // @date 2013/07/23 // @version 0.1 // ==/SiteScript== function CravingSiteScript() { this._initialize(); } CravingSiteScript.prototype = { _xhr: null, _initialize: function() {}, _getXmlHttpRequest: function() { if ( this._xhr != null ) { return this._xhr; } var xhr = null; var these = [ function() { return new XMLHttpRequest(); } , function() { return new ActiveXObject( "Msxml2.XMLHTTP" ); } , function() { return new ActiveXObject( "Microsoft.XMLHTTP" ); } , function() { return new ActiveXObject( "Msxml2.XMLHTTP.4.0" ); } ]; for ( var i = 0, length = these.length; i < length; i++ ) { var func = these[ i ]; try { xhr = func(); break; } catch( e ) {} } this._xhr = xhr; return this._xhr; }, _load: function( url, data, method ) { var req = this._getXmlHttpRequest(); var mtd = ( method == null ) ? "GET" : "POST"; req.open( mtd, url, false ); if ( mtd == "POST" ) { req.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded" ); } req.send( data ); return req.responseText; }, getResponseText: function( url, data, method ) { return this._load( url, data, method ); }, getResponseJSON: function( url, data, method ) { var text = this._load( url, data, method ); return eval( "("+text+")" ); }, /// Math random: function( limit ) { return Math.floor( Math.random() * limit ); }, /// String decodeHtml: function( str ) { return str.replace( /&(quot|#0*34);/ig, "\"" ) .replace( /&(amp|#0*38);/ig, "&" ) .replace( /&(apos|#0*39);/ig, "'" ) .replace( /&(lt|#0*60);/ig, "<" ) .replace( /&(gt|#0*62);/ig, ">" ) .replace( /&(nbsp|#0*160);/ig, " " ) .replace( /&(frasl|#8260);/ig, "/" ); } } function isSiteUrl( url ) { if ( url.match( /http:\/\/(?:www\.)?add-anime\.(?:com|net)\/watch_video\.php(\?.+)/ ) && RegExp.$1.match( /[?&]v=[0-9A-Z]+/ ) ) return true; return false; } function getVideoDetail( url ) { if ( url.match( /http:\/\/(?:www\.)?add-anime\.(?:com|net)\/watch_video\.php(\?.+)/ ) && RegExp.$1.match( /[?&]v=([0-9A-Z]+)/ ) ) { var vid = RegExp.$1; } else { return null; } var craving = new CravingSiteScript(); var objHttp = craving._getXmlHttpRequest(); var arrS = url.split( "#" ); var pageurl = arrS[0]; var tab = arrS[1]; try { var text = craving.getResponseText( pageurl ); var status = objHttp.status; } catch( e ) { status = -1; } if ( !status || status < 0 ) return null; if ( status >= 500 ) {//set-cookie if ( !text ) return null; if ( text.match( /]*?name\s*=\s*("|')?act\2[^>]*)>/im ) && RegExp.$1.match( /\s+value\s*=\s*("|')(.*?)\1/i ) ) { var act = RegExp.$2; } if ( !act ) act = "jschl"; if ( text.match( /]*?name\s*=\s*("|')?jschl_vc\2[^>]*)>/im ) && RegExp.$1.match( /\s+value\s*=\s*("|')(.*?)\1/i ) ) { var jschl_vc = RegExp.$2; } if ( !jschl_vc ) return null; if ( text.match( /\ba\.val\(([-+*\d\s]+)\)\s*;/ ) ) { try { var aval = ( new Function( "return (" + RegExp.$1 + ");" ) )(); } catch( e ) { aval = undefined; } if ( typeof aval == "number" ) { if ( url.match( /:\/\/([^\/?]*)/ ) ) { var domain = RegExp.$1; var num = aval + domain.length; } } } if ( typeof num != "number" ) return null; var data = "act=" + act + "&jschl_vc=" + jschl_vc + "&jschl_answer=" + num; try { text = craving.getResponseText( pageurl, data, "POST" );//set-cookie status = objHttp.status; } catch( e ) { status = -1; } } if ( status != 200 ) return null; if ( !text ) return null; if ( text.match( /]*?property\s*=\s*("|')?og:title\2[^>]*)>/im ) && RegExp.$1.match( /\s+content\s*=\s*("|')(.*?)\1/i ) ) { var title = craving.decodeHtml( RegExp.$2 ); } if ( !title && text.match( /