【问题标题】:Finding all pages containing images in Wikimedia Commons category via API通过 API 查找所有包含 Wikimedia Commons 类别中图像的页面
【发布时间】:2015-04-16 12:11:06
【问题描述】:

我目前正在尝试查找在 Wikimedia Commons 上使用特定类别的图像/媒体的所有页面。

使用 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 知道的相关图像。

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

【问题讨论】:

    标签: php api dbpedia wikipedia-api wikimedia-commons


    【解决方案1】:

    假设您不需要需要递归到子类别中,您可以只使用带有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/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 客户端)。

    【讨论】:

      【解决方案2】:

      我不了解您的用例(“我们的集合”?),所以我不知道您为什么要直接使用 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 格式下载,因此是机器可读的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多