const express = require('express') const { GraphQLClient, gql } = require("graphql-request"); const request = require('request'); const fs = require('fs'); const path = require('path'); const app = express() const port = 3000 const url = "https://www.kuaishou.com/graphql"; var pcursor = ""; var userId = ""; var feeds = []; var index = 0; const client = new GraphQLClient(url) app.get('/down', (req, res) => { userId = req.query.id; getFeeds() res.end('Hello World!') }); async function getFeeds() { const query = gql` query visionProfilePhotoList($pcursor: String, $userId: String, $page: String, $webPageArea: String) { visionProfilePhotoList(pcursor: $pcursor, userId: $userId, page: $page,webPageArea: $webPageArea) { result,llsid,webPageArea,feeds { type,author { id,name,following,headerUrl,headerUrls { cdn,url } }, tags { type,name }, photo { id,duration,caption,likeCount,realLikeCount,coverUrl,coverUrls { cdn,url }, photoUrls { cdn,url }, photoUrl,liked,timestamp,expTag,animatedCoverUrl,stereoType,videoRatio,profileUserTopPhoto }, canAddComment,currentPcursor,llsid,status }, hostName,pcursor } } ` const variables = { pcursor: pcursor, userId: userId, page: 'profile' }; const requestHeaders = { Cookie: 'kpf=PC_WEB; kpn=KUAISHOU_VISION; clientid=3; did=web_cf504812c13b0458cbdcc5bc9ea39691; client_key=65890b29; userId=58344290; kuaishou.server.web_st=ChZrdWFpc2hvdS5zZXJ2ZXIud2ViLnN0EqABq_TLWokR1HCFOInz6xuXy_kvuyQzzFhSSHR6_VuGW5G8r7X0I7jaXdIsvNLtzMihRfZy3IC6ZuErdyrv9JpRcK-I1orA8PsLE5yjof_RUiU85_sdhL_6PHbQY-gBM9-5SGcguwtpmc6gGpP6ztlEeucgq4S3KC668-TGkcoNATOo_JmyYuf1jvjxaHtwe1dznn-qQYr1ypIHiwzl00MKRBoSnIqSq99L0mk4jolsseGdcwiNIiC82HgSYpfCs7fFoo9D2LxFDjCTkWKnva615o7eqi8GgSgFMAE; kuaishou.server.web_ph=ccabd46f69a02c96deaa4092dc0d1595c15e', Host: "www.kuaishou.com", Origin: "https://www.kuaishou.com", Referer: "https://www.kuaishou.com/profile/3x3f8rfq39drzey", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36" } const { visionProfilePhotoList } = await client.request(query, variables, requestHeaders) pcursor = visionProfilePhotoList.pcursor; feeds = visionProfilePhotoList.feeds; downVideo() } function downVideo() { if (!fs.existsSync(`mp4/${userId}`)) { fs.mkdirSync(path.join(__dirname, `/mp4/${userId}`), 0o777) } request(feeds[index].photo.photoUrl).pipe(fs.createWriteStream(path.join(__dirname, `/mp4/${userId}/${feeds[index].photo.id}.mp4`))) index += 1; if (index < feeds.length) { downVideo() } else { index = 0; feeds = []; if (pcursor != "no_more") { getFeeds(); } } } app.listen(port, () => { console.log(`you app is run http://127.0.0.1:${port}`); });