qiushang пре 1 месец
родитељ
комит
b08ebdf224
4 измењених фајлова са 134 додато и 103 уклоњено
  1. 3 3
      nsis/test.nsi
  2. 1 1
      package.json
  3. 91 41
      src/renderer/components/header.vue
  4. 39 58
      src/renderer/components/home.vue

+ 3 - 3
nsis/test.nsi

@@ -1,16 +1,16 @@
 # ====================== 自定义宏 产品信息==============================
 !define PRODUCT_MID        		    "Ds8JqlRmiiGR"
-!define PRODUCT_VERSION        		"2.2.3.3"
+!define PRODUCT_VERSION        		"2.2.3.4"
 !define PRODUCT_NAME           		"星优图片下载助手"
 !define INSTALL_OUTPUT_NAME    		"XYCapture_XY.exe" 
 !define EXE_NAME               		"XYCapture.exe"
 !define PRODUCT_PATHNAME           	"XYCapture"     #安装卸载项用到的KEY,注册表
 !define INSTALL_APPEND_PATH         "XYCapture"     #安装路径追加的名称 
-!define APP_DOWNLOAD_URL    		"https://xy.xingyousoft.com/soft/XYCapture/lastest2.2.3.3.7z"
+!define APP_DOWNLOAD_URL    		"https://xy.xingyousoft.com/soft/XYCapture/lastest2.2.3.4.7z"
 !define PRODUCT_PUBLISHER      	    "苏州星优办公软件有限公司"
 !define PRODUCT_LEGAL          	    "苏州星优办公软件有限公司"
 !define STATISTICS_url              "https://www.xingyousoft.com/api/index/user_log"   # 统计网址
-!define UNINSTALL_url               "https://xy.xingyousoft.com/soft/XYCapture/uninstallWeb/?v=2.2.3.3"   # 接卸优惠网址
+!define UNINSTALL_url               "https://xy.xingyousoft.com/soft/XYCapture/uninstallWeb/?v=2.2.3.4"   # 接卸优惠网址
 
 # ====================== 自定义宏 安装信息==============================
 !define INSTALL_7Z_NAME 	   		"app.7z"

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
 	"name": "XYCapture",
-	"version": "2.2.3.3",
+	"version": "2.2.3.4",
 	"author": "苏州星优办公软件有限公司",
 	"description": "An electron-vue project",
 	"license": "capture",

+ 91 - 41
src/renderer/components/header.vue

@@ -141,24 +141,24 @@
 					<el-button size="mini" @click="toLogin('red')" :loading="redLoading">小红书</el-button>
 				</el-row>
 				<el-divider content-position="left">
-					页面滚动速度
-					<el-popover placement="bottom" popper-class="popper-open" trigger="hover" content="默认500ms,本地网路访问速度快可选择短时间,时间越长处理任务的时间也越长">
+					浏览器选择 
+					<el-popover placement="bottom" popper-class="popper-open" trigger="hover" content="用户可使用本地电脑的谷歌/Edge浏览器或软件内置的浏览器">
 						<i class="el-icon-info" slot="reference" style="margin-left: 10px; color: #F56C6C;"></i>
 					</el-popover>
 				</el-divider>
 				<el-row style="text-align: center;">
-					<el-select v-model="pageMs" placeholder="请选择时间" size="mini" style="width: 100px; margin-right: 5px;">
-						<el-option :value="400"></el-option>
-						<el-option :value="500"></el-option>
-						<el-option :value="600"></el-option>
-						<el-option :value="700"></el-option>
-						<el-option :value="800"></el-option>
-						<el-option :value="900"></el-option>
-						<el-option :value="1000"></el-option>
-					</el-select>ms
+					<el-radio-group v-model="chromeType">
+					    <el-radio :label="1">电脑浏览器</el-radio>
+					    <el-radio :label="2">内置浏览器</el-radio>
+					</el-radio-group>
+				</el-row>
+				<el-row style="text-align: center; margin-top: 10px;" v-if="chromeType == 1">
+					<el-input size="small" v-model="chromePath" placeholder="请输入本地Chrome/Edge浏览器启动地址" style="width: 75%;"></el-input>
+						<el-link @click="chromeHelp('https://www.xingyousoft.com/news/detail/Z80IPpNVNNC1')" type="danger" style="text-decoration: underline; font-size: 12px;" :underline="false">查看如何输入</el-link>
+					</el-popover>
 				</el-row>
 				<el-divider content-position="left">
