]*?id\\s*=\\s*(\"|')?" + objRef.id + "\\1[^>]*>", "im" );
if ( !objReg.test( objRef.text ) ) return false;
var div = RegExp.lastMatch;
var next = RegExp.rightContext;
var objReg1 = /
]*)?>/ig;
var objReg2 = /<\/div\s*>/ig;
var close = 0;
var success = false;
while( objReg2.test( next ) ) {
var left = RegExp.leftContext;
var open = 0;
while ( objReg1.test( left ) ) {
if ( RegExp.$1.match( /\/$/ ) ) continue;
open++;
}
if ( open === close ) {
objRet.inner = left;
objRet.outer = div + left + "
";
success = true;
break;
}
close++;
}
return success;
}
function parseRet( strRet, min, max, add ){
//input box 入力文字列を処理します。
//return : array
if ( !strRet ) return null;
var arrS = strRet.split( "," );
var arrR = new Array();
jump:
for ( var i = 0; i < arrS.length; i++ ){
if ( arrS[ i ].match( /\d+/ ) ) var num = parseInt( RegExp.lastMatch ) - add;
else continue;
if ( min > num || max <= num ) continue;
for ( var j = 0; j < arrR.length; j++ )
if ( arrR[ j ] == num ) continue jump;
arrR.push( num );
}
if ( arrR.length <= 0 ) return null;
return arrR;
}
function clsInputBox(){
//VBScript InputBox
this.isOK = false;
this._objSC = null;
this._initialize = function (){
try {
this._objSC = new ActiveXObject( "ScriptControl" );
this._objSC.Language = "VBScript";
this._objSC.AddCode( "Function VB_IB(p, t, d) : VB_IB = InputBox(p, t, d) : End Function" );
this.isOK = true;
} catch(e) {
this.isOK = false;
}
}
this._initialize();
this.InputBox = function (msg, title, def){
if ( this.isOK ){
return this._objSC.Run( "VB_IB", msg, title, def);
}
}
}
function clsMsgBox(){
//WScript.Shell Popup
this.isOK = false;
this._objShell = null;
this._initialize = function (){
try{
this._objShell = new ActiveXObject( "WScript.Shell" );
this.isOK = true;
} catch( e ) {
this.isOK = false;
}
}
this._initialize();
this.MsgBox = function ( msg, title, btn ){
if ( btn == undefined ) btn = 1;
//btn=1の時ret: OK:1, キャンセル:2
if ( this.isOK )
return this._objShell.Popup( msg, 0, title, btn+64 );
}
}
function setType( obj ) {
if ( !obj || typeof obj != "object" ) return false;
if ( !obj.src || typeof obj.src != "string" ) return false;
if ( !obj.domain && obj.src.match( /:\/\/([^\/?]+)(?::\d+)?\// ) ) {
obj.domain = RegExp.$1;
}
if ( !obj.domain ) return false;
if ( obj.domain.match( /(?:.+\.)?videofun\.me$/ ) ) {
obj.type = "videofunme";
obj.func = getRealUrl_videofunme;
} else if ( obj.domain.match( /(?:.+\.)?video44\.net$/ ) ) {
obj.type = "video44net";
obj.func = getRealUrl_play44;
} else if ( obj.domain.match( /(?:.+\.)?novamov\.com$/ ) ) {
obj.type = "novamovcom";
obj.script = "novamov.site.js";
} else if ( obj.domain.match( /(?:.+\.)?vidzur\.com$/ ) ) {
obj.type = "vidzurcom";
obj.func = getRealUrl_videofunme;
} else if ( obj.domain.match( /(?:.+\.)?videoweed\.es$/ ) ) {
obj.type = "videoweedes";
obj.script = "videoweed.site.js";
} else if ( obj.domain.match( /(?:.+\.)?yourupload\.com$/ ) ) {
obj.type = "youruploadcom";
obj.script = "youruploadcom.site.js";
} else if ( obj.domain.match( /(?:.+\.)?videobug\.net$/ ) ) {
obj.type = "videobugnet";
obj.func = getRealUrl_play44;
} else if ( obj.domain.match( /(?:.+\.)?play44\.net$/ ) ) {
obj.type = "play44net";
obj.func = getRealUrl_play44;
} else if ( obj.domain.match( /(?:.+\.)?byzoo\.org$/ ) ) {
obj.type = "byzooorg";
obj.func = getRealUrl_gogoanime;
} else if ( obj.domain.match( /(?:.+\.)?playpanda\.net$/ ) ) {
obj.type = "playpandanet";
obj.func = getRealUrl_play44;
} else if ( obj.domain.match( /(?:.+\.)?yucache\.net$/ ) ) {
obj.type = "yucachenet";
obj.script = "yucachenet.site.js";
} else if ( obj.domain.match( /(?:.+\.)?videowing\.me$/ ) ) {
obj.type = "videowingme";
obj.func = getRealUrl_gogoanime;
} else if ( obj.domain.match( /(?:.+\.)?playbb\.me$/ ) ) {
obj.type = "playbbme";
obj.func = getRealUrl_gogoanime;
} else if ( obj.domain.match( /(?:.+\.)?easyvideo\.me$/ ) ) {
obj.type = "easyvideome";
obj.func = getRealUrl_gogoanime;
} else if ( obj.domain.match( /(?:.+\.)?video66\.org$/ ) ) {
obj.type = "video66org";
obj.func = getRealUrl_gogoanime;
} else if ( obj.domain.match( /(?:.+\.)?videozoo\.me$/ ) ) {
obj.type = "videozoome";
obj.func = getRealUrl_gogoanime;
} else if ( obj.domain.match( /(?:.+\.)?gump\.oose\.io$/ ) ) {
obj.type = "gumpooseio";
obj.func = getRealUrl_gumpooseio;
obj.header = "Referer: http://gump.oose.io/jwplayer/jwplayer.flash.swf";
} else if ( obj.domain.match( /(?:.+\.)?gogoanime\.(to|com)$/ ) ) {
obj.type = "gogoanime";
obj.func = getRealUrl_gogoanime;
} else {
obj.type = "unknown";
}
return true;
}
function getRealUrl_videofunme( url, craving ) {
try {
var text = craving.getResponseText( url );
} catch( e ) {
text = "";
}
if ( !text ) return "";
if ( text.match( /[{,]\s*("|')?playlist\1\s*:\s*\[([\s\S]*?)\]\s*[},]/m ) ) {
var playlist = RegExp.$2;
}
if ( !playlist ) return "";
var objReg = /[{,]\s*("|')?url\1\s*:\s*("|')(.*?)\2\s*[},]/gm;
var arrDat = [];
while ( objReg.test( playlist ) ) {
var url0 = decodeURIComponent( RegExp.$3 );
if ( !url0 ) continue;
var obj = {};
obj.url = url0;
var url1 = url0.split( /[?]/ )[0];
obj.ext = url1.match( /\.([^/]+)$/ )? RegExp.$1: "";
obj.extP = obj.ext.match( /flv|mp4|m4v/i )? 1: 0;
arrDat.push( obj );
}
if ( arrDat.length <= 0 ) return "";
arrDat.reverse();
arrDat.sort( function(a,b){return b.extP-a.extP;} );
return arrDat[0].url;
}
function getRealUrl_play44( url, craving ) {
try {
var text = craving.getResponseText( url );
} catch( e ) {
text = "";
}
if ( !text ) return "";
var realUrl = "";
var defurl = "";
if ( text.match( /\b_url\s*=\s*("|')(.*?)\1\s*;/ ) ) {
defurl = decodeURIComponent( RegExp.$2 );
if ( defurl ) {
defurl = Rel2Abs( url, defurl );
if ( chkLnk( defurl ) ) {
realUrl = defurl;
}
}
}
if ( !realUrl ) {
var objReg = /eval\s*(\(\s*function\s*\(\s*p\s*,\s*a\s*,\s*c\s*,\s*k\s*,\s*e\s*,\s*d\s*\)\s*\{[\s\S]*?\.split\s*\(\s*('|")\|\2\s*\)\s*,[^,]*,[^,)]*\)\s*\))/gm;
while ( objReg.test( text ) ) {
var oldurl = "";
var tmp = RegExp.$1;
tmp = tmp.replace( /(ActiveXObject|WScript|CScript)/g, "" );
var str = "";
try {
str = ( new Function( "var a=" + tmp + ";return a;" ) )();
} catch ( e ) {
str = null;
}
if ( !str || typeof str != "string" ) continue;
if ( str.match( /\$f\(\)\.addClip\(\s*(\{[^}]*\})/m )
&& RegExp.$1.match( /[{,]\s*("|')?url\1\s*:\s*("|')(.*?)\2\s*[,}]/m )
&& RegExp.$3 ) {
oldurl = RegExp.$3;
}
if ( oldurl ) {
realUrl = oldurl;
break;
}
}
}
return realUrl;
}
function getRealUrl_gumpooseio( url, craving ) {
try {
var text = craving.getResponseText( url );
} catch( e ) {
text = "";
}
if ( !text ) return "";
if ( text.match( /jwplayer\s*\([^)]*\)\.setup\((\s*\{[\s\S]*?\}\s*)\)/im ) ) {
var stup = RegExp.$1.replace( /("|')?logo\1\s*:\s*\{[^}]*\}/, "" );
if ( stup.match( /[,{]\s*("|')?file\1\s*:\s*("|')(.*?)\2\s*[,}]/m ) ) {
var realUrl = RegExp.$3;
}
if ( !realUrl &&
stup.match( /\{\s*("|')?type\1\s*:\s*("|')html5\2\s*,\s*("|')?config\3\s*:\s*\{\s*("|')?file\4\s*:\s*('|")(.*?)\5/ ) ) {
realUrl = RegExp.$6;
}
}
if ( !realUrl ) return "";
return realUrl;
}
function clsIncludeSiteScript() {
var code1 = "(function(){\n\n";
var code2 = "\n\nreturn {'isSiteUrl':isSiteUrl,'getVideoDetail':getVideoDetail};})()";
var cePath = "\\CravingExplorer\\site-script\\";
this.isOK = false;
//initialize
try {
var appPath = ( new ActiveXObject( "WScript.Shell" ) ).SpecialFolders( "AppData" );
this.isOK = true;
} catch( e ) {
appPath = "";
this.isOK = false;
}
function evalScript( strFullPath, strCharset ) {
try {
var objStream = new ActiveXObject( "ADODB.Stream" );
objStream.Charset = strCharset;
objStream.Open();
objStream.LoadFromFile( strFullPath );
var obj = eval( "(" + code1 + objStream.ReadText() + code2 + ")" );
objStream.Close();
} catch( e ) {
obj = null;
}
if ( !obj || typeof obj != "object" ) return null;
if ( typeof obj.isSiteUrl != "function" ) return null;
if ( typeof obj.getVideoDetail != "function" ) return null;
return obj;
}
this.includeSiteScript = function ( strFileName ) {
if ( !this.isOK ) return null;
var strFullPath = appPath + cePath + strFileName;
var objS = evalScript( strFullPath, "unicode" );
if ( !objS ) objS = evalScript( strFullPath, "utf-8" );
return objS;
};
}
function Rel2Abs( strPageurl, strRelurl ) {
//2014/09/18 version 0.2
if ( strRelurl.split( /[?]/ )[0].match( /(\w+?):\/\/([^\/]+)(\/.*)?/ ) ) {
return strRelurl;
}
if ( strPageurl.split( /[?]/ )[0].match( /(\w+?):\/\/([^\/]+)(?:\/(.*))?/ ) ) {
var protocol = RegExp.$1;
var domain = RegExp.$2;
var path = RegExp.$3;
}
if ( !protocol ) protocol = "http";
if ( !domain ) domain = "";
if ( !path ) path = "";
var base = protocol + "://" + domain;
if ( strRelurl.match( /^\/\// ) ) {
var absurl = protocol + ":" + strRelurl;
} else if ( strRelurl.match( /^\// ) ) {
absurl = base + strRelurl;
} else {
var pathz = path.split( "/" );
pathz.pop();
if ( strRelurl.match( /^((\.\.\/|\.\/)+)(.+)?/ ) ) {
var dotp = RegExp.$1;
var relpath = RegExp.$3;
var objReg = /\.\.\//g;
while ( objReg.test( dotp ) ) pathz.pop();
} else {
relpath = strRelurl;
}
if ( pathz.length <= 0 ) var abspath = "/";
else abspath = "/" + pathz.join( "/" ) + "/";
absurl = base + abspath + relpath;
}
return absurl;
}
function chkLnk( url ) {
var status = -1;
try {
var objHttp = new ActiveXObject( "WinHttp.WinHttpRequest.5.1" );
objHttp.open( "HEAD", url, false );
objHttp.send();
status = objHttp.status;
} catch ( e ) {
status = -1;
}
if ( 200 <= status && status < 300 ) return true;
else return false;
}
function chkRedirect( url ) {
var rdurl = "";
try {
var objHttp = new ActiveXObject( "WinHttp.WinHttpRequest.5.1" );
objHttp.option(12) = true;
objHttp.open( "HEAD", url, false );
objHttp.send();
rdurl = objHttp.option(1);
} catch ( e ) {
rdurl = "";
}
if ( rdurl ) return rdurl;
else return url;
}
function getText( url, craving ) {
var objRef = { "text":"" };
try {
objRef.text = craving.getResponseText( url );
} catch ( e ) {
var errnum = e.number & 0xffff;
objRef.text = "";
}
if ( errnum == 5 ) {
var rdurl = chkRedirect( url );
if ( url != rdurl ) {
url = rdurl;
try {
objRef.text = craving.getResponseText( url );
} catch ( e ) {
objRef.text = "";
}
}
}
return objRef;
}
function getRealUrl_gogoanime( url, craving ) {
var objRef = getText( url, craving );
var realUrl = getRealUrl_gogoanime_sub( objRef );
return realUrl;
}
function getRealUrl_gogoanime_sub( objRef ) {
if ( !objRef || typeof objRef != "object" ) return "";
if ( !objRef.text || typeof objRef.text != "string" ) return "";
if ( !objRef.text.match( /var\s+video_links\s*=\s*\{[\s\S]*?\}\s*;/m ) ) return "";
try {
var video_links = ( new Function(RegExp.lastMatch + "return video_links;") )();
} catch ( e ) {
video_links = null;
}
if ( !video_links || typeof video_links != "object" ) return "";
var arrDat = [];
for ( var quality in video_links ) {
if ( !video_links[quality] || typeof video_links[quality] != "object" ) continue;
for ( var idx in video_links[quality] ) {
if ( !video_links[quality][idx] instanceof Array ) continue;
for ( var i = 0; i < video_links[quality][idx].length; i++ ) {
if ( !video_links[quality][idx][i] || typeof video_links[quality][idx][i] != "object" ) continue;
var obj = {};
obj.file = video_links[quality][idx][i]['link'];
if ( !obj.file || typeof obj.file != "string" ||
!obj.file.match( /\s*^http/ ) ) continue;
obj.label_n = quality=="normal"?480:720;
if ( idx == "storage" ) obj.label_n++;
arrDat.push( obj );
}
}
}
if ( arrDat.length <= 0 ) return "";
arrDat.sort( function(a,b){return b.label_n - a.label_n;} );
var realUrl = "";
for ( var i = 0; i < arrDat.length; i++ ) {
if ( chkLnk( arrDat[i].file ) ) {
realUrl = arrDat[i].file;
break;
}
}
return realUrl;
}