naibo 2 лет назад
Родитель
Сommit
06304b2a96

+ 331 - 7
ElectronJS/package-lock.json

@@ -26,7 +26,7 @@
                 "@electron-forge/maker-rpm": "^6.0.5",
                 "@electron-forge/maker-squirrel": "^6.0.5",
                 "@electron-forge/maker-zip": "^6.0.5",
-                "electron": "^25.0.1"
+                "electron": "^20.0.1"
             }
         },
         "node_modules/@electron-forge/cli": {
@@ -1676,6 +1676,17 @@
                 "typedarray": "^0.0.6"
             }
         },
+        "node_modules/config-chain": {
+            "version": "1.1.13",
+            "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz",
+            "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==",
+            "dev": true,
+            "optional": true,
+            "dependencies": {
+                "ini": "^1.3.4",
+                "proto-list": "~1.2.1"
+            }
+        },
         "node_modules/console-control-strings": {
             "version": "1.1.0",
             "dev": true,
@@ -1966,6 +1977,12 @@
                 "minimatch": "^3.0.4"
             }
         },
+        "node_modules/duplexer3": {
+            "version": "0.1.5",
+            "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz",
+            "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==",
+            "dev": true
+        },
         "node_modules/eastasianwidth": {
             "version": "0.2.0",
             "dev": true,
@@ -1977,21 +1994,21 @@
             "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
         },
         "node_modules/electron": {
-            "version": "25.2.0",
-            "resolved": "https://registry.npmjs.org/electron/-/electron-25.2.0.tgz",
-            "integrity": "sha512-I/rhcW2sV2fyiveVSBr2N7v5ZiCtdGY0UiNCDZgk2fpSC+irQjbeh7JT2b4vWmJ2ogOXBjqesrN9XszTIG6DHg==",
+            "version": "20.3.12",
+            "resolved": "https://registry.npmjs.org/electron/-/electron-20.3.12.tgz",
+            "integrity": "sha512-CuCZKhwdSXaUNIoEuPVZ25YH18zmox3wEM8Acwcy9tlpD8Jiuq3ji3RZ98eVWJalrpqbdE9LtTD/sLC86GIkLg==",
             "dev": true,
             "hasInstallScript": true,
             "dependencies": {
-                "@electron/get": "^2.0.0",
-                "@types/node": "^18.11.18",
+                "@electron/get": "^1.14.1",
+                "@types/node": "^16.11.26",
                 "extract-zip": "^2.0.1"
             },
             "bin": {
                 "electron": "cli.js"
             },
             "engines": {
-                "node": ">= 12.20.55"
+                "node": ">= 10.17.0"
             }
         },
         "node_modules/electron-installer-common": {
@@ -2159,6 +2176,226 @@
                 "node": ">= 4.0.0"
             }
         },