-					浏览器版本 
+					内置浏览器版本
 					<el-popover placement="bottom" popper-class="popper-open" trigger="hover" content="win10以下版本(不含win10),请使用兼容版本的浏览器">
 						<i class="el-icon-info" slot="reference" style="margin-left: 10px; color: #F56C6C;"></i>
 					</el-popover>
@@ -169,6 +169,23 @@
 					    <el-radio :label="2">最新版本</el-radio>
 					</el-radio-group>
 				</el-row>
+				<el-divider content-position="left">
+					页面滚动速度
+					<el-popover placement="bottom" popper-class="popper-open" trigger="hover" content="默认500ms,本地网路访问速度快可选择短时间,时间越长处理任务的时间也越长">
+						<i class="el-icon-info" slot="reference" style="margin-left: 10px; color: #F56C6C;"></i>
+					</el-popover>
+				</el-divider>
+				<el-row style="text-align: center;">
+					<el-select v-model="pageMs" placeholder="请选择时间" size="mini" style="width: 100px; margin-right: 5px;">
+						<el-option :value="400"></el-option>
+						<el-option :value="500"></el-option>
+						<el-option :value="600"></el-option>
+						<el-option :value="700"></el-option>
+						<el-option :value="800"></el-option>
+						<el-option :value="900"></el-option>
+						<el-option :value="1000"></el-option>
+					</el-select>ms
+				</el-row>
 				<el-divider content-position="left">清理缓存</el-divider>
 				<el-row style="text-align: center;">
 					<el-button size="small" type="primary" @click="clearCache()" :loading="cacheLoading">点击清除软件缓存</el-button>
@@ -253,6 +270,8 @@
 				closeModel: false,
 				closeType: 2,
 				versionType: 2,
+				chromeType: 2,
+				chromePath: '',
 				pageMs: 500,
 				isRemember:true,
 				//
