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:
Jerry K Jia
2022-07-08 02:42:25 +08:00
committed by GitHub
co-authored by Tony
parent 87485ec9b9
commit dba59e04ee
3 changed files with 7 additions and 5 deletions
+1 -1
View File
@@ -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 -3
View File
@@ -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
+1 -1
View File
@@ -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'));