+        "node_modules/electron/node_modules/@electron/get": {
+            "version": "1.14.1",
+            "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.14.1.tgz",
+            "integrity": "sha512-BrZYyL/6m0ZXz/lDxy/nlVhQz+WF+iPS6qXolEU8atw7h6v1aYkjwJZ63m+bJMBTxDE66X+r2tPS4a/8C82sZw==",
+            "dev": true,
+            "dependencies": {
+                "debug": "^4.1.1",
+                "env-paths": "^2.2.0",
+                "fs-extra": "^8.1.0",
+                "got": "^9.6.0",
+                "progress": "^2.0.3",
+                "semver": "^6.2.0",
+                "sumchecker": "^3.0.1"
+            },
+            "engines": {
+                "node": ">=8.6"
+            },
+            "optionalDependencies": {
+                "global-agent": "^3.0.0",
+                "global-tunnel-ng": "^2.7.1"
+            }
+        },
+        "node_modules/electron/node_modules/@sindresorhus/is": {
+            "version": "0.14.0",
+            "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz",
+            "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==",
+            "dev": true,
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/electron/node_modules/@szmarczak/http-timer": {
+            "version": "1.1.2",
+            "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz",
+            "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==",
+            "dev": true,
+            "dependencies": {
+                "defer-to-connect": "^1.0.1"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/electron/node_modules/@types/node": {
+            "version": "16.18.38",
+            "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.38.tgz",
+            "integrity": "sha512-6sfo1qTulpVbkxECP+AVrHV9OoJqhzCsfTNp5NIG+enM4HyM3HvZCO798WShIXBN0+QtDIcutJCjsVYnQP5rIQ==",
+            "dev": true
+        },
+        "node_modules/electron/node_modules/cacheable-request": {
+            "version": "6.1.0",
+            "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz",
+            "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==",
+            "dev": true,
+            "dependencies": {
+                "clone-response": "^1.0.2",
+                "get-stream": "^5.1.0",
+                "http-cache-semantics": "^4.0.0",
+                "keyv": "^3.0.0",
+                "lowercase-keys": "^2.0.0",
+                "normalize-url": "^4.1.0",
+                "responselike": "^1.0.2"
+            },
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/electron/node_modules/decompress-response": {
+            "version": "3.3.0",
+            "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
+            "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==",
+            "dev": true,
+            "dependencies": {
+                "mimic-response": "^1.0.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/electron/node_modules/defer-to-connect": {
+            "version": "1.1.3",
+            "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz",
+            "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==",
+            "dev": true
+        },
+        "node_modules/electron/node_modules/fs-extra": {
+            "version": "8.1.0",
+            "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
+            "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
+            "dev": true,
+            "dependencies": {
+                "graceful-fs": "^4.2.0",
+                "jsonfile": "^4.0.0",
+                "universalify": "^0.1.0"
+            },
+            "engines": {
+                "node": ">=6 <7 || >=8"
+            }
+        },
+        "node_modules/electron/node_modules/got": {
+            "version": "9.6.0",
+            "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz",
+            "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==",
+            "dev": true,
+            "dependencies": {
+                "@sindresorhus/is": "^0.14.0",
+                "@szmarczak/http-timer": "^1.1.2",
+                "cacheable-request": "^6.0.0",
+                "decompress-response": "^3.3.0",
+                "duplexer3": "^0.1.4",
+                "get-stream": "^4.1.0",
+                "lowercase-keys": "^1.0.1",
+                "mimic-response": "^1.0.1",
+                "p-cancelable": "^1.0.0",
+                "to-readable-stream": "^1.0.0",
+                "url-parse-lax": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=8.6"
+            }
+        },
+        "node_modules/electron/node_modules/got/node_modules/get-stream": {
+            "version": "4.1.0",
+            "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+            "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+            "dev": true,
+            "dependencies": {
+                "pump": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/electron/node_modules/got/node_modules/lowercase-keys": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
+            "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/electron/node_modules/json-buffer": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
+            "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==",
+            "dev": true
+        },
+        "node_modules/electron/node_modules/jsonfile": {
+            "version": "4.0.0",
+            "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
+            "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
+            "dev": true,
+            "optionalDependencies": {
+                "graceful-fs": "^4.1.6"
+            }
+        },
+        "node_modules/electron/node_modules/keyv": {
+            "version": "3.1.0",
+            "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz",
+            "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==",
+            "dev": true,
+            "dependencies": {
+                "json-buffer": "3.0.0"
+            }
+        },
+        "node_modules/electron/node_modules/normalize-url": {
+            "version": "4.5.1",
+            "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz",
+            "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==",
+            "dev": true,
+            "engines": {
+                "node": ">=8"
+            }
+        },
+        "node_modules/electron/node_modules/p-cancelable": {
+            "version": "1.1.0",
+            "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz",
+            "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==",
+            "dev": true,
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/electron/node_modules/responselike": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz",
+            "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==",
+            "dev": true,
+            "dependencies": {
+                "lowercase-keys": "^1.0.0"
+            }
+        },
+        "node_modules/electron/node_modules/responselike/node_modules/lowercase-keys": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
+            "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
+            "dev": true,
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
+        "node_modules/electron/node_modules/semver": {
+            "version": "6.3.0",
+            "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+            "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+            "dev": true,
+            "bin": {
+                "semver": "bin/semver.js"
+            }
+        },
+        "node_modules/electron/node_modules/universalify": {
+            "version": "0.1.2",
+            "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
+            "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
+            "dev": true,
+            "engines": {
+                "node": ">= 4.0.0"
+            }
+        },
         "node_modules/emoji-regex": {
             "version": "8.0.0",
             "dev": true,
@@ -2917,6 +3154,22 @@
                 "which": "bin/which"
             }
         },
+        "node_modules/global-tunnel-ng": {
+            "version": "2.7.1",
+            "resolved": "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz",
+            "integrity": "sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg==",
+            "dev": true,
+            "optional": true,
+            "dependencies": {
+                "encodeurl": "^1.0.2",
+                "lodash": "^4.17.10",
+                "npm-conf": "^1.1.3",
+                "tunnel": "^0.0.6"
+            },
+            "engines": {
+                "node": ">=0.10"
+            }
+        },
         "node_modules/globalthis": {
             "version": "1.0.3",
             "dev": true,
@@ -4043,6 +4296,30 @@
                 "url": "https://github.com/sponsors/sindresorhus"
             }
         },
+        "node_modules/npm-conf": {
+            "version": "1.1.3",
+            "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz",
+            "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==",
+            "dev": true,
+            "optional": true,
+            "dependencies": {
+                "config-chain": "^1.1.11",
+                "pify": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/npm-conf/node_modules/pify": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+            "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
+            "dev": true,
+            "optional": true,
+            "engines": {
+                "node": ">=4"
+            }
+        },
         "node_modules/npm-run-path": {
             "version": "2.0.2",
             "dev": true,
@@ -4451,6 +4728,15 @@
                 "node": ">=6"
             }
         },
+        "node_modules/prepend-http": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz",
+            "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==",
+            "dev": true,
+            "engines": {
+                "node": ">=4"
+            }
+        },
         "node_modules/process-nextick-args": {
             "version": "2.0.1",
             "license": "MIT"
@@ -4475,6 +4761,13 @@
                 "node": ">=10"
             }
         },
