From 4c4b98eda5277a08d194c2a3942e5c3763391ad0 Mon Sep 17 00:00:00 2001 From: Ethan Shen <42264778+nczitzk@users.noreply.github.com> Date: Mon, 23 Jan 2023 01:27:55 +0800 Subject: [PATCH] fix(route): Sky Sports pubDate (#11668) --- docs/en/new-media.md | 2 +- lib/router.js | 2 +- lib/v2/skysports/maintainer.js | 3 +++ lib/{routes => v2}/skysports/news.js | 18 ++++++++++-------- lib/v2/skysports/radar.js | 13 +++++++++++++ lib/v2/skysports/router.js | 3 +++ 6 files changed, 31 insertions(+), 10 deletions(-) create mode 100644 lib/v2/skysports/maintainer.js rename lib/{routes => v2}/skysports/news.js (76%) create mode 100644 lib/v2/skysports/radar.js create mode 100644 lib/v2/skysports/router.js diff --git a/docs/en/new-media.md b/docs/en/new-media.md index c64118430..c5aed9db1 100644 --- a/docs/en/new-media.md +++ b/docs/en/new-media.md @@ -692,7 +692,7 @@ Compared to the official one, this feed: ### News -\ + ## Soomal diff --git a/lib/router.js b/lib/router.js index db3d4f83f..66165ba01 100644 --- a/lib/router.js +++ b/lib/router.js @@ -3957,7 +3957,7 @@ router.get('/partnershiponai/resources', lazyloadRouteHandler('./routes/partners router.get('/commonapp/blog', lazyloadRouteHandler('./routes/commonapp/blog')); // Sky Sports -router.get('/skysports/news/:team', lazyloadRouteHandler('./routes/skysports/news')); +// router.get('/skysports/news/:team', lazyloadRouteHandler('./routes/skysports/news')); // Europa Press router.get('/europapress/:category?', lazyloadRouteHandler('./routes/europapress')); diff --git a/lib/v2/skysports/maintainer.js b/lib/v2/skysports/maintainer.js new file mode 100644 index 000000000..4af978b8c --- /dev/null +++ b/lib/v2/skysports/maintainer.js @@ -0,0 +1,3 @@ +module.exports = { + '/news/:team': ['nczitzk'], +}; diff --git a/lib/routes/skysports/news.js b/lib/v2/skysports/news.js similarity index 76% rename from lib/routes/skysports/news.js rename to lib/v2/skysports/news.js index b03bb8cde..ded970e47 100644 --- a/lib/routes/skysports/news.js +++ b/lib/v2/skysports/news.js @@ -7,6 +7,7 @@ module.exports = async (ctx) => { const rootUrl = 'https://www.skysports.com'; const currentUrl = `${rootUrl}/${team}-news`; + const response = await got({ method: 'get', url: currentUrl, @@ -14,19 +15,19 @@ module.exports = async (ctx) => { const $ = cheerio.load(response.data); - const list = $('.news-list__headline-link') - .map((_, item) => { + let items = $('.news-list__headline-link') + .toArray() + .map((item) => { item = $(item); return { title: item.text(), link: item.attr('href'), }; - }) - .get(); + }); - const items = await Promise.all( - list.map((item) => + items = await Promise.all( + items.map((item) => ctx.cache.tryGet(item.link, async () => { const detailResponse = await got({ method: 'get', @@ -35,10 +36,11 @@ module.exports = async (ctx) => { const content = cheerio.load(detailResponse.data); + content('.roadblock').remove(); content('.sdc-article-widget, .sdc-site-layout-sticky-region').remove(); - item.description = content('.sdc-article-body').html(); - item.pubDate = parseDate(detailResponse.data.match(/"datePublished": "(.*)","dateModified"/)[1]); + item.description = content('.sdc-article-body, .polaris-tile-group-separator').html(); + item.pubDate = parseDate(detailResponse.data.match(/"datePublished": ?"(.*)","dateModified"/)[1]); return item; }) diff --git a/lib/v2/skysports/radar.js b/lib/v2/skysports/radar.js new file mode 100644 index 000000000..da0d7abad --- /dev/null +++ b/lib/v2/skysports/radar.js @@ -0,0 +1,13 @@ +module.exports = { + 'skysports.com': { + _name: 'Sky Sports', + '.': [ + { + title: 'News', + docs: 'https://docs.rsshub.app/new-media.html#sky-sports-news', + source: ['/'], + target: (params, url) => `/skysports/news/${new URL(url).toString().match(/\/(.*)-news$/)[1]}`, + }, + ], + }, +}; diff --git a/lib/v2/skysports/router.js b/lib/v2/skysports/router.js new file mode 100644 index 000000000..456df6480 --- /dev/null +++ b/lib/v2/skysports/router.js @@ -0,0 +1,3 @@ +module.exports = function (router) { + router.get('/news/:team', require('./news')); +};