From 170a6428d17610c6daf2e8ac4dccf227f58221b4 Mon Sep 17 00:00:00 2001 From: Sean Chao Date: Thu, 7 Jan 2021 06:53:08 +0800 Subject: [PATCH] feat: add zhihu follow timeline (#6560) --- docs/install/README.md | 5 +++++ docs/social-media.md | 9 +++++++++ lib/config.js | 3 +++ lib/router.js | 1 + lib/routes/zhihu/timeline.js | 33 +++++++++++++++++++++++++++++++++ 5 files changed, 51 insertions(+) create mode 100644 lib/routes/zhihu/timeline.js diff --git a/docs/install/README.md b/docs/install/README.md index a98da79d6..82c18370a 100644 --- a/docs/install/README.md +++ b/docs/install/README.md @@ -619,3 +619,8 @@ RSSHub 支持使用访问密钥 / 码,白名单和黑名单三种方式进行 - `DIDA365_USERNAME`: 滴答清单用户名 - `DIDA365_PASSWORD`: 滴答清单密码 + +- 知乎用户关注时间线 + + - `ZHIHU_COOKIES`: 知乎登录后的 cookie 值. + 1. 可以在知乎网页版的一些请求的请求头中找到,如 `GET /moments` 请求头中的 `cookie` 值. diff --git a/docs/social-media.md b/docs/social-media.md index e18c2d30d..d4ff76d2d 100644 --- a/docs/social-media.md +++ b/docs/social-media.md @@ -1141,3 +1141,12 @@ rule ### 知乎书店 - 知乎周刊 + +### 用户关注时间线 + + +::: warning 注意 + +用户关注动态需要登录后的 Cookie 值,所以只能自建,详情见部署页面的配置模块。 + +::: diff --git a/lib/config.js b/lib/config.js index 83112c8e7..5e81e3e9e 100644 --- a/lib/config.js +++ b/lib/config.js @@ -89,6 +89,9 @@ const calculateValue = () => { yuque: { token: envs.YUQUE_TOKEN, }, + zhihu: { + cookies: envs.ZHIHU_COOKIES, + }, puppeteerWSEndpoint: envs.PUPPETEER_WS_ENDPOINT, loggerLevel: envs.LOGGER_LEVEL || 'info', proxyUri: envs.PROXY_URI, diff --git a/lib/router.js b/lib/router.js index 5bb0f656c..71be05cda 100644 --- a/lib/router.js +++ b/lib/router.js @@ -158,6 +158,7 @@ router.get('/zhihu/people/pins/:id', require('./routes/zhihu/pin/people')); router.get('/zhihu/bookstore/newest', require('./routes/zhihu/bookstore/newest')); router.get('/zhihu/pin/daily', require('./routes/zhihu/pin/daily')); router.get('/zhihu/weekly', require('./routes/zhihu/weekly')); +router.get('/zhihu/timeline', require('./routes/zhihu/timeline')); // 妹子图 router.get('/mzitu/home/:type?', require('./routes/mzitu/home')); diff --git a/lib/routes/zhihu/timeline.js b/lib/routes/zhihu/timeline.js new file mode 100644 index 000000000..568c30a0e --- /dev/null +++ b/lib/routes/zhihu/timeline.js @@ -0,0 +1,33 @@ +const got = require('@/utils/got'); +const config = require('@/config').value; + +module.exports = async (ctx) => { + const cookie = config.zhihu.cookies; + if (cookie === undefined) { + throw Error('缺少知乎用户登录后的 Cookie 值'); + } + + const response = await got({ + method: 'get', + url: `https://www.zhihu.com/api/v3/moments?limit=10`, + headers: { + Cookie: cookie, + }, + }); + const feeds = response.data.data; + + const out = feeds.map((e) => ({ + title: `${e.action_text}: ${e.target.title ? e.target.title : e.target.question.title}`, + description: `${e.target.excerpt}`, + pubDate: new Date(e.updated_time * 1000), + link: e.target.url.replace('api.zhihu.com', 'zhihu.com'), + author: e.target.author.name, + guid: e.id, + })); + + ctx.state.data = { + title: `知乎关注动态`, + link: `https://www.zhihu.com/follow`, + item: out, + }; +};