qiushang 8 bulan lalu
induk
melakukan
e3fb2aba0a

+ 3 - 3
nsis/test.nsi

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

+ 2 - 2
package.json

@@ -1,6 +1,6 @@
 {
 	"name": "XYCapture",
-	"version": "2.0.7.1",
+	"version": "2.0.7.2",
 	"author": "苏州星优办公软件有限公司",
 	"description": "An electron-vue project",
 	"license": "capture",
@@ -9,7 +9,7 @@
 		"description": "这里是软件描述文档",
 		"downloadName": "XYCapture",
 		"softMid": "Ds8JqlRmiiGR",
-		"softName": "图片下载助手",
+		"softName": "星优图片下载助手",
 		"copyright": "苏州星优办公软件有限公司",
 		"popupAdvId": "30",
 		"linkId": "31",

+ 50 - 9
src/renderer/components/header.vue

@@ -137,11 +137,24 @@
 				<el-row style="text-align: center; margin-top: 10px;">
 					<el-link :underline="false" type="danger" style="text-align: center; font-size: 13px;">账号登录完成后请关闭浏览器使用</el-link>
 				</el-row>
+				<el-divider content-position="left">
+					同时下载任务量 
+					<el-popover placement="bottom" popper-class="popper-open" trigger="hover" content="同时下载量过多,可能会触发平台拦截">
+						<i class="el-icon-info" slot="reference" style="margin-left: 10px; color: #F56C6C;"></i>
+					</el-popover>
+				</el-divider>
+				<el-row style="text-align: center; margin-top: 10px;">
+					<el-radio-group v-model="numType">
+					    <el-radio :label="1">1个</el-radio>
+					    <el-radio :label="2">2个</el-radio>
+					    <el-radio :label="3">3个</el-radio>
+					    <el-radio :label="4">4个</el-radio>
+					</el-radio-group>
+				</el-row>
 				<el-divider content-position="left">清理缓存</el-divider>
 				<el-row style="text-align: center; margin-top: 10px;">
 					<el-button size="small" type="primary" @click="clearCache()" :loading="cacheLoading">点击清除软件缓存</el-button>
 				</el-row>
-				
 				<el-divider content-position="left">退出设置</el-divider>
 				<el-radio-group v-model="closeType">
 				    <el-radio :label="1">最小化到系统托盘</el-radio>
@@ -179,6 +192,7 @@
 				boot: false, // 开机启动
 				closeModel: false,
 				closeType: 2,
+				numType: 1,
 				isRemember:true,
 				//
 				productName: pjson.softInfo.softName,
@@ -299,19 +313,36 @@
 					type: 'warning'
 				}).then(() => {
 					this.cacheLoading = true;
+					let closeFlag = true;
 					setTimeout(() => {
 						let path = os.tmpdir() + '\\' + 'chrome-data-capture';
 						let path2 = os.tmpdir() + '\\' + 'chrome-data-capture-jd';
-						this.deleteFolder(path, false);
-						this.deleteFolder(path2, false);
+						try{
+							this.deleteFolder(path, false);
+							this.deleteFolder(path2, false);
+						}catch(e){
+							this.cacheLoading = false;
+							if(e.toString().indexOf('operation not permitted') > -1){
+								this.$notify.error({
+									title: '提示',
+									message: '请关闭浏览器后在执行清除缓存操作!'
+								});
+								closeFlag = false;
+								return false;
+							}
+						}
+						
+						if(closeFlag){
+							setTimeout(() => {
+								this.$message({message: '缓存清除成功!', type: 'success'});
+								this.$emit('clear-cache', true);
+								this.cacheLoading = false;
+							}, 2000);
+						}
+						
 					}, 500);
-					setTimeout(() => {
-						this.$message({message: '缓存清除成功!', type: 'success'});
-						this.$emit('clear-cache', true);
-						this.cacheLoading = false;
-					}, 2000)
 				}).catch(() => {
-				
+					
 				});
 			},
 			// 删除文件夹内容
@@ -383,6 +414,7 @@
 			// 保存设置
 			saveSetting(){
 				this.$utils.setStorage('closeType', this.closeType);
+				this.$utils.setStorage('numType', this.numType);
 				this.$utils.setStorage('isRemember', true)
 				ipcRenderer.send('boot', this.boot);
 				this.settingModal = false;
@@ -674,6 +706,15 @@
 					this.$emit('update-soft', true);
 			    } else if (e === 'setting'){
 					this.settingModal = true;
+					// 获取设置
+					let closeType = this.$utils.getStorage('closeType');
+					let numType = this.$utils.getStorage('numType');
+					if(closeType){
+						this.closeType = closeType;
+					}
+					if(numType){
+						this.numType = numType;
+					}
 				}
 			},
 		},

File diff ditekan karena terlalu besar
+ 400 - 389
src/renderer/components/home.vue


+ 3 - 0
src/renderer/components/update.vue

@@ -98,6 +98,9 @@
 				<el-collapse-item title="9、报错:权限受限,请以管理员权限运行软件" name="9">
 					<div>软件权限受系统限制无法运行,需要退出软件,鼠标右击软件图标以管理员权限运行一下。</div>
 				</el-collapse-item>
