Mastodon API /api/v2/search调用异常:无法获取预期状态内容
问题解决:Mastodon API搜索状态并获取content
明确说明:搜索Mastodon状态并返回content是完全可行的,你的代码存在两个关键问题,以下是针对性解决方法:
问题一:指定type='statuses'时无结果
你的代码错误地用data=params传递GET请求参数,data是用于POST请求的表单数据,GET请求的参数必须通过params参数传递,这样参数才会被正确拼接到URL中。
修正后的代码:
import requests url = 'https://<server>/api/v2/search' auth = {'Authorization': 'Bearer <token>'} params = {'q': '<keyword>', 'type':'statuses', 'resolve': True} # resolve参数确保跨实例内容可被检索 response = requests.get(url, params=params, headers=auth) # 打印响应查看结果 print(response.json())
额外注意:
- 替换
<server>为你实际使用的Mastodon实例域名(如mastodon.social) - 替换
<token>为具备read:search权限的有效访问令牌 - 若搜索其他实例的状态,
resolve=True能帮助当前实例解析跨站内容
问题二:不限制类型时无content字段
你返回的结果仅包含hashtag,说明搜索关键词是纯标签(比如hiring),此时API优先返回标签数据。若要获取状态文本的content字段:
- 确保搜索关键词是状态中的普通文本(若要搜索带标签的状态,可直接用
#hiring作为关键词) - 明确指定
type='statuses'并正确传递参数后,返回的statuses数组中每个对象都会包含content字段,与官方文档示例一致。
示例响应结构(搜索普通文本关键词时):
{ "accounts": [], "statuses": [ { "id": "12345", "content": "<p>Hello world! This is a test status.</p>", // 其他状态字段... } ], "hashtags": [] }
提取content只需遍历response.json()['statuses'],取出每个元素的content字段即可。
内容的提问来源于stack exchange,提问作者loz
相关产品推荐
相关产品推荐