@@ -376,6 +395,14 @@
 			})
 		},
 		methods: {
+			// 打开浏览器
+			chromeHelp(url){
+				// 打开浏览器
+				const {
+					shell
+				} = require('electron');
+				shell.openExternal(url);
+			},
 			// 清空缓存
 			clearCache(){
 				this.$confirm('此操作将清除软件缓存, 后续账号需要重新登录,是否继续?', '提示', {
@@ -388,9 +415,11 @@
 					setTimeout(() => {
 						let path = os.tmpdir() + '\\' + 'chrome-data-capture';
 						let path2 = os.tmpdir() + '\\' + 'chrome-data-capture-jd';
+						let path3 = os.tmpdir() + '\\' + 'chrome-data-capture-local';
 						try{
 							this.deleteFolder(path, false);
 							this.deleteFolder(path2, false);
+							this.deleteFolder(path3, false);
 						}catch(e){
 							this.cacheLoading = false;
 							if(e.toString().indexOf('operation not permitted') > -1){
@@ -493,38 +522,51 @@
 			// 保存设置
 			saveSetting(){
 				this.saveLoading = true;
-				let systemVersion = 10;
-				if(os.release() && os.release().indexOf('.')){
-					systemVersion = Number(os.release().split('.')[0]);
-				}
-				if(systemVersion < 10 && this.versionType == 2){ // win10以下版本,而且选择了最新版本时提示
-					this.$confirm("检测到当前Windows系统不兼容最新版浏览器,是否继续选择最新版?", '提示', {
-						type: 'warning'
-					}).then(() => {
-						this.$utils.setStorage('closeType', this.closeType);
-						this.$utils.setStorage('pageMs', this.pageMs);
-						this.$utils.setStorage('versionType', this.versionType);
-						this.$utils.setStorage('isRemember', true)
-						ipcRenderer.send('boot', this.boot);
-						setTimeout(() => {
-							this.saveLoading = false;
-							this.settingModal = false;
-						}, 800)
-					}).catch(() => {
-						this.saveLoading = false;
-					});
-				}else{
-					this.$utils.setStorage('closeType', this.closeType);
-					this.$utils.setStorage('pageMs', this.pageMs);
-					this.$utils.setStorage('versionType', this.versionType);
-					this.$utils.setStorage('isRemember', true)
-					ipcRenderer.send('boot', this.boot);
-					setTimeout(() => {
+				if(this.chromeType == 1){ // 用户选择电脑本地的浏览器使用
+					let chromePath = this.chromePath.replace(/"/g, "");
+					if(!chromePath.endsWith('.exe') || /[\u4e00-\u9fff]/.test(chromePath)){ //判断文件路径结尾而且不包含中文
+						this.$notify({
+							title: '提示',
+							message: '浏览器启动地址不能含有中文且必须以".exe"结尾,请核对后重新输入',
+							type: 'warning'
+						});
 						this.saveLoading = false;
-						this.settingModal = false;
-					}, 800)
+						return false;
+					}
+					this.chromePath = chromePath;
+					this.$utils.setStorage('chromePath', this.chromePath);
+					this.setPublic();
+				}else{ //用户选择内置浏览器使用校验
+					let systemVersion = 10;
+					if(os.release() && os.release().indexOf('.')){
+						systemVersion = Number(os.release().split('.')[0]);
+					}
+					if(systemVersion < 10 && this.versionType == 2){ // win10以下版本,而且选择了最新版本时提示
+						this.$confirm("检测到当前Windows系统不兼容最新版浏览器,是否继续选择最新版?", '提示', {
+							type: 'warning'
+						}).then(() => {
+							this.setPublic();
+						}).catch(() => {
+							this.saveLoading = false;
+						});
+					}else{
+						this.setPublic();
+					}
 				}
 			},
+			// 保存设置公共代码部分
+			setPublic(){
+				this.$utils.setStorage('closeType', this.closeType);
+				this.$utils.setStorage('pageMs', this.pageMs);
+				this.$utils.setStorage('versionType', this.versionType);
+				this.$utils.setStorage('isRemember', true);
+				this.$utils.setStorage('chromeType', this.chromeType);
+				ipcRenderer.send('boot', this.boot);
+				setTimeout(() => {
+					this.saveLoading = false;
+					this.settingModal = false;
+				}, 800)
+			},
 			// 保存开发者设置
 			saveDevelop(){
 				this.saveDevelopLoading = true;
@@ -840,6 +882,8 @@
 					let closeType = this.$utils.getStorage('closeType');
 					let pageMs = this.$utils.getStorage('pageMs');
 					let versionType = this.$utils.getStorage('versionType');
+					let chromeType = this.$utils.getStorage('chromeType');
+					let chromePath = this.$utils.getStorage('chromePath');
 					if(closeType){
 						this.closeType = closeType;
 					}
@@ -849,6 +893,12 @@
 					if(versionType){
 						this.versionType = versionType;
 					}
+					if(chromeType){
+						this.chromeType = chromeType;
+					}
+					if(chromePath){
+						this.chromePath = chromePath;
+					}
 				} else if (e == 'developer'){ //开发者模式
 					let password = '9d0b17e04db20927047de3d09152db0f'; //默认密钥
 					this.$http.defaults.headers.post['Content-Type'] = 'application/json;charset=UTF-8';

+ 39 - 58
src/renderer/components/home.vue

@@ -339,6 +339,7 @@
 	// const headless = true;
 	// const waitUntil = 'networkidle2';
 	const { ipcRenderer } = require('electron');
+	//const chromePath =  "C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe";
 	
 	let separator = '';
 	if (os.platform == 'linux') {
@@ -458,6 +459,10 @@
 				fs.mkdirSync(os.tmpdir() + separator + 'chrome-data-capture-jd');
 			}
 			
+			if (!fs.existsSync(os.tmpdir() + separator + 'chrome-data-capture-local')) {
+				fs.mkdirSync(os.tmpdir() + separator + 'chrome-data-capture-local');
+			}
+			
 			let path = os.tmpdir() + separator + 'chrome-data-capture';
 			let path2 = os.tmpdir() + separator + 'chrome-data-capture-jd';
 			//this.deleteAll(path, false);
@@ -513,13 +518,33 @@
 			},
 			// 实时获取浏览器路径
 			initPath(){
+				let chromeType = this.$utils.getStorage('chromeType');
 				let chromePath = puppeteer.executablePath().replace('win32-1', 'win64-1');
-				let versionType = this.$utils.getStorage('versionType');
-				if(versionType && versionType == 1){
-					chromePath = chromePath.replace('chrome-win', 'chrome7');
+				if(chromeType == 1){ // 电脑自带浏览器
+					chromePath = this.$utils.getStorage('chromePath');
+				}else{
+					chromePath = puppeteer.executablePath().replace('win32-1', 'win64-1');
+					let versionType = this.$utils.getStorage('versionType');
+					if(versionType && versionType == 1){
+						chromePath = chromePath.replace('chrome-win', 'chrome7');
+					}
 				}
 				return chromePath;
 			},
+			// 实时获取浏览器数据缓存
+			initDataDir(tag){
+				let chromeType = this.$utils.getStorage('chromeType');
+				let userDataDir = os.tmpdir() + separator + 'chrome-data-capture';
+				if(chromeType == 1){ // 电脑自带浏览器
+					userDataDir = os.tmpdir() + separator + 'chrome-data-capture-local';
+				}else{
+					userDataDir = os.tmpdir() + separator + 'chrome-data-capture';
+					if(tag == 'jd'){
+						userDataDir = os.tmpdir() + separator + 'chrome-data-capture-jd';
+					}
+				}
+				return userDataDir;
+			},
 			// 实时获取页面滚动加载时间
 			initMs(){
 				let pageMs = this.$utils.getStorage('pageMs');
@@ -751,10 +776,13 @@
 						if (!fs.existsSync(os.tmpdir() + separator + 'chrome-data-capture-jd')) {
 							fs.mkdirSync(os.tmpdir() + separator + 'chrome-data-capture-jd');
 						}
+						if (!fs.existsSync(os.tmpdir() + separator + 'chrome-data-capture-local')) {
+							fs.mkdirSync(os.tmpdir() + separator + 'chrome-data-capture-local');
+						}
 						
-						let userDataDir = os.tmpdir() + separator + 'chrome-data-capture';
+						let userDataDir = this.initDataDir();
 						if(url.indexOf('.jd.com/') > -1){
-							userDataDir = os.tmpdir() + separator + 'chrome-data-capture-jd';
+							userDataDir = this.initDataDir('jd');
 						}
 						
 						puppeteer.use(StealthPlugin());
@@ -849,10 +877,6 @@
 						}, 60000);
 					}
 					
-					if (!fs.existsSync(os.tmpdir() + separator + 'chrome-data-capture')) {
-						fs.mkdirSync(os.tmpdir() + separator + 'chrome-data-capture');
-					}
-					
 					if(this.menuIndex == '1' && !this.skipLogin){ // 阿里巴巴
 						if(this.alibabaStatus == 1 || this.alibabaStatus == 3){  // 未检测登录状态/或提示未登录状态,开始检测
 							await this.checkAlibabaLogin().then((data) => {
@@ -923,9 +947,9 @@
 					
 					let taskArr = [];
 					let task = "";
-					let userDataDir = os.tmpdir() + separator + 'chrome-data-capture';
+					let userDataDir = this.initDataDir();
 					if(this.menuIndex == '2'){
-						userDataDir = os.tmpdir() + separator + 'chrome-data-capture-jd';
+						userDataDir = this.initDataDir('jd');
 					}
 					// 运行不同平台的浏览器
 					puppeteer.use(StealthPlugin());
@@ -1028,17 +1052,6 @@
 							let number = 0;
 							urlInfo.status = '2';
 							urlInfo.num = 0;
-							// puppeteer.use(StealthPlugin());
-							// const commonBrowser = await puppeteer.launch({
-							// 	executablePath: this.initPath(),
-							// 	userDataDir: os.tmpdir() + separator + 'chrome-data-capture',
-							// 	args: [
-							// 		'--start-maximized',
-							// 		'--no-sandbox',
-							// 		'--disable-setuid-sandbox',
-							// 		'--disable-blink-features=AutomationControlled',
-							// 	]
-							// });
 							const page = await commonBrowser.newPage();
 							
 							let titleFlag = true;
@@ -1171,7 +1184,7 @@
 							this.loginBrowser = await puppeteer.launch({
 								executablePath: this.initPath(),
 								args: ['--window-size=1280,800'],
-								userDataDir: os.tmpdir() + separator + 'chrome-data-capture', 
+								userDataDir: this.initDataDir()
 							});
 							const page = await this.loginBrowser.newPage();
 							await page.setViewport({ width: 1280, height: 800 });
@@ -1220,11 +1233,6 @@
 							let authority = this.$refs.headerRef.authority.isAuthority;
 							urlInfo.status = '2';
 							urlInfo.num = 0;
-							// puppeteer.use(StealthPlugin());
-							// const browser = await puppeteer.launch({
-							// 	executablePath: this.initPath(),
-							// 	userDataDir: os.tmpdir() + separator + 'chrome-data-capture', 
-							// });
 							const page = await browser.newPage();
 							
 							let waitUntil = 'networkidle2';
@@ -1323,7 +1331,7 @@
 							this.loginBrowser = await puppeteer.launch({
 								executablePath: this.initPath(),
 								args: ['--window-size=1280,800'],
-								userDataDir: os.tmpdir() + separator + 'chrome-data-capture-jd', 
+								userDataDir: this.initDataDir('jd'),
 								args: [
 									'--start-maximized',
 									'--no-sandbox',
@@ -1383,16 +1391,6 @@
 							let authority = this.$refs.headerRef.authority.isAuthority;
 							urlInfo.status = '2';
 							urlInfo.num = 0;
-							// puppeteer.use(StealthPlugin());
-							// const jdBrowser = await puppeteer.launch({
-							// 	executablePath: this.initPath(),
-							// 	userDataDir: os.tmpdir() + separator + 'chrome-data-capture-jd',
-							// 	args: [
-							// 		'--no-sandbox',
-							// 		'--disable-setuid-sandbox',
-							// 		'--disable-blink-features=AutomationControlled',
-							// 	]
-							// });
 							const page = await jdBrowser.newPage();
 							await page.evaluateOnNewDocument(() => {
 							    const newProto = navigator.__proto__;
@@ -1733,7 +1731,7 @@
 							this.loginBrowser = await puppeteer.launch({
 								executablePath: this.initPath(),
 								args: ['--window-size=1280,800'],
-								userDataDir: os.tmpdir() + separator + 'chrome-data-capture', 
+								userDataDir: this.initDataDir() 
 							});
 							const page = await this.loginBrowser.newPage();
 							await page.setViewport({ width: 1280, height: 800 });
@@ -1781,11 +1779,6 @@
 							let authority = this.$refs.headerRef.authority.isAuthority;
 							urlInfo.status = '2';
 							urlInfo.num = 0;
-							// puppeteer.use(StealthPlugin());
-							// const tbBrowser = await puppeteer.launch({
-							// 	executablePath: this.initPath(),
-							// 	userDataDir: os.tmpdir() + separator + 'chrome-data-capture', 
-							// });
 							let page = await tbBrowser.newPage();
 							
 							let responseVideo = [];
@@ -2367,7 +2360,7 @@
 							puppeteer.use(StealthPlugin());
 							this.loginBrowser = await puppeteer.launch({
 								executablePath: this.initPath(),
-								userDataDir: os.tmpdir() + separator + 'chrome-data-capture', 
+								userDataDir: this.initDataDir(),
 								args: [
 									'--start-maximized',
 									'--no-sandbox',
@@ -2410,18 +2403,6 @@
 							let number = 0;
 							urlInfo.status = '2';
 							urlInfo.num = 0;
-							// puppeteer.use(StealthPlugin());
-							// const redBrowser = await puppeteer.launch({
-							// 	headless: false,
-							// 	executablePath: this.initPath(),
-							// 	userDataDir: os.tmpdir() + separator + 'chrome-data-capture',
-							// 	args: [
-							// 		'--start-maximized',
-							// 		'--no-sandbox',
-							// 		'--disable-setuid-sandbox',
-							// 		'--disable-blink-features=AutomationControlled',
-							// 	]
-							// });
 							const page = await redBrowser.newPage();
 							let responseVideo = [];
 							page.on('response', async(response) => {