mirror of
https://github.com/DIYgod/RSSHub.git
synced 2025-12-15 01:30:33 +08:00
@@ -133,6 +133,7 @@ router.get('/juejin/posts/:id', require('./routes/juejin/posts'));
|
|||||||
router.get('/juejin/collections/:userId', require('./routes/juejin/favorites'));
|
router.get('/juejin/collections/:userId', require('./routes/juejin/favorites'));
|
||||||
router.get('/juejin/collection/:collectionId', require('./routes/juejin/collection'));
|
router.get('/juejin/collection/:collectionId', require('./routes/juejin/collection'));
|
||||||
router.get('/juejin/shares/:userId', require('./routes/juejin/shares'));
|
router.get('/juejin/shares/:userId', require('./routes/juejin/shares'));
|
||||||
|
router.get('/juejin/column/:id', require('./routes/juejin/column'));
|
||||||
|
|
||||||
// 自如
|
// 自如
|
||||||
router.get('/ziroom/room/:city/:iswhole/:room/:keyword', require('./routes/ziroom/room'));
|
router.get('/ziroom/room/:city/:iswhole/:room/:keyword', require('./routes/ziroom/room'));
|
||||||
|
|||||||
31
lib/routes/juejin/column.js
Normal file
31
lib/routes/juejin/column.js
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
const got = require('@/utils/got');
|
||||||
|
const util = require('./utils');
|
||||||
|
|
||||||
|
module.exports = async (ctx) => {
|
||||||
|
const { id } = ctx.params;
|
||||||
|
const detail = await got({
|
||||||
|
method: 'get',
|
||||||
|
url: `https://api.juejin.cn/content_api/v1/column/detail?column_id=${id}`,
|
||||||
|
});
|
||||||
|
const response = await got({
|
||||||
|
method: 'post',
|
||||||
|
url: 'https://api.juejin.cn/content_api/v1/column/articles_cursor',
|
||||||
|
json: {
|
||||||
|
column_id: id,
|
||||||
|
limit: 20,
|
||||||
|
cursor: '0',
|
||||||
|
sort: 0,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
const { data } = response.data;
|
||||||
|
const detailData = detail.data.data;
|
||||||
|
const columnName = detailData && detailData.column_version && detailData.column_version.title;
|
||||||
|
const resultItems = await util.ProcessFeed(data, ctx.cache);
|
||||||
|
|
||||||
|
ctx.state.data = {
|
||||||
|
title: `掘金专栏-${columnName}`,
|
||||||
|
link: `https://juejin.cn/column/${id}`,
|
||||||
|
description: `掘金专栏-${columnName}`,
|
||||||
|
item: resultItems,
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -1,4 +1,6 @@
|
|||||||
const got = require('@/utils/got');
|
const got = require('@/utils/got');
|
||||||
|
const { parseDate } = require('@/utils/parse-date');
|
||||||
|
const timezone = require('@/utils/timezone');
|
||||||
const cheerio = require('cheerio');
|
const cheerio = require('cheerio');
|
||||||
|
|
||||||
// 加载文章页
|
// 加载文章页
|
||||||
@@ -30,14 +32,13 @@ async function load(link) {
|
|||||||
const ProcessFeed = async (list, caches) =>
|
const ProcessFeed = async (list, caches) =>
|
||||||
await Promise.all(
|
await Promise.all(
|
||||||
list.map(async (item) => {
|
list.map(async (item) => {
|
||||||
// 解析时间,补偿时区offset
|
const pubdate = timezone(parseDate(parseInt(item.article_info.ctime) * 1000), +8);
|
||||||
const pubdate = new Date(parseInt(item.article_info.ctime) * 1000 - 8 * 60 * 60 * 1000);
|
|
||||||
const link = `https://juejin.cn/post/${item.article_id}`;
|
const link = `https://juejin.cn/post/${item.article_id}`;
|
||||||
// 列表上提取到的信息
|
// 列表上提取到的信息
|
||||||
const single = {
|
const single = {
|
||||||
title: item.article_info.title,
|
title: item.article_info.title,
|
||||||
description: `${(item.content || item.summaryInfo || '无描述').replace(/[\x00-\x08\x0b-\x0c\x0e-\x1f\x7f]/g, '')}`,
|
description: `${(item.content || item.summaryInfo || '无描述').replace(/[\x00-\x08\x0b-\x0c\x0e-\x1f\x7f]/g, '')}`,
|
||||||
pubDate: pubdate.toUTCString(),
|
pubDate: pubdate,
|
||||||
author: item.author_user_info.user_name,
|
author: item.author_user_info.user_name,
|
||||||
link,
|
link,
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user