qiushang 1 anno fa
parent
commit
b8f98864b7
1 ha cambiato i file con 100 aggiunte e 9 eliminazioni
  1. 100 9
      src/renderer/components/home.vue

+ 100 - 9
src/renderer/components/home.vue

@@ -13,8 +13,8 @@
 						<el-submenu index="a">
 							<template slot="title"><i class="el-icon-picture"></i>图片下载</template>
 							<el-menu-item index="1">阿里巴巴</el-menu-item>
-							<el-menu-item index="2">抖音</el-menu-item>
-							<el-menu-item index="3">其他网址</el-menu-item>
+							<el-menu-item index="2">京东</el-menu-item>
+							<el-menu-item index="10">其他网址</el-menu-item>
 						</el-submenu>
 						
 						<el-submenu index="b">
@@ -35,6 +35,7 @@
 							<div class="content-top" style="padding: 10px 20px;">
 								<h3>
 									<span v-if="menuIndex == '1'">阿里巴巴 - </span>
+									<span v-if="menuIndex == '2'">京东 - </span>
 									图片下载
 								</h3>
 								
@@ -75,13 +76,16 @@
 										
 										<!-- 阿里巴巴 -->
 										<template v-if="menuIndex == '1'">
-											<el-checkbox :value="true" disabled>下载主图</el-checkbox>
+											<el-checkbox :value="true" style="opacity: 0.6; cursor: not-allowed;">下载主图</el-checkbox>
 											<el-checkbox v-model="settingData.detailImg" >下载详情图</el-checkbox>
 											<el-checkbox v-model="settingData.skuImg" >下载SKU图</el-checkbox>
 											<!-- <el-checkbox v-model="settingData.commentImg" >下载评论图</el-checkbox> -->
 											<el-checkbox v-model="settingData.video" >下载视频</el-checkbox>
 										</template>
 										
+										<template v-if="menuIndex == '2'">
+											<el-button size="small" type="info" @click="accountLogin()" >检测登录状态</el-button>
+										</template>
 										
 									</el-row>
 									
@@ -142,6 +146,7 @@
 				imgSrc: '',
 				menuIndex: '1',
 				url: '',
+				jdBrowser: '', // 打开京东的浏览器
 				settingData: {
 					detailImg: true,
 					skuImg: true,
@@ -317,10 +322,10 @@
 					case '1': // 阿里巴巴
 						this.alibabaDownload();
 						break;
-					case '2': // 
-						
+					case '2': // 京东
+						this.jdDownload();
 						break;
-					case '3': // 其他网址
+					case '10': // 其他网址
 						this.normalDownload();
 						break;
 				}
@@ -406,13 +411,13 @@
 									behavior: "smooth" 
 								});
 							}, start);
-							if(start > num){
+							if(start > num || start > 500){ // 防止页面过长,滚动500次自动停止
 								clearInterval(scrollInt);
 								await browser.close();
 								this.activities.push({id: 3, content: '图片下载完成',type: 'success'});
 								this.loading = false;
 							}
-						}, 1000);
+						}, 500);
 						
 					}catch(e){
 						this.showError(e);
@@ -451,7 +456,7 @@
 									behavior: "smooth" 
 								});
 							}, start);
-							if(start > num){
+							if(start > num || start > 500){ // 防止页面过长,滚动500次自动停止
 								clearInterval(scrollInt);
 								await this.scanImg(browser, page);
 								this.loading = false;
@@ -465,6 +470,92 @@
 				})();
 			},
 			
+			// 账号登录
+			accountLogin(type){
+				(async () => {
+					try{
+						if(!this.jdBrowser){
+							this.jdBrowser = await puppeteer.launch({ headless: false });
+						}
+						const page = await this.jdBrowser.newPage();
+						await page.setViewport({ width: 1280, height: 800 });  
+						
+						page.on('response', async(response) => {
+							// 检查响应的 MIME 类型是否以 'image/' 开头
+							if (response.headers()['content-type'] && response.headers()['content-type'].startsWith('application/json')) {  
+								
+									console.log(response.url(), response.headers()['content-type']);
+							}
+						});
+						
+						//await page.setJavaScriptEnabled(false);
+						// await page.goto('https://www.jd.com/', {waitUntil : 'networkidle2'});
+						await page.goto('https://item.jd.com/10056666299521.html', {waitUntil : 'networkidle2'});
+						
+						page.on('request', request => {  
+							console.log(request);
+						    // 检查请求的 URL 是否符合可能导致跳转的条件  
+						    // if (/* 某些条件,比如 URL 包含特定字符串 */) {  
+						    //     request.abort(); // 取消请求  
+						    // } else {  
+						    //     request.continue(); // 允许请求继续  
+						    // }  
+						});  
+						await page.setRequestInterception(true);
+						
+						
+
+						
+						let loginResult = await page.evaluate(() => {
+							if(document.querySelector('.link-login')){
+								document.querySelector('.link-login').click();
+								return false;
+							}else{
+								return true;
+							}
+						});
+						
+						if(loginResult){ // 登录成功
+							//const cookies = await page.cookies('https://www.jd.com/');
+							//await page.setViewport({ width: 1, height: 1 });  
+							console.log('登录成功');
+						}else{ //登录失败
+							console.log('登录失败');
+						}
+						
+						// let scrollHeight = pageInfo.scrollHeight;
+						// let cHeight = pageInfo.cHeight;
+						
+						// let num = Math.ceil(scrollHeight / cHeight);
+						// let start = -1;
+						// let scrollInt = setInterval(async() => {
+						// 	start ++;
+						// 	await page.evaluate((start) => {
+						// 		let cHeight = document.documentElement.clientHeight;
+						// 		window.scrollTo({
+						// 			top: cHeight * start, 
+						// 			behavior: "smooth" 
+						// 		});
+						// 	}, start);
+						// 	if(start > num || start > 500){ // 防止页面过长,滚动500次自动停止
+						// 		clearInterval(scrollInt);
+						// 		await this.scanImg(this.jdBrowser, page);
+						// 		this.loading = false;
+						// 	}
+						// }, 500);
+						
+						
+					}catch(e){
+						this.showError(e);
+					}
+				})();
+			},
+			
+			// 京东下载
+			jdDownload(){
+				
+			},
+			
 			
 			// 扫描并下载图片
 			async scanImg(browser, page){