mirror of
https://github.com/DIYgod/RSSHub.git
synced 2025-12-12 16:20:27 +08:00
37 lines
1.4 KiB
JavaScript
37 lines
1.4 KiB
JavaScript
const cheerio = require('cheerio');
|
|
const { baseUrl, parseList, parseItems, getCookie, setCookies } = require('./utils');
|
|
|
|
module.exports = async (ctx) => {
|
|
const { channel } = ctx.params;
|
|
const pageUrl = `${baseUrl}/masterChannel.action`;
|
|
|
|
const browser = await require('@/utils/puppeteer')();
|
|
const cookie = await getCookie(browser, ctx.cache.tryGet);
|
|
const page = await browser.newPage();
|
|
await page.setRequestInterception(true);
|
|
page.on('request', (request) => {
|
|
request.resourceType() === 'document' || request.resourceType() === 'script' ? request.continue() : request.abort();
|
|
});
|
|
await setCookies(page, cookie, 'cw.com.tw');
|
|
await page.goto(`${pageUrl}?idMasterChannel=${channel}`, {
|
|
waitUntil: 'domcontentloaded',
|
|
});
|
|
|
|
const response = await page.evaluate(() => document.documentElement.innerHTML);
|
|
await page.close();
|
|
const $ = cheerio.load(response);
|
|
|
|
const list = parseList($, ctx.query.limit ? Number(ctx.query.limit) : 12);
|
|
const items = await parseItems(list, browser, ctx.cache.tryGet);
|
|
|
|
await browser.close();
|
|
|
|
ctx.state.data = {
|
|
title: $('head title').text(),
|
|
description: $('meta[name=description]').attr('content'),
|
|
image: `${baseUrl}/assets_new/img/fbshare.jpg`,
|
|
language: $('meta[property="og:locale"]').attr('content'),
|
|
item: items,
|
|
};
|
|
};
|