+        "node_modules/proto-list": {
+            "version": "1.2.4",
+            "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
+            "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==",
+            "dev": true,
+            "optional": true
+        },
         "node_modules/proxy-addr": {
             "version": "2.0.7",
             "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
@@ -5339,6 +5632,15 @@
                 "tmp": "^0.2.0"
             }
         },
+        "node_modules/to-readable-stream": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz",
+            "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==",
+            "dev": true,
+            "engines": {
+                "node": ">=6"
+            }
+        },
         "node_modules/to-regex-range": {
             "version": "5.0.1",
             "dev": true,
@@ -5387,6 +5689,16 @@
             "dev": true,
             "license": "0BSD"
         },
+        "node_modules/tunnel": {
+            "version": "0.0.6",
+            "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
+            "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==",
+            "dev": true,
+            "optional": true,
+            "engines": {
+                "node": ">=0.6.11 <=0.7.0 || >=0.7.3"
+            }
+        },
         "node_modules/type-fest": {
             "version": "0.21.3",
             "dev": true,
@@ -5453,6 +5765,18 @@
                 "node": ">= 0.8"
             }
         },
+        "node_modules/url-parse-lax": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz",
+            "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==",
+            "dev": true,
+            "dependencies": {
+                "prepend-http": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
         "node_modules/username": {
             "version": "5.1.0",
             "dev": true,

+ 1 - 1
ElectronJS/package.json

@@ -27,7 +27,7 @@
         "@electron-forge/maker-rpm": "^6.0.5",
         "@electron-forge/maker-squirrel": "^6.0.5",
         "@electron-forge/maker-zip": "^6.0.5",
-        "electron": "^25.0.1"
+        "electron": "^20.0.1"
     },
     "repository": "https://github.com/NaiboWang/EasySpider",
     "dependencies": {

+ 3 - 1
ElectronJS/src/taskGrid/FlowChart_CN.html

@@ -524,8 +524,10 @@
                     <select id="outputFormat" class="form-control">
                         <option value = "csv">CSV</option>
                         <option value = "xlsx">XLSX(EXCEL)</option>
-                        <option value = "mysql">MySQL</option>
+                        <option value = "mysql">MySQL数据库</option>
                     </select>
+                    <label>导出文件名/数据库表格名称(如果值为“Time”则名称为执行任务时的时间):</label>
+                    <input onkeydown="inputDelete(event)" value="Time" id="saveName" class="form-control"></input>
                     <label>浏览器模拟类型:</label>
                     <select id="environment" name="environment" class="form-control">
                         <option value = 0>电脑端</option>

+ 30 - 7
ElectronJS/src/taskGrid/invokeTask.html

@@ -118,26 +118,38 @@
                                 <td>{{"Argument Value 2_1~参数值2_2" | lang}}</td>
                                 <td>...</td>
                             </tr>
+                            <tr>
+                                <td>...</td>
+                                <td>...</td>
+                                <td>...</td>
+                            </tr>
                             </tbody>
                         </table>
                         <label>{{"The 'Invoke Name' is shown at the main table of this page, such as 'urlList_0' is the invoke name of the open page operation.~“调用名称”在本页面的主表格中显示,例如“urlList_0”是“打开网页“操作的调用名称。" | lang}}</label>
                         <label>{{"You can just put part of the arguments in the Excel file, and the values of the rest of the arguments will be set to default. Example table for this task is:~您可以只在Excel文件中放入部分参数,其余参数值将被设置为默认值。一个针对此任务的表格示例为:" | lang}}</label>
                         <table class="table table-bordered excel">
+                            <thead>
+                                <tr>
+                                    <th v-for="i in Math.min(3, task.inputParameters.length)" v-if="task.inputParameters.length>0">
+                                        {{task.inputParameters[i-1]["name"]}}
+                                    </th>
+                                </tr>
+                            </thead>
                             <tbody>
                             <tr>
                                 <td v-for="i in Math.min(3, task.inputParameters.length)" v-if="task.inputParameters.length>0">
-                                    {{task.inputParameters[i-1]["name"]}}
+                                    {{getLine(i,0)}}
                                 </td>
-                            </tr>
                             <tr>
-                                <td v-for="i in Math.min(3, task.inputParameters.length)" v-if="task.inputParameters.length>0">
-                                    {{task.inputParameters[i-1]['value']}}
+                            <tr>
+                                <td v-for="i in Math.min(3, task.inputParameters.length)">
+                                    {{getLine(i,1)}}
                                 </td>
                             <tr>
                             <tr>
                                 <td v-for="i in Math.min(3, task.inputParameters.length)">
-                                    <div v-if="task.inputParameters[i-1]['name'].indexOf('url') >=0">
-                                        {{task.inputParameters[i-1]['value']}}
+                                    <div v-if="task.inputParameters[i-1]['value'].toString().split('\n').length >=2 || task.inputParameters[i-1]['name'].indexOf('url') >=0">
+                                        ...
                                     </div>
                                 </td>
                             <tr>
@@ -276,7 +288,18 @@
                     url = "taskInfo.html?id="+getUrlParam("id")+"&lang=en&type="+getUrlParam("type")+"&wsport="+getUrlParam("wsport")+"&backEndAddressServiceWrapper=" + app.$data.backEndAddressServiceWrapper
                 }
                 window.location.href = url;
-            }, readFromExcel: function(){
+            }, getLine: function(i, index){
+                const value = this.task.inputParameters[i-1]["value"].toString();
+                const parts = value.split("\n");
+                if(parts.length > index){
+                    return parts[index];
+                } else if(this.task.inputParameters[i-1]["name"].indexOf("url") >=0){
+                    return parts[0];
+                } else {
+                    return "";
+                }
+            },
+            readFromExcel: function(){
                 $('#excelModal').modal('show');
             }, submitFile: function() {
                 let form_data = new FormData();

+ 1 - 0
ElectronJS/src/taskGrid/logic_CN.js

@@ -429,6 +429,7 @@ function saveService(type) {
             "environment": environment,
             "maxViewLength": parseInt($("#maxViewLength").val()),
             "outputFormat": $("#outputFormat").val(),
+            "saveName": $("#saveName").val(),
             "containJudge": containJudge,
             "desc": serviceDescription,
             "inputParameters": inputParameters,

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
ElectronJS/tasks/63.json


+ 1 - 1
ExecuteStage/.vscode/launch.json

@@ -12,7 +12,7 @@
             "justMyCode": true,
             //  "args": ["--id", "[7]", "--read_type", "remote", "--headless", "0"]
             // "args": ["--id", "[9]", "--read_type", "remote", "--headless", "0", "--saved_file_name", "YOUTUBE"]
-            "args": ["--id", "[16]", "--headless", "0", "--user_data", "1"]
+            "args": ["--id", "[124]", "--headless", "0", "--user_data", "1"]
         }
     ]
 }

