通过API查找维基共享资源类别中包含图像的所有页面



我目前正在尝试查找维基共享资源上使用特定类别的图像/媒体的所有页面。

使用 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 中获取的相关图像。

我可能需要执行两个查询,首先获取图像,然后请求有关每个页面的信息,但我希望在一次调用中完成所有查询。

我不

明白你的用例("我们的集合"?),所以我不知道你为什么要直接使用 API,但如果你想在类别中递归,你会做很多轮子重塑。

大多数人使用MediaWiki的创建者Magnus Manske制作的工具:在这种情况下,它是迷人的。具有 3 个递归级别的示例(找到 186k 个图像,114k 个用法): https://tools.wmflabs.org/glamtools/glamorous.php?doit=1&category=Automobiles&use_globalusage=1&depth=3

结果也可以以XML格式下载,因此机器可读。

假设你不需要递归到子类别中,你可以只使用带有generator=categorymembersprop=globalusage查询,例如:

https://commons.wikimedia.org/w/api.php?action=query&prop=globalusage&generator=categorymembers&gcmtitle=Category:Images_from_the_German_Federal_Archive&gcmtype=file&gcmlimit=200&continue=

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/Mu00e4rz",
            "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-Ruu00dfwurm",
            "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...

请注意,您很可能必须处理查询延续,因为结果可能很容易超过MediaWiki在单个请求中返回的结果。 有关处理这些内容的更多信息,请参阅链接页面(或仅使用为您处理这些问题的 MW API 客户端)。

最新更新