mirror of
https://github.com/DIYgod/RSSHub.git
synced 2026-09-24 23:12:34 +08:00
feat(route): zhihu/question sortBy param support (#10026)
* feat(route): zhihu/question sortBy param support * Update docs/social-media.md Co-authored-by: Tony <TonyRL@users.noreply.github.com>
This commit is contained in:
@@ -1409,7 +1409,7 @@ rule
|
||||
|
||||
### 问题
|
||||
|
||||
<Route author="xyqfer hacklu" example="/zhihu/question/59895982" path="/zhihu/question/:questionId" :paramsDesc="['问题 id']" anticrawler="1" radar="1" rssbud="1"/>
|
||||
<Route author="xyqfer hacklu" example="/zhihu/question/59895982" path="/zhihu/question/:questionId/:sortBy?" :paramsDesc="['问题 id', '排序方式:`default`, `created`, `updated`。默认为 `default`']" anticrawler="1" radar="1" rssbud="1"/>
|
||||
|
||||
### 话题
|
||||
|
||||
|
||||
@@ -5,7 +5,10 @@ const g_encrypt = require('./execlib/g_encrypt');
|
||||
const { parseDate } = require('@/utils/parse-date');
|
||||
|
||||
module.exports = async (ctx) => {
|
||||
const { questionId } = ctx.params;
|
||||
const {
|
||||
questionId,
|
||||
sortBy = 'default', // default,created,updated
|
||||
} = ctx.params;
|
||||
// Because the API of zhihu.com has changed, we must use the value of `d_c0` (extracted from cookies) to calculate
|
||||
// `x-zse-96`. So first get `d_c0`, then get the actual data of a ZhiHu question. In this way, we don't need to
|
||||
// require users to set the cookie in environmental variables anymore.
|
||||
@@ -32,12 +35,11 @@ module.exports = async (ctx) => {
|
||||
const cookie = `d_c0=${cookie_mes}`;
|
||||
|
||||
// second: get real data from zhihu
|
||||
const sort = 'updated'; // or default,created
|
||||
const limit = 20;
|
||||
const include =
|
||||
'data%5B*%5D.is_normal%2Cadmin_closed_comment%2Creward_info%2Cis_collapsed%2Cannotation_action%2Cannotation_detail%2Ccollapse_reason%2Cis_sticky%2Ccollapsed_by%2Csuggest_edit%2Ccomment_count%2Ccan_comment%2Ccontent%2Ceditable_content%2Cattachment%2Cvoteup_count%2Creshipment_settings%2Ccomment_permission%2Ccreated_time%2Cupdated_time%2Creview_info%2Crelevant_info%2Cquestion%2Cexcerpt%2Cis_labeled%2Cpaid_info%2Cpaid_info_content%2Crelationship.is_authorized%2Cis_author%2Cvoting%2Cis_thanked%2Cis_nothelp%2Cis_recognized%3Bdata%5B*%5D.mark_infos%5B*%5D.url%3Bdata%5B*%5D.author.follower_count%2Cbadge%5B*%5D.topics%3Bdata%5B*%5D.settings.table_of_content.enabled&offset=0';
|
||||
const rootUrl = 'https://www.zhihu.com';
|
||||
const apiPath = `/api/v4/questions/${questionId}/answers?include=${include}&limit=${limit}&sort_by=${sort}&platform=desktop`;
|
||||
const apiPath = `/api/v4/questions/${questionId}/answers?include=${include}&limit=${limit}&sort_by=${sortBy}&platform=desktop`;
|
||||
const url = rootUrl + apiPath;
|
||||
|
||||
// calculate x-zse-96, refer to https://github.com/srx-2000/spider_collection/issues/18
|
||||
|
||||
@@ -11,7 +11,7 @@ module.exports = (router) => {
|
||||
router.get('/pin/daily', require('./pin/daily'));
|
||||
router.get('/pin/hotlist', require('./pin/hotlist'));
|
||||
router.get('/posts/:usertype/:id', require('./posts'));
|
||||
router.get('/question/:questionId', require('./question'));
|
||||
router.get('/question/:questionId/:sortBy?', require('./question'));
|
||||
router.get('/timeline', require('./timeline'));
|
||||
router.get('/topic/:topicId', require('./topic'));
|
||||
router.get('/weekly', require('./weekly'));
|
||||
|
||||
Reference in New Issue
Block a user