108 lines
3.2 KiB
JavaScript
108 lines
3.2 KiB
JavaScript
const puppeteer = require("puppeteer")
|
||
const { seep, spawn } = require("../utils.js");
|
||
// 无头浏览器模式 暂时禁用
|
||
async function getQqListDataBack(url) {
|
||
const browser = await puppeteer.launch({
|
||
// 关闭无头模式,方便我们看到这个无头浏览器执行的过程
|
||
headless: false,
|
||
timeout: 0 // 默认超时为30秒,设置为0则表示不设置超时
|
||
});
|
||
try{
|
||
const page = await browser.newPage();
|
||
page.setViewport({
|
||
width: 1376,
|
||
height: 768,
|
||
});
|
||
await page.goto(url, {});
|
||
let list = await page.evaluate(() => {
|
||
return window.__PINIA__.episodeMain
|
||
})
|
||
// let qb = await page.$$(".b-btn--round")
|
||
await page.$$eval(".b-btn--round", (list) => {
|
||
console.log(list)
|
||
for (let i of list) {
|
||
if (i && i.innerText) {
|
||
if ("全部" === i.innerText.trim()) {
|
||
i.click()
|
||
}
|
||
}
|
||
}
|
||
})
|
||
for (let i of list.listData[0].tabs) {
|
||
let text = i.text
|
||
let more = await page.$(".b-tab__more")
|
||
more && more.click()
|
||
await page.$$eval(".b-tab__item", (list, text) => {
|
||
console.log(list)
|
||
for (let i of list) {
|
||
if (i && i.innerText) {
|
||
if (text == i.innerText.trim()) {
|
||
i.click()
|
||
}
|
||
}
|
||
}
|
||
}, text)
|
||
await page.$$eval(".b-tag-list__tag", (list, text) => {
|
||
console.log(list)
|
||
for (let i of list) {
|
||
if (i && i.innerText) {
|
||
if (text == i.innerText.trim()) {
|
||
i.click()
|
||
}
|
||
}
|
||
}
|
||
}, text)
|
||
await seep(1000);
|
||
}
|
||
|
||
list = await page.evaluate(() => {
|
||
return __PINIA__.episodeMain
|
||
})
|
||
|
||
list = list.listData[0].list
|
||
let listData = []
|
||
for (let i of list) {
|
||
// listData.push(...i)
|
||
i.forEach(j => {
|
||
if(!j.isNoStoreWatchHistory){
|
||
listData.push(j)
|
||
}
|
||
});
|
||
}
|
||
list = []
|
||
for(let i of listData){
|
||
list.push({
|
||
title:i.fullTitle,
|
||
url:"https://v.qq.com/x/cover/" + i.cid + "/" + i.vid + ".html"
|
||
})
|
||
}
|
||
browser.close()
|
||
return list
|
||
}catch{
|
||
browser.close()
|
||
return []
|
||
}
|
||
|
||
}
|
||
|
||
|
||
function getQqListData(cid){
|
||
return new Promise((resolve) => {
|
||
const lux = spawn("getTencentVideoPlayList", [cid, 'vversion_name=8.2.95;', 1])
|
||
lux.stdout.on('data', (data) => {
|
||
resolve(JSON.parse(String(data)))
|
||
});
|
||
lux.stderr.on("data",(a)=>{
|
||
console.log(a)
|
||
})
|
||
lux.stdout.on("error",(err)=>{
|
||
console.log(err)
|
||
})
|
||
lux.stderr.on("error",(err)=>{
|
||
console.log(err)
|
||
})
|
||
})
|
||
}
|
||
module.exports = {
|
||
getQqListData
|
||
} |