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'));
+};