|
@@ -54,6 +54,7 @@ common.form.isCheck=function(id,func){
|
|
|
common.form.serializeArray=function(id){
|
|
|
var serializeArray={};
|
|
|
var chromeArr = [];
|
|
|
+ var rangeChromeArr = [];
|
|
|
$("#"+id+" [name]").each(function(){
|
|
|
var name=$(this).prop("name");
|
|
|
var value=$(this).prop("value");
|
|
@@ -72,7 +73,16 @@ common.form.serializeArray=function(id){
|
|
|
value=value?value:"";
|
|
|
}
|
|
|
//组合有序的chrome
|
|
|
- if(name.includes("Chrome")){
|
|
|
+ if(name.includes("Range.Chrome")){//循环动作
|
|
|
+ var rangeChromeMap = {};
|
|
|
+ rangeChromeMap["action"] = name.replace("Range.Chrome.","");
|
|
|
+ rangeChromeMap["param"] = value
|
|
|
+ var selector_val = $(this).parents(".chrome-actions").find("[sel='"+name+".selector']").val();
|
|
|
+ if (selector_val) {
|
|
|
+ rangeChromeMap["selector"]= selector_val
|
|
|
+ }
|
|
|
+ rangeChromeArr.push(rangeChromeMap);
|
|
|
+ }else if (name.includes("Chrome")){//基础动作
|
|
|
var chromeMap = {};
|
|
|
chromeMap["action"] = name.replace("Chrome.","");
|
|
|
chromeMap["param"] = value
|
|
@@ -88,6 +98,9 @@ common.form.serializeArray=function(id){
|
|
|
if (chromeArr.length > 0){
|
|
|
serializeArray[id+".Chrome"] = JSON.stringify(chromeArr);
|
|
|
}
|
|
|
+ if (rangeChromeArr.length > 0){
|
|
|
+ serializeArray[id+".RangeChrome"] = JSON.stringify(rangeChromeArr);
|
|
|
+ }
|
|
|
return serializeArray
|
|
|
}
|
|
|
common.form.submit=function(){}
|
|
@@ -162,25 +175,61 @@ common.spider.initMirror=function() {
|
|
|
window.alert("非chrome爬虫,禁止使用chrome下载方法");
|
|
|
return
|
|
|
}
|
|
|
+ var regex = /{([^}]*)}/g;
|
|
|
var str_tab = "\t".repeat(cm.getCursor().ch);
|
|
|
var data = common.form.serializeArray("Step2");
|
|
|
- var chromeActionsStr = data["Step2.Chrome"];
|
|
|
- var luaText = `local timeout = 60\n${str_tab}local chromeTask = [[\n${str_tab}\t[\n${str_tab}\t\t`;
|
|
|
- if (chromeActionsStr){
|
|
|
- var chromeActionMapStr = chromeActionsStr.substring(1,chromeActionsStr.length - 1);
|
|
|
- var regex = /{([^}]*)}/g;
|
|
|
- var chromeActionsStrArr = chromeActionMapStr.match(regex);
|
|
|
- for (var i in chromeActionsStrArr){
|
|
|
- if (i == chromeActionsStrArr.length -1){
|
|
|
- luaText += chromeActionsStrArr[i]+`\n${str_tab}\t`;
|
|
|
+ var baseChromeActionsStr = data["Step2.Chrome"];
|
|
|
+ var luaText = `local timeout = 60\n${str_tab}local chromeTask = [[\n${str_tab}\t{\n${str_tab}\t\t`;
|
|
|
+ var baseText = ``;
|
|
|
+ var rangText = ``;
|
|
|
+ var timesText = ``;
|
|
|
+ if (baseChromeActionsStr){
|
|
|
+ var rangeChromeActionsStr = data["Step2.RangeChrome"];
|
|
|
+ var rangeTimes = data["Step2.RangeTimes"];
|
|
|
+ if(rangeChromeActionsStr) {
|
|
|
+ if(!rangeTimes){
|
|
|
+ window.alert("未设置循环动作执行次数");
|
|
|
+ return;
|
|
|
+ }else{
|
|
|
+ timesText = `${str_tab}"range-times":`+rangeTimes+`,\n${str_tab}${str_tab}`
|
|
|
+ }
|
|
|
+ //循环动作
|
|
|
+ var rangeChromeActionMapStr = rangeChromeActionsStr.substring(1,rangeChromeActionsStr.length - 1);
|
|
|
+ var rangeChromeActionsStrArr = rangeChromeActionMapStr.match(regex);
|
|
|
+ for (var i in rangeChromeActionsStrArr){
|
|
|
+ if (i == rangeChromeActionsStrArr.length -1){
|
|
|
+ rangText += rangeChromeActionsStrArr[i]+`\n${str_tab}\t`;
|
|
|
+ }else{
|
|
|
+ rangText += rangeChromeActionsStrArr[i]+`,\n${str_tab}\t\t\t`;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ rangText = `"range-actions":[\n${str_tab}${str_tab}\t`+rangText+`\t]\n${str_tab}`
|
|
|
+ }
|
|
|
+ //基础动作
|
|
|
+ var baseChromeActionMapStr = baseChromeActionsStr.substring(1,baseChromeActionsStr.length - 1);
|
|
|
+ var baseChromeActionsStrArr = baseChromeActionMapStr.match(regex);
|
|
|
+ for (var i in baseChromeActionsStrArr){
|
|
|
+ var baseActionText = baseChromeActionsStrArr[i];
|
|
|
+ if (baseActionText.includes("navigate")){
|
|
|
+ baseActionText = `{"action":"navigate","param":"]]..href..[["}`
|
|
|
+ }
|
|
|
+ if (i == baseChromeActionsStrArr.length -1){
|
|
|
+ baseText += baseActionText+`\n${str_tab}\t`;
|
|
|
}else{
|
|
|
- luaText += chromeActionsStrArr[i]+`,\n${str_tab}\t\t`;
|
|
|
+ baseText += baseActionText+`,\n${str_tab}\t\t\t`;
|
|
|
}
|
|
|
}
|
|
|
+ if(rangText){
|
|
|
+ baseText = `"base-actions":[\n${str_tab}${str_tab}\t`+baseText+`\t],\n${str_tab}`
|
|
|
+ }else{
|
|
|
+ baseText = `"base-actions":[\n${str_tab}${str_tab}\t`+baseText+`\t]\n${str_tab}`
|
|
|
+ }
|
|
|
}else{
|
|
|
- luaText += `添加执行动作\n${str_tab}\t`;
|
|
|
+ //luaText += `添加基础执行动作\n${str_tab}\t`;
|
|
|
+ window.alert("未设置基础循环动作");
|
|
|
+ return;
|
|
|
}
|
|
|
- luaText += `]\n${str_tab}]]\n${str_tab}local contenthtml = downloadByChrome(timeout,chromeTask)`
|
|
|
+ luaText += baseText + timesText + rangText + `\t}\n${str_tab}]]\n${str_tab}local contenthtmltable = downloadByChrome(timeout,chromeTask)`
|
|
|
cm.replaceSelection(luaText);
|
|
|
},
|
|
|
"Esc": function(cm) {
|
|
@@ -218,26 +267,63 @@ common.spider.initMirror=function() {
|
|
|
window.alert("非chrome爬虫,禁止使用chrome下载方法");
|
|
|
return
|
|
|
}
|
|
|
+ var regex = /{([^}]*)}/g;
|
|
|
var str_tab = "\t".repeat(cm.getCursor().ch);
|
|
|
var data = common.form.serializeArray("Step3");
|
|
|
- var chromeActionsStr = data["Step3.Chrome"];
|
|
|
- var luaText = `local timeout = 60\n${str_tab}local chromeTask = [[\n${str_tab}\t[\n${str_tab}\t\t`;
|
|
|
- if (chromeActionsStr){
|
|
|
- var chromeActionMapStr = chromeActionsStr.substring(1,chromeActionsStr.length - 1);
|
|
|
- var regex = /{([^}]*)}/g;
|
|
|
- var chromeActionsStrArr = chromeActionMapStr.match(regex);
|
|
|
- for (var i in chromeActionsStrArr){
|
|
|
- if (i == chromeActionsStrArr.length -1){
|
|
|
- luaText += chromeActionsStrArr[i]+`\n${str_tab}\t`;
|
|
|
+ var baseChromeActionsStr = data["Step3.Chrome"];
|
|
|
+ var luaText = `local timeout = 60\n${str_tab}local chromeTask = [[\n${str_tab}\t{\n${str_tab}\t\t`;
|
|
|
+ var baseText = ``;
|
|
|
+ var rangText = ``;
|
|
|
+ var timesText = ``;
|
|
|
+ if (baseChromeActionsStr){
|
|
|
+ var rangeChromeActionsStr = data["Step3.RangeChrome"];
|
|
|
+ var rangeTimes = data["Step3.RangeTimes"];
|
|
|
+ if(rangeChromeActionsStr) {
|
|
|
+ if(!rangeTimes){
|
|
|
+ window.alert("未设置循环动作执行次数");
|
|
|
+ return;
|
|
|
+ }else{
|
|
|
+ timesText = `${str_tab}"range-times":`+rangeTimes+`,\n${str_tab}${str_tab}`
|
|
|
+ }
|
|
|
+ //循环动作
|
|
|
+ var rangeChromeActionMapStr = rangeChromeActionsStr.substring(1,rangeChromeActionsStr.length - 1);
|
|
|
+ var rangeChromeActionsStrArr = rangeChromeActionMapStr.match(regex);
|
|
|
+ for (var i in rangeChromeActionsStrArr){
|
|
|
+ if (i == rangeChromeActionsStrArr.length -1){
|
|
|
+ rangText += rangeChromeActionsStrArr[i]+`\n${str_tab}\t`;
|
|
|
+ }else{
|
|
|
+ rangText += rangeChromeActionsStrArr[i]+`,\n${str_tab}\t\t\t`;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ rangText = `"range-actions":[\n${str_tab}${str_tab}\t`+rangText+`\t]\n${str_tab}`
|
|
|
+ }
|
|
|
+ //基础动作
|
|
|
+ var baseChromeActionMapStr = baseChromeActionsStr.substring(1,baseChromeActionsStr.length - 1);
|
|
|
+ var baseChromeActionsStrArr = baseChromeActionMapStr.match(regex);
|
|
|
+ for (var i in baseChromeActionsStrArr){
|
|
|
+ var baseActionText = baseChromeActionsStrArr[i];
|
|
|
+ if (baseActionText.includes("navigate")){
|
|
|
+ baseActionText = `{"action":"navigate","param":"]]..data["href"]..[["}`
|
|
|
+ }
|
|
|
+ if (i == baseChromeActionsStrArr.length -1){
|
|
|
+ baseText += baseActionText+`\n${str_tab}\t`;
|
|
|
}else{
|
|
|
- luaText += chromeActionsStrArr[i]+`,\n${str_tab}\t\t`;
|
|
|
+ baseText += baseActionText+`,\n${str_tab}\t\t\t`;
|
|
|
}
|
|
|
}
|
|
|
+ if(rangText){
|
|
|
+ baseText = `"base-actions":[\n${str_tab}${str_tab}\t`+baseText+`\t],\n${str_tab}`
|
|
|
+ }else{
|
|
|
+ baseText = `"base-actions":[\n${str_tab}${str_tab}\t`+baseText+`\t]\n${str_tab}`
|
|
|
+ }
|
|
|
}else{
|
|
|
- luaText += `添加执行动作\n${str_tab}\t`;
|
|
|
+ //luaText += `添加基础执行动作\n${str_tab}\t`;
|
|
|
+ window.alert("未设置基础循环动作");
|
|
|
+ return;
|
|
|
}
|
|
|
- luaText += `]\n${str_tab}]]\n${str_tab}local contenthtml = downloadByChrome(timeout,chromeTask)`
|
|
|
+ luaText += baseText + timesText + rangText + `\t}\n${str_tab}]]\n${str_tab}local contenthtmltable = downloadByChrome(timeout,chromeTask)`
|
|
|
cm.replaceSelection(luaText);
|
|
|
+
|
|
|
},
|
|
|
"Esc": function(cm) {
|
|
|
if (cm.getOption("fullScreen")) cm.setOption("fullScreen", false);
|