From ccd6b3a26b88b25b7a3de5c64b741aef2caeadf7 Mon Sep 17 00:00:00 2001 From: Fatpandac <1779196284@qq.com> Date: Thu, 17 Feb 2022 20:10:39 +0800 Subject: [PATCH] fix(route): nogizaka46/news website layout update and refactor to V2 (#9131) --- docs/new-media.md | 2 +- lib/router.js | 1 - lib/routes/nogizaka46/news.js | 35 --------------------------------- lib/v2/nogizaka46/maintainer.js | 3 +++ lib/v2/nogizaka46/news.js | 30 ++++++++++++++++++++++++++++ lib/v2/nogizaka46/radar.js | 13 ++++++++++++ lib/v2/nogizaka46/router.js | 3 +++ 7 files changed, 50 insertions(+), 37 deletions(-) delete mode 100644 lib/routes/nogizaka46/news.js create mode 100644 lib/v2/nogizaka46/maintainer.js create mode 100644 lib/v2/nogizaka46/news.js create mode 100644 lib/v2/nogizaka46/radar.js create mode 100644 lib/v2/nogizaka46/router.js diff --git a/docs/new-media.md b/docs/new-media.md index e09f9fad7..8e7e7eafa 100644 --- a/docs/new-media.md +++ b/docs/new-media.md @@ -1191,7 +1191,7 @@ Supported sub-sites: ### 乃木坂 46 新闻 - + ### 欅坂 46 新闻 diff --git a/lib/router.js b/lib/router.js index 57c9700a8..16d34f373 100644 --- a/lib/router.js +++ b/lib/router.js @@ -1960,7 +1960,6 @@ router.get('/kaiyan/index', lazyloadRouteHandler('./routes/kaiyan/index')); // 坂道系列资讯 // 坂道系列官网新闻 -router.get('/nogizaka46/news', lazyloadRouteHandler('./routes/nogizaka46/news')); router.get('/keyakizaka46/news', lazyloadRouteHandler('./routes/keyakizaka46/news')); router.get('/hinatazaka46/news', lazyloadRouteHandler('./routes/hinatazaka46/news')); router.get('/keyakizaka46/blog', lazyloadRouteHandler('./routes/keyakizaka46/blog')); diff --git a/lib/routes/nogizaka46/news.js b/lib/routes/nogizaka46/news.js deleted file mode 100644 index 58bd4b7c6..000000000 --- a/lib/routes/nogizaka46/news.js +++ /dev/null @@ -1,35 +0,0 @@ -const got = require('@/utils/got'); -const cheerio = require('cheerio'); - -module.exports = async (ctx) => { - const response = await got({ - method: 'get', - url: 'http://www.nogizaka46.com/news/', - headers: { - Referer: 'http://www.nogizaka46.com/', - }, - }); - - const data = response.data; - const $ = cheerio.load(data); - const list = $('#news #sheet div.left div.padding ul li'); - - ctx.state.data = { - allowEmpty: true, - title: '乃木坂46官网 NEWS', - link: 'http://www.nogizaka46.com/news/', - item: - list && - list - .map((index, item) => { - item = $(item); - return { - title: item.find('.title strong a').first().text(), - description: item.find('.summary').first().text(), - link: item.find('.title strong a').attr('href'), - pubDate: item.find('.date').first().text(), - }; - }) - .get(), - }; -}; diff --git a/lib/v2/nogizaka46/maintainer.js b/lib/v2/nogizaka46/maintainer.js new file mode 100644 index 000000000..c825d22f2 --- /dev/null +++ b/lib/v2/nogizaka46/maintainer.js @@ -0,0 +1,3 @@ +module.exports = { + '/news': ['crispgm', 'Fatpandac'], +}; diff --git a/lib/v2/nogizaka46/news.js b/lib/v2/nogizaka46/news.js new file mode 100644 index 000000000..ebd141e6d --- /dev/null +++ b/lib/v2/nogizaka46/news.js @@ -0,0 +1,30 @@ +const got = require('@/utils/got'); +const { parseDate } = require('@/utils/parse-date'); + +module.exports = async (ctx) => { + const limit = ctx.query.limit ? parseInt(ctx.query.limit) : 25; + + const response = await got({ + method: 'get', + url: 'https://www.nogizaka46.com/s/n46/api/list/news', + headers: { + Referer: 'http://www.nogizaka46.com/', + }, + }); + + const data = JSON.parse(response.data.match(/res\((.*)\);/)[1]).data; + const items = data.slice(0, limit).map((item) => ({ + title: item.title, + link: item.link_url, + description: item.text, + pubDate: parseDate(item.date), + category: item.cate, + })); + + ctx.state.data = { + allowEmpty: true, + title: '乃木坂46官网 NEWS', + link: 'http://www.nogizaka46.com/news/', + item: items, + }; +}; diff --git a/lib/v2/nogizaka46/radar.js b/lib/v2/nogizaka46/radar.js new file mode 100644 index 000000000..dece9922b --- /dev/null +++ b/lib/v2/nogizaka46/radar.js @@ -0,0 +1,13 @@ +module.exports = { + 'nogizaka46.com': { + _name: '乃木坂46', + '.': [ + { + title: '新闻', + docs: 'https://docs.rsshub.app/new-media.html#ban-dao-xi-lie-guan-wang-zi-xun-nai-mu-ban-46-xin-wen', + source: ['/', '/s/n46/news/list'], + target: '/nogizaka46/news', + }, + ], + }, +}; diff --git a/lib/v2/nogizaka46/router.js b/lib/v2/nogizaka46/router.js new file mode 100644 index 000000000..69a5972f6 --- /dev/null +++ b/lib/v2/nogizaka46/router.js @@ -0,0 +1,3 @@ +module.exports = function (router) { + router.get('/news', require('./news')); +};