From b8acfdbf7bc371f2c91ff33c0ea85f1db8b43410 Mon Sep 17 00:00:00 2001 From: Fatpandac <30423976+Fatpandac@users.noreply.github.com> Date: Fri, 31 Dec 2021 12:36:51 +0800 Subject: [PATCH] =?UTF-8?q?Add(route):=20add=20=E4=B8=9C=E7=BD=91=20(#8785?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/traditional-media.md | 12 +++++ lib/v2/oncc/index.js | 83 +++++++++++++++++++++++++++++++ lib/v2/oncc/maintainer.js | 3 ++ lib/v2/oncc/radar.js | 37 ++++++++++++++ lib/v2/oncc/router.js | 3 ++ lib/v2/oncc/templates/article.art | 2 + 6 files changed, 140 insertions(+) create mode 100644 lib/v2/oncc/index.js create mode 100644 lib/v2/oncc/maintainer.js create mode 100644 lib/v2/oncc/radar.js create mode 100644 lib/v2/oncc/router.js create mode 100644 lib/v2/oncc/templates/article.art diff --git a/docs/traditional-media.md b/docs/traditional-media.md index 1c138a28a..df3531a6b 100644 --- a/docs/traditional-media.md +++ b/docs/traditional-media.md @@ -634,6 +634,18 @@ IT・科学 tech_science +## 东网 + + + +频道参数可以从官网的地址中获取,如: + +`https://hk.on.cc/hk/finance/index_cn.html` 对应 `/oncc/zh-hans/finance` + +`https://hk.on.cc/hk/finance/index.html` 对应 `/oncc/zh-hant/finance` + + + ## 読売新聞 ### 新聞 diff --git a/lib/v2/oncc/index.js b/lib/v2/oncc/index.js new file mode 100644 index 000000000..8214931ad --- /dev/null +++ b/lib/v2/oncc/index.js @@ -0,0 +1,83 @@ +const got = require('@/utils/got'); +const cheerio = require('cheerio'); +const { parseDate } = require('@/utils/parse-date'); +const path = require('path'); +const { art } = require('@/utils/render'); + +const rootUrl = 'https://hk.on.cc'; + +const languageMap = { + 'zh-hans': '_cn', + 'zh-hant': '', +}; + +const channelMap = { + news: { + 'zh-hans': '港澳', + 'zh-hant': '港澳', + }, + cnnews: { + 'zh-hans': '两岸', + 'zh-hant': '兩岸', + }, + intnews: { + 'zh-hans': '国际', + 'zh-hant': '國際', + }, + commentary: { + 'zh-hans': '评论', + 'zh-hant': '評論', + }, + finance: { + 'zh-hans': '产经', + 'zh-hant': '產經', + }, +}; + +module.exports = async (ctx) => { + const language = ctx.params.language; + const channel = ctx.params.channel ?? 'news'; + const newsUrl = `${rootUrl}/hk/${channel}/index${languageMap[language]}.html`; + + const response = await got.get(newsUrl); + const $ = cheerio.load(response.data); + const list = $('#focusNews > div.focusItem[type=article]') + .map((_, item) => { + const title = $(item).find('div.focusTitle > span').text(); + const link = rootUrl + $(item).find('a:nth-child(1)').attr('href'); + const pubDate = parseDate($(item).attr('edittime'), 'YYYYMMDDHHmmss'); + + return { + title, + link, + pubDate, + }; + }) + .get(); + + const items = await Promise.all( + list.map(async (item) => { + const desc = await ctx.cache.tryGet(item.link, async () => { + const detailResponse = await got.get(item.link); + const $ = cheerio.load(detailResponse.data); + const imageUrl = rootUrl + $('img').eq(0).attr('src'); + const content = $('div.breakingNewsContent').html(); + const description = art(path.join(__dirname, 'templates/article.art'), { + imageUrl, + content, + }); + + return description; + }); + item.description = desc; + + return item; + }) + ); + + ctx.state.data = { + title: `東網 - ${channelMap[channel][language]}`, + link: newsUrl, + item: items, + }; +}; diff --git a/lib/v2/oncc/maintainer.js b/lib/v2/oncc/maintainer.js new file mode 100644 index 000000000..b278b5baa --- /dev/null +++ b/lib/v2/oncc/maintainer.js @@ -0,0 +1,3 @@ +module.exports = { + '/:language/:channel?': ['Fatpandac'], +}; diff --git a/lib/v2/oncc/radar.js b/lib/v2/oncc/radar.js new file mode 100644 index 000000000..397dcd096 --- /dev/null +++ b/lib/v2/oncc/radar.js @@ -0,0 +1,37 @@ +module.exports = { + 'on.cc': { + _name: '东网', + hk: [ + { + title: '港澳', + docs: 'https://docs.rsshub.app/other.html#guo-jia-zi-ran-ke-xue-ji-jin-wei-yuan-hui', + source: ['/hk/news/index.html', '/hk/news/index_cn.html'], + target: '/oncc/zh-hans/news', + }, + { + title: '两岸', + docs: 'https://docs.rsshub.app/other.html#guo-jia-zi-ran-ke-xue-ji-jin-wei-yuan-hui', + source: ['/hk/cnnews/index.html', '/hk/cnnews/index_cn.html'], + target: '/oncc/zh-hans/cnnews', + }, + { + title: '国际', + docs: 'https://docs.rsshub.app/other.html#guo-jia-zi-ran-ke-xue-ji-jin-wei-yuan-hui', + source: ['/hk/intnews/index.html', '/hk/intnews/index_cn.html'], + target: '/oncc/zh-hans/intnews', + }, + { + title: '评论', + docs: 'https://docs.rsshub.app/other.html#guo-jia-zi-ran-ke-xue-ji-jin-wei-yuan-hui', + source: ['/hk/commentary/index.html', '/hk/commentary/index_cn.html'], + target: '/oncc/zh-hans/commentary', + }, + { + title: '产经', + docs: 'https://docs.rsshub.app/other.html#guo-jia-zi-ran-ke-xue-ji-jin-wei-yuan-hui', + source: ['/hk/finance/index.html', '/hk/finance/index_cn.html'], + target: '/oncc/zh-hans/finance', + }, + ], + }, +}; diff --git a/lib/v2/oncc/router.js b/lib/v2/oncc/router.js new file mode 100644 index 000000000..ab1e01461 --- /dev/null +++ b/lib/v2/oncc/router.js @@ -0,0 +1,3 @@ +module.exports = function (router) { + router.get('/:language/:channel?', require('./index')); +}; diff --git a/lib/v2/oncc/templates/article.art b/lib/v2/oncc/templates/article.art new file mode 100644 index 000000000..1fd784e87 --- /dev/null +++ b/lib/v2/oncc/templates/article.art @@ -0,0 +1,2 @@ + +{{ content }}