我目前正在尝试查找维基共享资源中使用特定类别的图片/媒体的所有网页。
使用API,我可以毫无问题地列出所有图像,但我很难在查看所有使用项目的页面中添加查询。
以下是仅包含两个媒体图像的示例类别 https://commons.wikimedia.org/wiki/Category:Automobiles
以下是我正在使用的API调用
https://commons.wikimedia.org/w/api.php?action=query&prop=images&format=json&generator=categorymembers&gcmtitle=Category%3AAutomobiles&gcmprop=title&gcmnamespace=6&gcmlimit=200&gcmsort=sortkey
长期目标是找到我们馆藏图像的所有页面,然后从这些页面中获取有关图像的所有标签。然后,我们可以使用它来增强我们关于这些图像的信息存档,并希望使用链接数据从DBpedia中找到我们可能不知道的相关图像。
我可能需要做两个查询,首先获取图像然后请求有关每个页面的信息,但我希望在一次调用中完成所有操作。
答案 0 :(得分:1)
假设您不需要递归到子类别,您只需使用prop=globalusage
generator=categorymembers
查询即可。像这样:
JSON格式的输出看起来像这样:
// ...snip...
"6197351": {
"pageid": 6197351,
"ns": 6,
"title": "File:-Bundesarchiv Bild 183-1987-1225-004, Schwerin, Thronsaal-demo.jpg",
"globalusage": [
{
"title": "Wikipedia:Fotowerkstatt/Archiv/2009/M\u00e4rz",
"wiki": "de.wikipedia.org",
"url": "https://de.wikipedia.org/wiki/Wikipedia:Fotowerkstatt/Archiv/2009/M%C3%A4rz"
}
]
},
"6428927": {
"pageid": 6428927,
"ns": 6,
"title": "File:-Fernsehstudio-Journalistengespraech-crop.jpg",
"globalusage": [
{
"title": "Kurt_von_Gleichen-Ru\u00dfwurm",
"wiki": "de.wikipedia.org",
"url": "https://de.wikipedia.org/wiki/Kurt_von_Gleichen-Ru%C3%9Fwurm"
},
{
"title": "Wikipedia:Fotowerkstatt/Archiv/2009/April",
"wiki": "de.wikipedia.org",
"url": "https://de.wikipedia.org/wiki/Wikipedia:Fotowerkstatt/Archiv/2009/April"
}
]
},
// ...snip...
请注意,您很可能必须处理query continuations,因为可能会有比MediaWiki在单个请求中返回的结果更多的结果。有关处理这些内容的更多信息,请参阅链接页面(或者只使用为您处理这些内容的MW API客户端)。
答案 1 :(得分:0)
我不了解您的用例("我们的收藏品"?)所以我不知道您为什么要直接使用API,但是如果您想要在类别中递归你会做很多车轮改造。
大多数人使用MediaWiki的创建者Magnus Manske制作的工具:在这种情况下,它是GLAMourous。具有3级递归的示例(找到186k图像,114k用法):https://tools.wmflabs.org/glamtools/glamorous.php?doit=1&category=Automobiles&use_globalusage=1&depth=3
结果也可以XML格式下载,因此它是机器可读的。