qiushang 8 tháng trước cách đây
mục cha
commit
1de3ce6075
4 tập tin đã thay đổi với 112 bổ sung34 xóa
  1. 3 3
      nsis/test.nsi
  2. 1 1
      package.json
  3. 107 29
      src/renderer/components/home.vue
  4. 1 1
      src/renderer/components/update.vue

+ 3 - 3
nsis/test.nsi

@@ -1,16 +1,16 @@
 # ====================== 自定义宏 产品信息==============================
 !define PRODUCT_MID        		    "Ds8JqlRmiiGR"
-!define PRODUCT_VERSION        		"2.0.7.0"
+!define PRODUCT_VERSION        		"2.0.7.1"
 !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.0.7.0.7z"
+!define APP_DOWNLOAD_URL    		"https://xy.xingyousoft.com/soft/XYCapture/lastest2.0.7.1.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.0.7.0"   # 接卸优惠网址
+!define UNINSTALL_url               "https://xy.xingyousoft.com/soft/XYCapture/uninstallWeb/?v=2.0.7.1"   # 接卸优惠网址
 
 # ====================== 自定义宏 安装信息==============================
 !define INSTALL_7Z_NAME 	   		"app.7z"

+ 1 - 1
package.json

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

+ 107 - 29
src/renderer/components/home.vue

@@ -227,7 +227,7 @@
 							<div>
 								<el-form label-position="right" label-width="80px" :rules="rules" :model="formData" ref="formData">
 									<el-form-item label="目录名称" prop="title">
-										<el-input v-model="formData.title" placeholder="为空则默认使用网页标题前60个字符"></el-input>
+										<el-input v-model="formData.title" placeholder="为空则默认使用网页标题前50个字符"></el-input>
 									</el-form-item>
 									<el-form-item label="网页链接" prop="url">
 										<el-input type="textarea" :rows="10" v-if="menuIndex < 10" :placeholder="'请输入网址链接(例:' + exampleUrl[menuIndex-1] + ')'" v-model="formData.url"></el-input>
