使用 Stack Exchange API 在用户级别获取 link 问答
Get the link of question and answer at user level using Stack Exchange API
根据我之前的 ,我能够使用 Stack Exchange API 和以下 curl 命令获取用户级别日期范围内所有未接受答案的列表:
curl "https://api.stackexchange.com/2.2/users/10348758/answers?page=1&pagesize=100&fromdate=1588291200&todate=1592179200&order=desc&sort=activity&site=Whosebug&access_token=my-access-token&key=my-key" | gunzip | jq '.items[] | select(.is_accepted == false)'
上述命令的 JSON 响应是这样的:
{
"owner": {
"reputation": 1595,
"user_id": 10348758,
"user_type": "registered",
"profile_image": "https://www.gravatar.com/avatar/01ccf806a00d7deb1bf15323bc3edbe8?s=128&d=identicon&r=PG&f=1",
"display_name": "Bhavya",
"link": "https://whosebug.com/users/10348758/bhavya"
},
"is_accepted": false,
"score": 0,
"last_activity_date": 1592102481,
"creation_date": 1592102481,
"answer_id": 62367766,
"question_id": 62367395,
"content_license": "CC BY-SA 4.0"
}
在上面的回复中,我得到了 answer_id
和 question_id
,这些答案和问题的链接没有包含在回复中。
通过在 curl 命令中包含 &filter=withbody
,我能够得到 answer.The 修改后的 curl 命令的主体是:
curl "https://api.stackexchange.com/2.2/users/10348758/answers?page=1&pagesize=100&fromdate=1588291200&todate=1592179200&order=desc&sort=activity&site=Whosebug&filter=withbody&access_token=my-access-token&key=my-key" | gunzip | jq '.items[] | select(.is_accepted == false)'
请问有什么办法可以得到回复中包含的答案和问题的链接吗?我提到了这些自定义过滤器 documentation,但我无法理解如何应用它们。
谁能帮我解决这个问题?
这个答案怎么样?
您目前的情况如下
- 从您的 URL 中检索到的值包括
answer_id
和 question_id
。在这种情况下,答案和问题的 URL 可以分别创建为 https://whosebug.com/a/{answer_id}
和 https://whosebug.com/q/{question_id}
。我在 here. 提到过
- 在您的 curl 命令中,
jq
的用法类似于 jq '.items[] | select(.is_accepted == false)'
。
从上述情况来看,在这个答案中,我想建议通过向 jq
.
添加参数来将 URL 的答案和问题添加到检索到的值中
修改后的jq命令:
本例修改后的jq
命令如下
jq '[.items[] | select(.is_accepted == false) |= . + {"answerUrl": ("https://whosebug.com/a/" + (.answer_id|tostring)), "questionUrl": ("https://whosebug.com/q/" + (.question_id|tostring))}]'
修改后的 curl 命令:
当你的curl命令修改后,变成如下。
curl "https://api.stackexchange.com/2.2/users/10348758/answers?page=1&pagesize=100&fromdate=1588291200&todate=1592179200&order=desc&sort=activity&site=Whosebug&filter=withbody&access_token=my-access-token&key=my-key" | gunzip | jq '[.items[] | select(.is_accepted == false) |= . + {"answerUrl": ("https://whosebug.com/a/" + (.answer_id|tostring)), "questionUrl": ("https://whosebug.com/q/" + (.question_id|tostring))}]'
结果:
当上面修改的curl命令为运行时,检索到以下结果。您可以在结果中看到 answerUrl
和 questionUrl
的值。
[
{
"owner": {###},
"is_accepted": false,
"score": ###,
"last_activity_date": ###,
"creation_date": ###,
"answer_id": ###,
"question_id": ###,
"content_license": "###",
"answerUrl": "https://whosebug.com/a/###", <--- Added
"questionUrl": "https://whosebug.com/q/###" <--- Added
},
,
,
,
]
参考文献:
已添加:
如果您想将标题包含在检索到的值中,请使用如下自定义过滤器。
修改后的jq命令:
curl "https://api.stackexchange.com/2.2/users/10348758/answers?page=1&pagesize=100&fromdate=1588291200&todate=1592179200&order=desc&sort=activity&site=Whosebug&access_token=my-access-token&key=my-key&filter=%21T%2AhPUiv_%28m%28rgrhfg_" | gunzip | jq '[.items[] | select(.is_accepted == false)]'
- 本例中添加了
filter=%21T%2AhPUiv_%28m%28rgrhfg_
的过滤器作为查询参数。至此,标题被添加。在此自定义过滤器中,包含 title,link,.share_link
。这样,标题、答案和问题链接都包含在返回值中。所以jq
的命令可以更简单
参考:
根据我之前的
curl "https://api.stackexchange.com/2.2/users/10348758/answers?page=1&pagesize=100&fromdate=1588291200&todate=1592179200&order=desc&sort=activity&site=Whosebug&access_token=my-access-token&key=my-key" | gunzip | jq '.items[] | select(.is_accepted == false)'
上述命令的 JSON 响应是这样的:
{
"owner": {
"reputation": 1595,
"user_id": 10348758,
"user_type": "registered",
"profile_image": "https://www.gravatar.com/avatar/01ccf806a00d7deb1bf15323bc3edbe8?s=128&d=identicon&r=PG&f=1",
"display_name": "Bhavya",
"link": "https://whosebug.com/users/10348758/bhavya"
},
"is_accepted": false,
"score": 0,
"last_activity_date": 1592102481,
"creation_date": 1592102481,
"answer_id": 62367766,
"question_id": 62367395,
"content_license": "CC BY-SA 4.0"
}
在上面的回复中,我得到了 answer_id
和 question_id
,这些答案和问题的链接没有包含在回复中。
通过在 curl 命令中包含 &filter=withbody
,我能够得到 answer.The 修改后的 curl 命令的主体是:
curl "https://api.stackexchange.com/2.2/users/10348758/answers?page=1&pagesize=100&fromdate=1588291200&todate=1592179200&order=desc&sort=activity&site=Whosebug&filter=withbody&access_token=my-access-token&key=my-key" | gunzip | jq '.items[] | select(.is_accepted == false)'
请问有什么办法可以得到回复中包含的答案和问题的链接吗?我提到了这些自定义过滤器 documentation,但我无法理解如何应用它们。
谁能帮我解决这个问题?
这个答案怎么样?
您目前的情况如下
- 从您的 URL 中检索到的值包括
answer_id
和question_id
。在这种情况下,答案和问题的 URL 可以分别创建为https://whosebug.com/a/{answer_id}
和https://whosebug.com/q/{question_id}
。我在 here. 提到过
- 在您的 curl 命令中,
jq
的用法类似于jq '.items[] | select(.is_accepted == false)'
。
从上述情况来看,在这个答案中,我想建议通过向 jq
.
修改后的jq命令:
本例修改后的jq
命令如下
jq '[.items[] | select(.is_accepted == false) |= . + {"answerUrl": ("https://whosebug.com/a/" + (.answer_id|tostring)), "questionUrl": ("https://whosebug.com/q/" + (.question_id|tostring))}]'
修改后的 curl 命令:
当你的curl命令修改后,变成如下。
curl "https://api.stackexchange.com/2.2/users/10348758/answers?page=1&pagesize=100&fromdate=1588291200&todate=1592179200&order=desc&sort=activity&site=Whosebug&filter=withbody&access_token=my-access-token&key=my-key" | gunzip | jq '[.items[] | select(.is_accepted == false) |= . + {"answerUrl": ("https://whosebug.com/a/" + (.answer_id|tostring)), "questionUrl": ("https://whosebug.com/q/" + (.question_id|tostring))}]'
结果:
当上面修改的curl命令为运行时,检索到以下结果。您可以在结果中看到 answerUrl
和 questionUrl
的值。
[
{
"owner": {###},
"is_accepted": false,
"score": ###,
"last_activity_date": ###,
"creation_date": ###,
"answer_id": ###,
"question_id": ###,
"content_license": "###",
"answerUrl": "https://whosebug.com/a/###", <--- Added
"questionUrl": "https://whosebug.com/q/###" <--- Added
},
,
,
,
]
参考文献:
已添加:
如果您想将标题包含在检索到的值中,请使用如下自定义过滤器。
修改后的jq命令:
curl "https://api.stackexchange.com/2.2/users/10348758/answers?page=1&pagesize=100&fromdate=1588291200&todate=1592179200&order=desc&sort=activity&site=Whosebug&access_token=my-access-token&key=my-key&filter=%21T%2AhPUiv_%28m%28rgrhfg_" | gunzip | jq '[.items[] | select(.is_accepted == false)]'
- 本例中添加了
filter=%21T%2AhPUiv_%28m%28rgrhfg_
的过滤器作为查询参数。至此,标题被添加。在此自定义过滤器中,包含title,link,.share_link
。这样,标题、答案和问题链接都包含在返回值中。所以jq
的命令可以更简单