UNPKG

jarviscrawlercore

Version:
151 lines (116 loc) 3.33 kB
// const {sleep} = require('../utils'); const {WaitAllResponse} = require('../waitallresponse'); const log = require('../log'); const {disableDownloadOthers} = require('../page.utils'); // const {parseID} = require('./utils'); /** * p6vdyMovie - 6vdy movie * @param {object} browser - browser * @param {string} urlPage - url for page * @param {number} timeout - timeout in microseconds * @return {object} ret - {error, ret} */ async function p6vdyMovie(browser, urlPage, timeout) { let awaiterr = undefined; const page = await browser.newPage(); await disableDownloadOthers(page); const waitAllResponse = new WaitAllResponse(page); await page .setViewport({ width: 1280, height: 600, deviceScaleFactor: 1, }) .catch((err) => { awaiterr = err; }); if (awaiterr) { log.error('p6vdyMovie.setViewport', awaiterr); await page.close(); return {error: awaiterr.toString()}; } const baseurl = urlPage; let noretry = false; page.on('response', (res) => { if (res.url() == baseurl) { if (res.status() >= 400 && res.status() < 500) { noretry = true; } } }); await page .goto(baseurl, { timeout: timeout, }) .catch((err) => { awaiterr = err; }); if (awaiterr) { log.error('p6vdyMovie.goto', awaiterr); await page.close(); return {error: awaiterr.toString()}; } const isdone = await waitAllResponse.waitDone(timeout); if (!isdone) { const err = new Error('p6vdyMovie.waitDone timeout'); log.error('p6vdyMovie.waitDone', err); await page.close(); return {error: err.toString()}; } const ret = await page .$$eval('.widget.box.row', (eles) => { const ret = {lst: []}; const title = document.title; const arrtitle = title.split('-6v'); ret.fullname = arrtitle[0]; if (eles.length > 0) { // const lst = []; for (let i = 0; i < eles.length; ++i) { const lsta = eles[i].getElementsByTagName('a'); if ( lsta.length > 0 && lsta[0].href.indexOf('/e/DownSys/play/?') > 0 ) { for (let j = 0; j < lsta.length; ++j) { const curnode = { name: lsta[j].innerText, url: lsta[0].href, }; ret.lst.push(curnode); } if (ret.lst.length > 0) { break; } } } return ret; } return ret; }) .catch((err) => { awaiterr = err; }); if (awaiterr) { log.error('p6vdyMovie.$$eval .widget.box.row', awaiterr); await page.close(); return {error: awaiterr.toString()}; } if (noretry) { awaiterr = new Error('noretry:404 ' + baseurl); log.error('p6vdyMovie noretry ', awaiterr); await page.close(); return {error: awaiterr.toString()}; } await page.close(); // const ret = {lst: lst}; // for (let i = 0; i < lst.length; ++i) { // const ci = { // fullname: lst[i].name, // url: lst[i].url, // resid: parseID(lst[i].url), // }; // ret.lst.push(ci); // } return {ret: ret}; } exports.p6vdyMovie = p6vdyMovie;