+				<el-collapse-item title="10、实况(Live)图下载的不全" name="10">
+					<div>实况(Live)图下载的格式为mp4,且设置同时下载任务量必须为1个,点击软件右上角菜单按钮,选择软件设置-同时下载任务量-1个</div>
+				</el-collapse-item>
 				<!-- <el-collapse-item title="10、为什么每次打开软件,需要重新登录平台账号" name="10">
 					<div>为了考虑安全性,软件在退出后会清空所有的缓存和账号信息,因此每次重新打开软件需要要求用户重新登录各个平台账号。</div>
 				</el-collapse-item> -->

+ 175 - 0
src/renderer/utils/beifen.txt

@@ -0,0 +1,175 @@
+/** 900行,任务执行完成之后 **/
+let tbLogin = true,jdLogin = true,redLogin = true;
+switch(this.menuIndex){
+	case '2': // 京东
+		if(this.jdStatus == 3){
+			jdLogin = false;
+		}
+		break;
+	case '3': // 天猫
+	case '4': // 淘宝
+		if(this.tbStatus == 3){
+			tbLogin = false;
+		}
+		break;
+	case '5': // 小红书
+		if(this.redStatus == 3){
+			redLogin = false;
+		}
+		break;
+}
+
+
+/**淘宝验证码滑动拦截代码**/
+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;
+				}
+			}
+		}
+	}
+}
+								
+								
+
+/**京东-旧规格**/
+
+if (response.headers()['content-type'] && response.headers()['content-type'].startsWith('image/')) {
+	let regex = /^https:\/\/img[0-9]+.360buyimg.com\/n/;
+	if(regex.exec(response.url())){ // 匹配符合规则的图片路径
+		let skuReg = /\/n[0-9]+\/s(60|40)x(80|40)_jfs\//;
+		if(response.url().match(skuReg) && this.settingArr.indexOf('skuImg') > -1){ // sku图片
+			let replaceStr = '/n1/s800x800_jfs/';
+			if(response.url().match(/\/n[0-9]+\/s60x80_jfs\//)){
+				replaceStr = '/n1/s750x1000_jfs/';
+			}
+			let skuImgUrl = response.url().replace(skuReg, replaceStr).replace('.avif', '');
+			if(response.url().match(skuReg))
+			jdImgInfo.skuImg.push(skuImgUrl);
+			
+			let fileName = skuImgUrl.split('/').pop();
+			if(fileName){
+				let queryIndex = fileName.indexOf('?');
+				if (queryIndex !== -1) {
+					fileName = fileName.substr(0, queryIndex);  
+				}
+				if (!fs.existsSync(urlInfo.newPath + '\\sku图')) {
+					fs.mkdirSync(urlInfo.newPath + '\\sku图');
+				}
+				let outputPath = urlInfo.newPath + '\\sku图\\' + fileName;
+				skuNum ++;
+				if(!authority && skuNum <= this.execNum){
+					await this.downloadImage(skuImgUrl, outputPath, urlInfo);
+				}
+				if(authority){
+					await this.downloadImage(skuImgUrl, outputPath, urlInfo);
+				}
+			}
+		}
+		
+		let reg = /\/n[0-9]+\/jfs\//;
+		let reg2 = /\/n[0-9]+\/s(54|50)x(54|66)_jfs\//;
+		if(response.url().match(reg) || response.url().match(reg2)){ // 主图
+			let replaceStr = '/n1/s800x800_jfs/';
+			if(response.url().match(/\/n[0-9]+\/s50x66_jfs\//)){
+				replaceStr = '/n1/s750x1000_jfs/';
+			}
+			let mainImgUrl = response.url().replace(reg, replaceStr).replace(reg2, replaceStr).replace('.avif', '');
+			jdImgInfo.mainImg.push(mainImgUrl);
+			
+			let fileName = mainImgUrl.split('/').pop();
+			if(fileName){
+				let queryIndex = fileName.indexOf('?');
+				let queryIndex2 =  fileName.indexOf('!');
+				if (queryIndex !== -1) {
+					fileName = fileName.substr(0, queryIndex);  
+				}
+				if (queryIndex2 !== -1) {
+					fileName = fileName.substr(0, queryIndex2);  
+				}
+				if (!fs.existsSync(urlInfo.newPath + '\\主图')) {
+					fs.mkdirSync(urlInfo.newPath + '\\主图');
+				}
+				let outputPath = urlInfo.newPath + '\\主图\\' + fileName;
+				mainNum ++;
+				if(!authority && mainNum <= this.execNum){
+					await this.downloadImage(mainImgUrl, outputPath, urlInfo);
+				}
+				if(authority){
+					await this.downloadImage(mainImgUrl, outputPath, urlInfo);
+				}
+				
+			}
+			
+		}
+	}
+}
+
+
+/**小红书旧版不显示视频的时候加载**/
+let noteImg = await page.$$('img[class^=note-slider-img]');
+if(noteImg.length == 0){
+	let refreshImg = await page.$$('.xgplayer-error-refresh');
+	let startImg = await page.$$('.xgplayer-start');
+	console.log(refreshImg, startImg);
+	//点击播放生成视频
+	if(startImg.length > 0){
+		await page.waitForSelector('.xgplayer-start', { visible: true });
+		await page.click('.xgplayer-start');
+	}else{
+		await page.waitForSelector('.xgplayer-error-refresh', { visible: true });
+		await page.click('.xgplayer-error-refresh');
+		await page.click('.xgplayer-error-refresh');
+		await page.click('.xgplayer-error-refresh');
+	}
+}

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini