+ Mitsugu Oyama
+ MIT
+
+
+ You can save image from pixiv by this plugin.
+
+ -
+ 'pixiv'
+ :pixiv
+
+
You can save image from pixiv by this plugin.
+ You must login pixiv.
+
+
+;
+
+commands.addUserCommand(
+ ['pixiv'],
+ 'Save Image File from pixiv',
+ function(){
+ let contents=gBrowser.selectedBrowser.contentDocument;
+ if(contents.domain!="www.pixiv.net"){
+ liberator.echoerr('This page is not pixiv.');
+ return false;
+ }
+ if(contents.URL.search(/medium&illust_id=/i)==-1){
+ liberator.echoerr("This page is not pixiv's image page.");
+ return false;
+ }
+
+ let Cc=Components.classes;
+ let Ci=Components.interfaces;
+ const baseInfo="http://www.pixiv.net/member_illust.php?mode=big&illust_id=";
+ let id=contents.URL.substr(contents.URL.lastIndexOf('=')+1);
+ let cookie=contents.cookie;
+
+ 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 savePath=directoryPicker();
+ if(savePath.length<1) return;
+
+ let getDOMHtmlDocument=function(str){
+ let doc;
+ let range;
+ try{
+ if(document.implementation.createHTMLDocument){
+ doc=document.implementation.createHTMLDocument('');
+ range=doc.createRange();
+ range.selectNodeContents(doc.documentElement);
+ range.deleteContents();
+ doc.documentElement.appendChild(range.createContextualFragment(str));
+ }else{
+ doc=document.implementation.createDocument(null,'html',null);
+ range=document.createRange();
+ range.selectNodeContents(document.documentElement);
+ let content=doc.adoptNode(range.createContextualFragment(str));
+ doc.documentElement.appendChild(content);
+ }
+ }catch(e){
+ doc=null;
+ }
+ return doc;
+ };
+
+ let getImageUrl=function(pageContents){
+ let url;
+ let htmldoc=getDOMHtmlDocument(pageContents);
+ if(htmldoc){
+ if(0