diff --git a/docs/README.md b/docs/README.md
index 6e7324a1c4..5900401ff7 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -994,6 +994,8 @@ GitHub 官方也提供了一些 RSS:
+
+
### Konachan Anime Wallpapers
::: tip 提示
diff --git a/router.js b/router.js
index 1cedf0941e..ea92b3578d 100644
--- a/router.js
+++ b/router.js
@@ -210,6 +210,7 @@ router.get('/jandan/:sub_model', require('./routes/jandan/pic'));
// 喷嚏
router.get('/dapenti/tugua', require('./routes/dapenti/tugua'));
+router.get('/dapenti/subject/:id', require('./routes/dapenti/subject'));
// Dockone
router.get('/dockone/weekly', require('./routes/dockone/weekly'));
diff --git a/routes/dapenti/subject.js b/routes/dapenti/subject.js
new file mode 100644
index 0000000000..4b3f37a548
--- /dev/null
+++ b/routes/dapenti/subject.js
@@ -0,0 +1,5 @@
+const utils = require('./utils');
+
+module.exports = async (ctx) => {
+ ctx.state.data = await utils.parseFeed({ subjectid: ctx.params.id });
+};
diff --git a/routes/dapenti/tugua.js b/routes/dapenti/tugua.js
index 264a5be014..d0f597f780 100644
--- a/routes/dapenti/tugua.js
+++ b/routes/dapenti/tugua.js
@@ -1,58 +1,5 @@
-const axios = require('../../utils/axios');
-const cheerio = require('cheerio');
-const iconv = require('iconv-lite');
+const utils = require('./utils');
module.exports = async (ctx) => {
- const listRes = await axios({
- method: 'get',
- url: 'https://www.dapenti.com/blog/blog.asp?name=xilei&subjectid=70',
- headers: {
- Referer: 'https://www.dapenti.com/blog/blog.asp?name=xilei&subjectid=70',
- },
- // 喷嚏网编码为GBK,需要转码
- // 转码需要设定返回数据的格式,其可选项是arraybuffer,blob,document,json,text,stream
- // 默认为json
- responseType: 'arraybuffer',
- });
- // 转码
- const data = iconv.decode(listRes.data, 'gb2312');
- const $ = cheerio.load(data);
- // 只取最近的三个图卦,取全文rss
- const list = $('li', 'ul')
- .slice(0, 3)
- .get();
-
- const result_item = await Promise.all(
- list.map(async (item) => {
- const el = $(item);
- const url = `https://www.dapenti.com/blog/${el.find('a').attr('href')}`;
- const original_data = await axios({
- method: 'get',
- url: url,
- headers: {
- Referer: url,
- },
- responseType: 'arraybuffer',
- });
- const convert_data = iconv.decode(original_data.data, 'gbk');
- const detail_data = cheerio
- .load(convert_data, {
- decodeEntities: false,
- })('div[class="oblog_text"]')
- .html();
- const single = {
- title: el.text(),
- description: detail_data,
- link: url,
- };
- return Promise.resolve(single);
- })
- );
-
- ctx.state.data = {
- title: '喷嚏图卦',
- link: 'https://www.dapenti.com/blog/blog.asp?name=xilei&subjectid=70',
- description: '喷嚏图卦',
- item: result_item,
- };
+ ctx.state.data = await utils.parseFeed({ subjectid: 70 });
};
diff --git a/routes/dapenti/utils.js b/routes/dapenti/utils.js
new file mode 100644
index 0000000000..b02253cccd
--- /dev/null
+++ b/routes/dapenti/utils.js
@@ -0,0 +1,60 @@
+const axios = require('../../utils/axios');
+const cheerio = require('cheerio');
+const iconv = require('iconv-lite');
+
+module.exports = {
+ parseFeed: async ({ subjectid }) => {
+ const url = `https://www.dapenti.com/blog/blog.asp?name=xilei&subjectid=${subjectid}`;
+ const listRes = await axios({
+ method: 'get',
+ url,
+ headers: {
+ Referer: url,
+ },
+ // 喷嚏网编码为GBK,需要转码
+ // 转码需要设定返回数据的格式,其可选项是arraybuffer,blob,document,json,text,stream
+ // 默认为json
+ responseType: 'arraybuffer',
+ });
+ // 转码
+ const data = iconv.decode(listRes.data, 'gb2312');
+ const $ = cheerio.load(data);
+ // 只取最近的三个,取全文rss
+ const list = $('li', 'ul')
+ .slice(0, 3)
+ .get();
+
+ const result_item = await Promise.all(
+ list.map(async (item) => {
+ const el = $(item);
+ const url = `https://www.dapenti.com/blog/${el.find('a').attr('href')}`;
+ const original_data = await axios({
+ method: 'get',
+ url: url,
+ headers: {
+ Referer: url,
+ },
+ responseType: 'arraybuffer',
+ });
+ const convert_data = iconv.decode(original_data.data, 'gbk');
+ const detail_data = cheerio
+ .load(convert_data, {
+ decodeEntities: false,
+ })('div[class="oblog_text"]')
+ .html();
+ const single = {
+ title: el.text(),
+ description: detail_data,
+ link: url,
+ };
+ return Promise.resolve(single);
+ })
+ );
+
+ return {
+ title: `喷嚏-${subjectid}`,
+ link: url,
+ item: result_item,
+ };
+ },
+};