const got = require('@/utils/got'); const { parseDate } = require('@/utils/parse-date'); const timezone = require('@/utils/timezone'); const cheerio = require('cheerio'); const { art } = require('@/utils/render'); const path = require('path'); module.exports = async (ctx) => { const id = ctx.params.id; const link = `/news/breaknews/1/${id}#breaknews`; const name = await getLinkName(ctx, link); const rootUrl = 'https://udn.com'; const response = await got(`${rootUrl}/api/more?page=1&channelId=1&cate_id=${id}&type=breaknews`); const items = await Promise.all( response.data.lists.map((item) => { let link = item.titleLink.indexOf('http://') === 0 || item.titleLink.indexOf('https://') === 0 ? item.titleLink : `${rootUrl}${item.titleLink}`; const linkUrl = new URL(link); // cleanup query paramter linkUrl.query = linkUrl.search = ''; link = linkUrl.toString(); return ctx.cache.tryGet(link, async () => { let result = await got(link); // VIP article requires redirection // e.g. https://udn.com/news/story/7331/6576320 const vip = result.data.match(/