+ 41 - 20
ExecuteStage/easyspider_executestage.py

@@ -48,16 +48,38 @@ desired_capabilities["pageLoadStrategy"] = "none"
 
 
 class BrowserThread(Thread):
-    def __init__(self, browser_t, id, service, version, event, config):
+    def __init__(self, browser_t, id, service, version, event, saveName, config):
         Thread.__init__(self)
         self.browser = browser_t
         self.config = config
         self.id = id
         self.event = event
-        self.saveName = saveName
+        try:
+            self.saveName = service["saveName"]  # 保存文件的名字
+        except:
+            now = datetime.now()
+            # 将时间格式化为精确到毫秒的字符串
+            self.saveName = now.strftime("%Y_%m_%d_%H_%M_%S_%f")
         self.log = ""
         self.OUTPUT = ""
         self.SAVED = False
+
+        # 名称设定
+        if saveName != "": # 命令行覆盖保存名称
+            self.saveName = saveName  # 保存文件的名字
+        elif self.saveName == "Time":
+            # 获取当前时间
+            now = datetime.now()
+            # 将时间格式化为精确到毫秒的字符串
+            self.saveName = now.strftime("%Y_%m_%d_%H_%M_%S_%f")
+
+        print("Save Name for task ID", i, "is:", self.saveName)
+        print("任务ID", i, "的保存文件名为:", self.saveName)
+        if not os.path.exists("Data/Task_" + str(i)):
+            os.mkdir("Data/Task_" + str(i))
+        if not os.path.exists("Data/Task_" + str(i) + "/" + self.saveName):
+            os.mkdir("Data/Task_" + str(i) + "/" + self.saveName)  # 创建保存文件夹用来保存截图
+
         stealth_path = driver_path[:driver_path.find(
             "chromedriver")] + "stealth.min.js"
         with open(stealth_path, 'r') as f:
