如何修改Wikimedia Commons API示例,获取用户上传文件的分类、维基文本及结构化数据
修改Wikimedia Commons「获取特定用户上传文件」API示例的方案
核心思路
原API示例仅返回上传文件的基础信息,要扩展返回分类、维基文本和结构化数据,需结合**生成器(generator)**和多属性(prop)查询,通过一次请求关联获取多维度数据。
完整API请求
https://commons.wikimedia.org/w/api.php?action=query&generator=alluploads&gailimit=10&gaiuser=YourTargetUser&prop=categories|revisions|structureddata&rvprop=content&sdprop=entityid|statement&format=json
参数详解
generator=alluploads:以目标用户上传的文件为基础,生成待查询的页面集合gaiuser=YourTargetUser:替换为你要查询的用户名gailimit=10:控制单次返回的文件数量(可按需调整,最大受API限制)prop=categories|revisions|structureddata:同时请求三类数据:categories:返回文件所属的所有分类revisions:返回页面的修订内容(配合rvprop=content获取维基文本)structureddata:返回页面关联的结构化数据
rvprop=content:指定修订信息返回页面的原始维基文本sdprop=entityid|statement:指定结构化数据返回Wikidata实体ID及声明内容(如需更详细数据,可添加value或reference)
返回结果说明
- 分类:在
categories字段下,包含分类名称(title)和分类页面ID(pageid) - 维基文本:在
revisions字段的*属性中,是文件页面的完整编辑内容(含模板、描述等) - 结构化数据:在
structureddata字段下,entityid对应关联的Wikidata条目ID,statement包含各类结构化声明(如版权、作者信息)
分页处理
当用户上传文件数量超过gailimit时,响应会返回gaicontinue参数,将其加入下一次请求即可获取后续数据,示例:
https://commons.wikimedia.org/w/api.php?action=query&generator=alluploads&gailimit=10&gaiuser=YourTargetUser&prop=categories|revisions|structureddata&rvprop=content&sdprop=entityid|statement&format=json&gaicontinue=xxx
内容的提问来源于stack exchange,提问作者Dan Jacobson
相关产品推荐
相关产品推荐

