diff --git a/docs/traditional-media.md b/docs/traditional-media.md index 10e929b8a7..5dbcb95bf1 100644 --- a/docs/traditional-media.md +++ b/docs/traditional-media.md @@ -1376,6 +1376,18 @@ category 对应的关键词有 +## 聯合新聞網 + +### 即時新聞 + + + +| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 11 | 12 | 13 | 99 | +| -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | --- | +| 精選 | 要聞 | 社會 | 地方 | 兩岸 | 國際 | 財經 | 運動 | 娛樂 | 生活 | 股市 | 文教 | 數位 | 不分類 | + + + ## 路透社 ::: warning 迁移说明 diff --git a/lib/v2/udn/breaking-news.js b/lib/v2/udn/breaking-news.js new file mode 100644 index 0000000000..9f3ee3c94c --- /dev/null +++ b/lib/v2/udn/breaking-news.js @@ -0,0 +1,85 @@ +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(/