@@ -200,7 +222,10 @@ class BrowserThread(Thread):
             self.log = ""
 
     def scrollDown(self, para, rt=""):
-        time.sleep(para["scrollWaitTime"])  # 下拉前等待
+        try:
+            time.sleep(para["scrollWaitTime"])  # 下拉前等待
+        except:
+            pass
         scrollType = int(para["scrollType"])
         try:
             if scrollType != 0 and para["scrollCount"] > 0:  # 控制屏幕向下滚动
@@ -212,7 +237,10 @@ class BrowserThread(Thread):
                         body.send_keys(Keys.PAGE_DOWN)
                     elif scrollType == 2:
                         body.send_keys(Keys.END)
-                    time.sleep(para["scrollWaitTime"])  # 下拉完等待
+                    try:
+                        time.sleep(para["scrollWaitTime"])  # 下拉完等待
+                    except:
+                        pass
         except:
             self.Log('Time out after set seconds when scrolling. ')
             self.recordLog('Time out after set seconds when scrolling')
@@ -226,7 +254,10 @@ class BrowserThread(Thread):
                         body.send_keys(Keys.PGDN)
                     elif scrollType == 2:
                         body.send_keys(Keys.END)
-                    time.sleep(para["scrollWaitTime"])  # 下拉完等待
+                    try:
+                        time.sleep(para["scrollWaitTime"])  # 下拉完等待
+                    except:
+                        pass
             if rt != "":
                 rt.end()
 
@@ -862,7 +893,10 @@ class BrowserThread(Thread):
             self.Log('Time out after set seconds when loading clicked page')
             self.recordLog(
                 'Time out after set seconds when loading clicked page')
-            self.browser.execute_script('window.stop()')
+            try:
+                self.browser.execute_script('window.stop()')
+            except:
+                pass
         except Exception as e:
             self.Log(e)
             self.recordLog(str(e))
@@ -1336,19 +1370,6 @@ if __name__ == '__main__':
     for i in c.id:
         print(options)
         print("id: ", i)
-        if c.saved_file_name != "":
-            saveName = c.saved_file_name  # 保存文件的名字
-        else:
-            # 获取当前时间
-            now = datetime.now()
-            # 将时间格式化为精确到毫秒的字符串
-            saveName = now.strftime("%Y_%m_%d_%H_%M_%S_%f")
-        print("Save Name for task ID", i, "is:", saveName)
-        print("任务ID", i, "的保存文件名为:", saveName)
-        if not os.path.exists("Data/Task_" + str(i)):
-            os.mkdir("Data/Task_" + str(i))
-        if not os.path.exists("Data/Task_" + str(i) + "/" + saveName):
-            os.mkdir("Data/Task_" + str(i) + "/" + saveName)  # 创建保存文件夹用来保存截图
         if c.read_type == "remote":
             print("remote")
             content = requests.get(
@@ -1402,7 +1423,7 @@ if __name__ == '__main__':
         event = Event()
         event.set()
         thread = BrowserThread(browser_t, i, service,
-                               c.version, event, config=config)
+                               c.version, event, c.saved_file_name, config=config)
         print("Thread with task id: ", i, " is created")
         threads.append(thread)
         thread.start()

Некоторые файлы не были показаны из-за большого количества измененных файлов