From 9fa248c324062c105db425ae028afd66229a421d Mon Sep 17 00:00:00 2001 From: Tony Date: Tue, 5 Jul 2022 14:46:05 -0200 Subject: [PATCH] fix(route): nmpa feed items on 3rd party site (#10146) * fix(route): nmpa feed items on 3rd party site * fix: regex unescaped . --- lib/utils/wechat-mp.js | 1 + lib/v2/gov/nmpa/generic.js | 41 ++++++++++++++++++++++---------------- 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/lib/utils/wechat-mp.js b/lib/utils/wechat-mp.js index 67916f9a08..17d3cf48b2 100644 --- a/lib/utils/wechat-mp.js +++ b/lib/utils/wechat-mp.js @@ -3,6 +3,7 @@ * * There are at least three folders which are relevant with WeChat MP (Official Account Platform / Media Platform): * lib/v2/wechat + * lib/v2/gov/npma * lib/v2/gzh360 * lib/v2/pku/nsd/gd * lib/v2/sdu/cs diff --git a/lib/v2/gov/nmpa/generic.js b/lib/v2/gov/nmpa/generic.js index a27187e807..f857a0c7ec 100644 --- a/lib/v2/gov/nmpa/generic.js +++ b/lib/v2/gov/nmpa/generic.js @@ -1,5 +1,6 @@ const cheerio = require('cheerio'); const { parseDate } = require('@/utils/parse-date'); +const { finishArticleItem } = require('@/utils/wechat-mp'); const config = require('@/config').value; const baseUrl = 'https://www.nmpa.gov.cn'; @@ -44,25 +45,31 @@ module.exports = async (ctx) => { ); const items = await Promise.all( - data.items.map((item) => - ctx.cache.tryGet(item.link, async () => { - const page = await browser.newPage(); - await page.setRequestInterception(true); - page.on('request', (request) => { - request.resourceType() === 'document' || request.resourceType() === 'script' ? request.continue() : request.abort(); - }); - await page.goto(item.link, { - waitUntil: 'domcontentloaded', - }); - await page.waitForSelector('.text'); + data.items.map((item) => { + if (/^https:\/\/www\.nmpa\.gov\.cn\//.test(item.link)) { + return ctx.cache.tryGet(item.link, async () => { + const page = await browser.newPage(); + await page.setRequestInterception(true); + page.on('request', (request) => { + request.resourceType() === 'document' || request.resourceType() === 'script' ? request.continue() : request.abort(); + }); + await page.goto(item.link, { + waitUntil: 'domcontentloaded', + }); + await page.waitForSelector('.text'); - const html = await page.evaluate(() => document.documentElement.innerHTML); - await page.close(); - const $ = cheerio.load(html); - item.description = $('.text').html(); + const html = await page.evaluate(() => document.documentElement.innerHTML); + await page.close(); + const $ = cheerio.load(html); + item.description = $('.text').html(); + return item; + }); + } else if (/^https:\/\/mp\.weixin\.qq\.com\//.test(item.link)) { + return finishArticleItem(ctx, item); + } else { return item; - }) - ) + } + }) ); await browser.close();