diff options
-rw-r--r-- | _libly.js | 2 | ||||
-rw-r--r-- | pixiv.js | 81 | ||||
-rw-r--r-- | simg.js | 80 |
3 files changed, 78 insertions, 85 deletions
@@ -245,7 +245,7 @@ libly.$U = {//{{{ let pluginPath; Error('hoge').stack.split(/\n/).some( function (s) - let (m = s.match(/^(?:\(\))?@chrome:\/\/liberator\/content\/liberator\.js -> (.+):\d+$/)) + let (m = s.match(/-> liberator:\/\/template\/chrome:\/\/liberator\/content\/liberator\.js -> (.+):\d+$/)) (m && (pluginPath = m[1].replace(/\?.*$/, ''))) ); return pluginPath; @@ -43,6 +43,12 @@ commands.addUserCommand( let cookie=contents.cookie; // }}} + let fp; + let url; + let type; + let saveDirectory; + let xhrImgInfo; + // {{{ convert to DOM Document from text let getDOMHtmlDocument=function(str){ let doc; @@ -163,21 +169,6 @@ commands.addUserCommand( },false); // }}} -// {{{ directory picker - let directoryPicker=function() { - let path; - let fp=Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker); - fp.init(window,'Select Directory',Ci.nsIFilePicker.modeGetFolder); - let result=fp.show(); - if(result==Ci.nsIFilePicker.returnOK){ - return fp.file; - } - return null; - }; - let saveDirectory=directoryPicker(); - if(saveDirectory==null) return false; -// }}} - // {{{ send request save image let saveImage=function(imgUrl,savePath,referer,cookie){ let objMessage={ @@ -282,19 +273,7 @@ commands.addUserCommand( }; // }}} -// {{{ first XMLHttpRequest - let url; - let type=contents.getElementsByClassName('works_display') - .item(0).firstChild.getAttribute('href'); - if(-1!=type.search(/big&illust_id=/i)){ - url=contents.documentURI.replace('medium','big'); - }else if(-1!=type.search(/manga&illust_id=/i)){ - url=contents.documentURI.replace('medium','manga')+'&type=scroll'; - }else{ - liberator.echoerr("This page is not image page and not manga page."); - return false; - } - +// {{{ trueImgINfo let trueImgInfo=function(){ if(-1!=type.search(/big&illust_id=/i)){ saveImageFile(); @@ -305,23 +284,49 @@ commands.addUserCommand( return false; } }; +// }}} +// {{{ falseImgInfo let falseImgInfo=function(){ liberator.echo("Image Infomation page accept error."); return false; }; +// }}} - let xhrImgInfo; - xhrImgInfo=Cc["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance(); - xhrImgInfo.QueryInterface(Ci.nsIDOMEventTarget); - xhrImgInfo.addEventListener("load",trueImgInfo,false); - xhrImgInfo.addEventListener("error",falseImgInfo,false); - xhrImgInfo.QueryInterface(Ci.nsIXMLHttpRequest); - xhrImgInfo.open("GET",url,true); - xhrImgInfo.setRequestHeader('Referer',contents.URL); - xhrImgInfo.setRequestHeader('Cookie',cookie); - xhrImgInfo.send(null); +// {{{ fpCallback + let fpCallback = { + done : function (aResult) { + if ( aResult == fp.returnOK ) { + saveDirectory = fp.file; + xhrImgInfo = Cc["@mozilla.org/xmlextras/xmlhttprequest;1"] + .createInstance(); + xhrImgInfo.QueryInterface( Ci.nsIDOMEventTarget ); + xhrImgInfo.addEventListener( "load", trueImgInfo, false ); + xhrImgInfo.addEventListener( "error", falseImgInfo, false ); + xhrImgInfo.QueryInterface( Ci.nsIXMLHttpRequest ); + xhrImgInfo.open( "GET", url, true); + xhrImgInfo.setRequestHeader( 'Referer', contents.URL ); + xhrImgInfo.setRequestHeader( 'Cookie', cookie ); + xhrImgInfo.send( null ); + } + } + }; // }}} + + type = contents.getElementsByClassName('works_display') + .item(0).firstChild.getAttribute('href'); + if(-1!=type.search(/big&illust_id=/i)){ + url=contents.documentURI.replace('medium','big'); + }else if(-1!=type.search(/manga&illust_id=/i)){ + url=contents.documentURI.replace('medium','manga')+'&type=scroll'; + }else{ + liberator.echoerr("This page is not image page and not manga page."); + return false; + } + + fp = Cc["@mozilla.org/filepicker;1"].createInstance( Ci.nsIFilePicker ); + fp.init( window, 'Select Directory', fp.modeGetFolder ); + let result=fp.open( fpCallback ); }, {}, true @@ -28,33 +28,12 @@ commands.addUserCommand( let Ci=Components.interfaces; let cookie=contents.cookie; let xhrImg; - - let directoryPicker=function() { - let path; - let fp=Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker); - fp.init(window,'Select Directory',Ci.nsIFilePicker.modeGetFolder); - let result=fp.show(); - switch(result){ - case Ci.nsIFilePicker.returnOK: - path=fp.file.path; - break; - default: - case Ci.nsIFilePicker.returnCancel: - return ''; - } - return path; - }; - - let saveDirectory=directoryPicker(); - if(saveDirectory.length<1){ - delete saveDirectory; - delete cookie; - delete contents; - return; - } + let fp; let imgURL=contents.URL; let savePath; + let saveDirectory; +// {{{ trueCurrnetImg let trueCurrntImg=function(){ let fileName=imgURL.substr(imgURL.lastIndexOf('/')); if (-1!=fileName.indexOf('?')){ @@ -90,32 +69,41 @@ commands.addUserCommand( }else{ outstream.close(); } - delete instream; - delete outstream; - delete imgURL; - delete saveDirectory; - delete cookie; - delete contents; }; +// }}} + +// {{{ falseCurrnetImg let falseCurrntImg=function(){ liberator.echo("Image file accept error."); - delete imgURL; - delete saveDirectory; - delete cookie; - delete contents; return false; }; +// }}} + +// {{{ fpCallback + let fpCallback = { + done : function (aResult) { + if ( aResult == fp.returnOK ) { + saveDirectory = fp.file.path; + xhrImg=Cc["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance(); + xhrImg.QueryInterface(Ci.nsIDOMEventTarget); + xhrImg.addEventListener("load",trueCurrntImg,false); + xhrImg.addEventListener("error",falseCurrntImg,false); + xhrImg.QueryInterface(Ci.nsIXMLHttpRequest); + xhrImg.open("GET",imgURL,true); + xhrImg.overrideMimeType('text/plain;charset=x-user-defined'); + xhrImg.setRequestHeader('Referer',contents.URL); + xhrImg.setRequestHeader('Cookie',cookie); + xhrImg.send(null); + } + } + }; +// }}} + + fp = Cc["@mozilla.org/filepicker;1"].createInstance( Ci.nsIFilePicker ); + fp.init( window, 'Select Directory', fp.modeGetFolder ); + fp.open( fpCallback ); + }, + {}, + true - xhrImg=Cc["@mozilla.org/xmlextras/xmlhttprequest;1"] - .createInstance(); - xhrImg.QueryInterface(Ci.nsIDOMEventTarget); - xhrImg.addEventListener("load",trueCurrntImg,false); - xhrImg.addEventListener("error",falseCurrntImg,false); - xhrImg.QueryInterface(Ci.nsIXMLHttpRequest); - xhrImg.open("GET",imgURL,true); - xhrImg.overrideMimeType('text/plain;charset=x-user-defined'); - xhrImg.setRequestHeader('Referer',contents.URL); - xhrImg.setRequestHeader('Cookie',cookie); - xhrImg.send(null); - } ); |