2015-04-16 67 views
2

我目前正在嘗試查找維基共享資源上正在使用特定類別的圖像/媒體的所有頁面。通過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的相關圖像。

我可能需要做兩個查詢,首先獲取圖像然後請求關於每個頁面的信息,但我希望能夠在一次調用中完成所有操作。

回答

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格式下載,因此它是機器可讀的。

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

注意,您將很可能不得不面對query continuations,因爲可能會比MediaWiki將在單個請求中返回的結果要容易得多。請參閱鏈接頁面以獲取有關處理這些內容的更多信息(或僅使用爲您處理它們的MW API客戶端)。

相關問題