@@ -320,7 +320,7 @@
 				},
 				rules:{ //   
 					title: [
-						{ min: 0, max: 60, message: '不能超过 60 个字符', trigger: 'blur' },  
+						{ min: 0, max: 50, message: '不能超过 50 个字符', trigger: 'blur' },  
 						{ pattern: /^[^\\/:*?"<>|]*$/, message: '标题中不能包含 \\ / : * ? " < > |', trigger: 'blur' } 
 					],
 					url: [
@@ -1528,34 +1528,89 @@
 								}
 							});
 							
-							let pageInfo = await page.evaluate(() => {
-								let cHeight = document.documentElement.clientHeight;
-								let scrollHeight = document.body.scrollHeight;
-								return {'scrollHeight': scrollHeight, 'cHeight': cHeight}
-							});
-							
-							//鼠标放在主图第一张,生成视频
-							const elementHandle = await page.$('li[class*=thumbnail--]');
-							
-							if(elementHandle){
-								const classListProperty = await elementHandle.getProperty('classList');
-								const classList = await classListProperty.jsonValue();
-								const classesArray = Object.values(classList);
-								const allClasses = classesArray.join('.');
-								if(allClasses && allClasses.indexOf('active-') < 0){
-									await page.hover('li.'+allClasses);
+							if(this.settingArr.indexOf('video') > -1){ // 用户选择下载视频的时候才会触发
+								//鼠标放在主图第一张,生成视频
+								const elementHandle = await page.$('li[class*=thumbnail--]');
+								if(elementHandle){
+									const classListProperty = await elementHandle.getProperty('classList');
+									const classList = await classListProperty.jsonValue();
+									const classesArray = Object.values(classList);
+									const allClasses = classesArray.join('.');
+									if(allClasses && allClasses.indexOf('active-') < 0){
+										await page.hover('li.'+allClasses);
+									}
 								}
 							}
 							
-							let m1 = document.querySelectorAll('img[class^=PicGallery--thumbnailPic--]');
-							let m2 = document.querySelectorAll('img[class*=thumbnailPic--]');
-							if(document.querySelector('iframe') && m1.length == 0 && m2.length == 0){ // 出现弹窗而且没有主图,判断为拦截模式
-								await tbBrowser.close();
-								urlInfo.status = '6';
-								resolve(true);
-								this.loading = false;
+							let iframeElementHandle = await page.$('iframe');
+							if(iframeElementHandle){
+								let m1 = await page.$('img[class^=PicGallery--thumbnailPic--]');
+								let m2 = await page.$('img[class*=thumbnailPic--]');
+								if(!m1 && !m2){ // 出现弹窗而且没有主图,判断为拦截模式
+									/** 手动滑动过滤拦截验证拦截 **/
+									const iframe = await iframeElementHandle.contentFrame();
+									const handle = await iframe.$('.btn_slide'); //滑块
+									const handle2 = await iframe.$('.nc_scale'); //轨道
+									if(handle && handle2){
+										const box = await handle.boundingBox();
+										const boxEnd = await handle2.boundingBox();
+										const center = {
+											x: box.x + box.width / 2,
+											y: box.y + box.height / 2
+										};
+										const centerEnd = {
+											x: center.x + boxEnd.width,
+											y: box.y + box.height / 2
+										};
+										await page.mouse.move(center.x, center.y);
+										await page.mouse.down();
+										await page.mouse.move(centerEnd.x, centerEnd.y, { steps: 80 });
+										await page.mouse.up();
+										await page.waitForTimeout(500);
+										
+										const nocaptcha = await iframe.$('#nocaptcha');
+										if(nocaptcha){ // 第一次滑动未通过再次点击验证
+											await nocaptcha.click();
+											await page.waitForTimeout(500);
+											
+											const reHandle = await iframe.$('.btn_slide'); //滑块
+											const reHandle2 = await iframe.$('.nc_scale'); //轨道
+											if(reHandle && reHandle2){
+												const box = await reHandle.boundingBox();
+												const boxEnd = await reHandle2.boundingBox();
+												const center = {
+													x: box.x + box.width / 2,
+													y: box.y + box.height / 2
+												};
+												const centerEnd = {
+													x: center.x + boxEnd.width,
+													y: box.y + box.height / 2
+												};
+												await page.mouse.move(center.x, center.y);
+												await page.mouse.down();
+												await page.mouse.move(centerEnd.x, centerEnd.y, { steps: 80 });
+												await page.mouse.up();
+												await page.waitForTimeout(500);
+												
+												let iframeElementHandle2 = await page.$('iframe');
+												if(iframeElementHandle2){
+													await tbBrowser.close();
+													urlInfo.status = '6';
+													resolve(true);
+													this.loading = false;
+													return false;
+												}
+											}
+										}
+									}
+								}
 							}
 							
+							let pageInfo = await page.evaluate(() => {
+								let cHeight = document.documentElement.clientHeight;
+								let scrollHeight = document.body.scrollHeight;
+								return {'scrollHeight': scrollHeight, 'cHeight': cHeight}
+							});
 							let scrollHeight = pageInfo.scrollHeight;
 							let cHeight = pageInfo.cHeight;
 							let num = Math.ceil(scrollHeight / cHeight);
@@ -1583,7 +1638,7 @@
 										num = 0;
 									}
 								}
-								if(this.settingArr.indexOf('detailImg') > -1){
+								if(this.settingArr.indexOf('detailImg') > -1){ // 选择详情图
 									let scrollHeight2 = await page.evaluate((start) => {
 										let scrollHeight = document.body.scrollHeight;
 										let cHeight = document.documentElement.clientHeight;
@@ -1604,7 +1659,30 @@
 										num = 0;
 									}
 								}
-								
+								if(this.settingArr.indexOf('skuImg') > -1 && this.settingArr.indexOf('commentImg') < 0 && this.settingArr.indexOf('detailImg') < 0){ // 选择了sku图片没选择评论和详情
+									let scrollHeight2 = await page.evaluate((start) => {
+										let scrollHeight = document.body.scrollHeight;
+										let cHeight = document.documentElement.clientHeight;
+										let obj = document.querySelector('div[class^=SkuContent--]');
+										if(obj && obj.getBoundingClientRect().bottom < 500){
+											return -1;
+										}
+										window.scrollTo({
+											top: cHeight * start, 
+											behavior: "smooth" 
+										});
+										return scrollHeight;
+									}, start);
+									
+									if(scrollHeight2 > 0){
+										num = Math.ceil(scrollHeight2 / cHeight);
+									}else{
+										num = 0;
+									}
+								}
+								if(this.settingArr.indexOf('skuImg') < 0 && this.settingArr.indexOf('detailImg') < 0 && this.settingArr.indexOf('commentImg') < 0){ // 没有选择评论图和详情图
+									num = 0;
+								}
 								if(start > num || start > 200){ // 防止页面过长,滚动200次自动停止
 									urlInfo.status = '3';
 									clearInterval(scrollInt);
@@ -2332,10 +2410,10 @@
 			
 			// 获取页面标题 - 生成对应的文件夹
 			async getTitle(page, urlInfo){
-				// 已页面标题作为新建文件夹,保留前60个字
+				// 已页面标题作为新建文件夹,保留前50个字
 				let title = await page.title();
 				if(title){
-					title = title.substring(0, 60);
+					title = title.substring(0, 50);
 					if(this.containsAnyChar(title, ['\\', '/', ':', '*', '?', '"', '<', '>', '|'])){  //判断是否含有特殊字符
 						title = title.replace(/[\\|/|:|*|?|"|<|>||]/g, "");
 					}

+ 1 - 1
src/renderer/components/update.vue

@@ -78,7 +78,7 @@
 					<div>网页中可能存在网络图片无法加载的情况,会过滤掉无法下载的图片</div>
 				</el-collapse-item>
 				<el-collapse-item title="3、账号登陆后,下载任务显示处理中没反应" name="3">
-					<div>查看任务栏是否关闭该浏览器 <img style="width: 20px;" src="../assets/image/chromium.png" />,如未关闭请关闭浏览器后重新下载。</div>
+					<div>查看任务栏是否关闭该浏览器 <img style="width: 20px;" src="../assets/image/m-chrome.png" />,如未关闭请关闭浏览器后重新下载。</div>
 				</el-collapse-item>
 				<el-collapse-item title="4、关闭浏览器后,下载任务显示处理中仍没反应" name="4">
 					<div>可能出现官网拦截,出现请拖动滑块还原拼图的情况,点击软件右上角菜单按钮,选择软件设置-账号登录,点击对应的淘宝/天猫账号,浏览器打开后手动拖动还原拼图拦截,完成后关闭浏览器即可正常使用。</div>