2

現在、ウィキメディア コモンズで特定のカテゴリの画像/メディアが使用されているすべてのページを見つけようとしています。

API を使用すると、問題なくすべての画像を一覧表示できますが、アイテムが使用されているすべてのページにクエリを追加するのに苦労しています。

メディア画像が 2 つだけのカテゴリの例を次に示します 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 から知らない関連画像を見つけることができます。

最初に画像を取得してから各ページに関する情報を要求するという 2 つのクエリを実行する必要があるかもしれませんが、1 回の呼び出しですべてを実行したいと考えていました。

4

2 に答える 2

1

サブカテゴリに再帰する必要がないと仮定すると、次のようにprop=globalusageクエリを使用できますgenerator=categorymembers

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...

MediaWiki が 1 回のリクエストで返すよりも多くの結果が簡単に返される可能性があるため、クエリの継続に対処する必要がある可能性が非常に高いことに注意してください。それらの処理の詳細については、リンク先のページを参照してください (または、それらを処理する MW API クライアントを使用してください)。

于 2015-06-26T11:24:06.227 に答える