您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
批量找图脚本正式版,已经为批量下载做好了准备
// ==UserScript== // @name 批量找图脚本正式版 // @namespace https://greasyfork.org/users/14059 // @author setycyas // @homepage http://blog.sina.com.cn/u/1365265583 // @description 批量找图脚本正式版,已经为批量下载做好了准备 // @include http://www.uumt.cc/* // @include http://mm.xmeise.com/* // @include http://www.mm131.com/* // @include http://www.du114.com/* // @version 1.01 // @grant GM_registerMenuCommand // @grant GM_getValue // @grant GM_setValue // @require http://code.jquery.com/jquery-2.1.1.min.js // @run-at document-end // @license MIT // ==/UserScript== /**************************************** ######## version 20160130_01 ######### 脚本主要过程开始,根据图片站点不同,主要修改 global_picReg和global_numReg两个找图地址与 图总数的正则表达式.global_titleReg最好匹配 ,错了也能运行 ****************************************/ console.log("setycyas的批量找图脚本开始执行!"); //注册菜单 GM_registerMenuCommand('批量找图',mass_FindPic_Normal); GM_registerMenuCommand('批量找图自动保存',mass_FindPic_AutoSave); GM_registerMenuCommand('测试本页找图',_CurrentPageTest); //根据网站不同而修改的变量 var global_picReg //查找图片链接的正则表达式 var global_numReg //查找图片总数的正则表达式 var global_titleReg //查找标题的正则表达式 /******************************* 增加新网站支持就在这里!!!!记得 在开头的include也补上 ********************************/ if(window.location.href.match("www.uumt.cc")){ console.log("该页属于网站 www.uumt.cc"); global_picReg=/<div class="articleBody">\s{0,1}<p align="center">.*<img[^>]*src="([^>]*jpg)"/; global_numReg=/<ul><li><a>共(\d+)图:/; global_titleReg=/<div\s+class="articleTitle">\s+<h1>([^\(]*)/ } if(window.location.href.match("mm.xmeise.com")){ console.log("该页属于网站 mm.xmeise.com"); global_picReg=/<div id="big-pic">\s{0,10}.*<img[^>]*src="([^>]*jpg)"/; global_numReg=/<ul><a>共(\d+)页/; global_titleReg=/<title>([^<\(]*)[<\(]/ } if(window.location.href.match("www.mm131.com")){ console.log("该页属于网站 www.mm131.com"); global_picReg=/<div\sclass="content\-pic">s{0,10}[\s\S]{0,250}<img[^>]*src="([^>]+jpg)"/; global_numReg=/<span\sclass="page\-ch">共(\d+)页<\/span>/; global_titleReg=/<title>([^<\(]*)[<\(]/ } if(window.location.href.match("www.du114.com")){ console.log("该页属于网站 www.du114.com"); global_picReg=/<div[^>]*id="picBody">s{0,10}[\s\S]{0,450}<img[^>]*src="([^>]+jpg)"/; global_numReg=/<ul><li><a>共(\d+)页/; global_titleReg=/<title>([^<\(]*)[<\(]/ } /*此网站图太刺激,不明确提供支持 if(window.location.href.match("www.gaoxiaola")){ console.log("该页属于网站 www.gaoxiaola.com 或 www.gaoxiaola.net"); global_picReg=/src="([^>]*(gif|jpg|png))"\salt="/; global_numReg=/<b>\d+<\/b>\/<b>(\d+)<\/b>/; global_titleReg=/<title>([^<\(]*)[<\(]/ }*/ //开始主函数,一般显示模式 function mass_FindPic_Normal(){ //在当前页查找图集的图片总数,修改查找图片总数的方法就改这里的正则表达式 var mass_PicNum=_GetPicNum(document.getElementsByTagName("body")[0].innerHTML,global_numReg); if(mass_PicNum<0){ alert("在本页找不到图片总数信息"); return; } //开始查找,修改从网页中提取图片地址的方法,就改这里的正则表达式 FindSrcPic(window.location.href,global_picReg,mass_PicNum,global_titleReg,_finishNormal); } //开始主函数,自动保存模式 function mass_FindPic_AutoSave(){ //在当前页查找图集的图片总数,修改查找图片总数的方法就改这里的正则表达式 var mass_PicNum=_GetPicNum(document.getElementsByTagName("body")[0].innerHTML,global_numReg); if(mass_PicNum<0){ alert("在本页找不到图片总数信息"); return; } //开始查找,修改从网页中提取图片地址的方法,就改这里的正则表达式 FindSrcPic(window.location.href,global_picReg,mass_PicNum,global_titleReg,_finishAutoSave); alert("自动保存成功!标题是: "+_GetTitle(global_titleReg)+'('+mass_PicNum+')'); } /**************************************** ############ FindSrcPic_lib ################ ######## version = 20160130_02 ############ 批量找图代码库 主函数是FindSrcPic 给出例如uumt之类的图片站的图集首地址(形如http://*.html) 自动获取整个图集的所有图片地址并存放于_FindSrcPic_Result中 每次更新_FindSrcPic_Result都会刷新显示结果的文本框的文本 查找结束前,也可以通过立即显示结果菜单先看看找到的图片地址 如果有些请求没返回,会一直处于查找状态,只能刷新页面恢复 未查找状态了,这是目前的一个不足.但是只要参数正确一般没问题 ****************************************/ var _FindSrcPic_Result="" //存放找到的图片地址 var _FindSrcPic_ResponNum=0 //已返回或超时的响应数目 var _FindSrcPic_IsRunning=0 //是否运行中,0表示非运行中 var _FindSrcPic_Record="picSrcRecord" //记录已找到的图集链接的数据库名 //添加显示结果的显隐div var _FindSrcPic_maskDivHtml='<br/><b>交互消息框:</b><br/><br/><textarea id="_FindSrcPic_ResultTextArea"></textarea><br/>' _FindSrcPic_maskDivHtml+='<input type=button value=Save id="_FindSrcPic_Save"/> <input type=button value=ClearRecord id="_FindSrcPic_Clear"/>' _FindSrcPic_maskDivHtml+=' <input type=button value=ShowRecord id="_FindSrcPic_Show"/><br/>' AddMaskDiv("_FindSrcPic_ResultDiv",_FindSrcPic_maskDivHtml) $('#_FindSrcPic_ResultTextArea').css({'width':'70%','height':'70%'}); $('#_FindSrcPic_Save').click(function(){ var temp=GM_getValue(_FindSrcPic_Record, "") temp+=$('#_FindSrcPic_ResultTextArea').val() GM_setValue(_FindSrcPic_Record,temp) alert("成功将文本框内容加入到记录中!") }) $('#_FindSrcPic_Clear').click(function(){if(confirm("确定要清空记录吗?")) GM_setValue(_FindSrcPic_Record,"")}) $('#_FindSrcPic_Show').click(function(){$('#_FindSrcPic_ResultTextArea').val(GM_getValue(_FindSrcPic_Record, ""))}) //根据referURL地址(一般传入本页地址),尝试获取图集目录字符串 function _GetDir(referURL){ var temp3; temp3=referURL.match(/(.*)\/[^\/]*/) if(temp3){ return (temp3[1]+'/'); }else{ console.log("无法根据地址获取图集目录"); return "" } } //根据referURL地址(一般传入本页地址),获取图集页面类型,如果地址只有目录则默认为html function _GetPageType(referURL){ var temp0=referURL; if(temp0.substr(temp0.length-1,1)=="/"){ return 'html'; } if(temp0.substr(temp0.length-2,1)=="/"){ return 'html'; } var temp4; temp4=temp0.match(/.*\.([^\.#]*)#{0,1}$/); if(temp4){ return temp4[1]; }else{ console.log("无法根据地址获取页面类型"); return "" } } //根据referURL地址(一般传入本页地址),获取站点名称类型 function _GetWebName(referURL){ var temp0=referURL; var temp4; temp4=temp0.match(/http:\/\/([^\/]+)\//); if(temp4){ return temp4[1]; }else{ console.log("无法根据地址获取站点名称"); return "" } } //根据referURL地址(一般传入本页地址),尝试获取图集首文件名(不包括扩展名),地址只有目录时默认index function _GetStartFile(referURL){ var temp0=referURL; if(temp0.substr(temp0.length-1,1)=="/"){ return "index"; } if(temp0.substr(temp0.length-2,1)=="/"){ return "index"; } temp4=temp0.match(/([^\/_]+)[\._][^\/]*$/); if(temp4){ return temp4[1]; }else{ console.log("无法根据地址获取首文件名"); return "" } } //从bodyHTML中,通过picNumReg正则表达式找到图片总数,返回-1表示找不到 function _GetPicNum(bodyHTML,picNumReg){ var temp; if(temp=bodyHTML.match(picNumReg)){ return temp[1]-0; }else{ return -1; } } //从当前页的body的html中,通过titleReg正则表达式找到标题,返回空字符串表示找不到 function _GetTitle(titleReg){ var temp; if(temp=document.getElementsByTagName('html')[0].innerHTML.match(titleReg)){ return temp[1]; }else{ return ""; } } //找图主函数,referURL是传入的参考url,一般是本页地址,为了增加可重用性运行传参数.失败返回-1,成功返回0.但只要请求发送了就是成功,与回应无关 function FindSrcPic(referURL,picSrcReg,picNum,titleReg,onFinish){ //查看是否查找中 if(_FindSrcPic_IsRunning>0){ alert("上次寻找仍进行中,请不要急于重新查找,可尝试先看看已找到的结果"); return -1 } var pageType=_GetPageType(referURL) var startFile=_GetStartFile(referURL) var dir=_GetDir(referURL) var webName=_GetWebName(referURL) if(pageType==""){ alert("无法识别网页文件类型"); return -1 } if(startFile==""){ alert("无法判断首文件名"); return -1 } if(dir==""){ alert("无法判断图集目录"); return -1 } if(webName==""){ alert("无法获取站点名"); return -1 } //开始查找前初始化记录变量 var tempTitle=_GetTitle(titleReg) if(tempTitle==""){ var tempDate=new Date() _FindSrcPic_Result='['+tempDate.getTime()+'('+picNum+')'+']\n'; }else{ _FindSrcPic_Result='['+tempTitle+'('+picNum+')'+']\n' } _FindSrcPic_ResponNum=0; _FindSrcPic_IsRunning=1; $('#_FindSrcPic_ResultTextArea').val(_FindSrcPic_Result); //开始遍历发送消息,获取图片链接.遍历地址的形式如需改变就改这里 console.log("开始批量发送请求"); for(var i=1;i<picNum+1;i++){ var picURL; if(i==1){ picURL=dir+startFile+"."+pageType }else{ picURL=dir+startFile+"_"+i+"."+pageType } $.get( picURL, {}, function(data) { _FindSrcPic_ResponNum++; var temp2=data.match(picSrcReg); if(temp2){ if(!temp2[1].match("http:")) temp2[1]="http://"+webName+temp2[1] _FindSrcPic_Result+=temp2[1]+"\n"; $('#_FindSrcPic_ResultTextArea').val(_FindSrcPic_Result); console.log("返回一个成功的请求,找到图片: "+temp2[1]); }else{ console.log("返回一个成功的请求,但找不到图片"); } console.log("目前已返回请求数/总请求数 ="+_FindSrcPic_ResponNum+"/"+picNum); if(_FindSrcPic_ResponNum==picNum){ onFinish() } } ).fail(function(XMLHttpRequest){ _FindSrcPic_ResponNum++; console.log("返回一个失败的请求"); console.log("目前已返回请求数/总请求数 ="+_FindSrcPic_ResponNum+"/"+picNum); if(_FindSrcPic_ResponNum==picNum){ onFinish() } }); console.log("已发送请求: "+picURL); } } //找图完结时,一般显示 function _finishNormal(){ $('#_FindSrcPic_ResultDiv').css({display:'block'}); _FindSrcPic_IsRunning=0; } //找图完结时,自动保存 function _finishAutoSave(){ var temp=GM_getValue(_FindSrcPic_Record, "") temp+=$('#_FindSrcPic_ResultTextArea').val() GM_setValue(_FindSrcPic_Record,temp) _FindSrcPic_IsRunning=0 } //测试本页的找图结果 function _CurrentPageTest(){ console.log('当前页面找图测试开始') console.log('获取图集图片总数= '+_GetPicNum(document.getElementsByTagName("body")[0].innerHTML,global_numReg)) console.log('获取图集标题= '+_GetTitle(global_titleReg)) var temp=document.getElementsByTagName("html")[0].innerHTML.match(global_picReg) if(temp){ console.log('获取图片地址= '+temp[1]); }else{ console.log('无法获取图片地址') } } /**************************************** ############ MaskDiv_lib ################ ####version = 20160129_01 ###### 显示覆盖原页面的上层div的库 主函数是AddMaskDiv,添加目标div 除了目标div外,内部html的css,绑定函数等需自行 另外处理 ****************************************/ //添加一个隐藏的层,maskDivId为该层的div的Id,maskDivInnerHTML为内部html //至于css则需要在外部添加.函数只管maskDiv的css,以及额外赠送的一个重新隐藏该层的按钮 //最后注册一个GM菜单用于显示该层 function AddMaskDiv(maskDivId,maskDivInnerHTML){ var htmlAppend='<div id=' + maskDivId +">"+maskDivInnerHTML+"<br/> <input type=button id="+maskDivId+"_return value=Return></input><br /></div>"; $('body').append(htmlAppend); $('#'+maskDivId).css({'position':'fixed','left':'10%','top':'10%','width':'70%','height':'70%','background-color':'#ffffff','z-index':'10001','display':'none','text-align':'center','border':'1px solid #00F'}); $('#'+maskDivId+'_return').click(function(){$('#'+maskDivId).css({display:'none'});}); GM_registerMenuCommand('显示'+maskDivId,function(){$('#'+maskDivId).css({display:'block'});}); }