63 lines
1.7 KiB
JavaScript
63 lines
1.7 KiB
JavaScript
|
const puppeteer = require("puppeteer")
|
|||
|
const { seep } = require("../utils.js");
|
|||
|
|
|||
|
async function getListData(url) {
|
|||
|
const browser = await puppeteer.launch({
|
|||
|
// 关闭无头模式,方便我们看到这个无头浏览器执行的过程
|
|||
|
headless: false,
|
|||
|
timeout: 0 // 默认超时为30秒,设置为0则表示不设置超时
|
|||
|
});
|
|||
|
const page = await browser.newPage();
|
|||
|
page.setViewport({
|
|||
|
width: 1376,
|
|||
|
height: 768,
|
|||
|
});
|
|||
|
await page.goto(url, {});
|
|||
|
let list = await page.evaluate(() => {
|
|||
|
return window.__PINIA__.episodeMain
|
|||
|
})
|
|||
|
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 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
|
|||
|
}
|
|||
|
|
|||
|
module.exports = {
|
|||
|
getListData
|
|||
|
}
|