2015-04-16 5 views
2

В настоящее время я пытаюсь найти все страницы, на которых изображения/мультимедиа из определенной категории используются в Викискладе.Поиск всех страниц, содержащих изображения в категории Wikimedia Commons через API

Использование api, я могу без проблем просматривать все изображения, но я изо всех сил стараюсь, чтобы запрос добавлялся на все страницы, на которых используются элементы.

Вот пример категории только два медиа-изображений https://commons.wikimedia.org/wiki/Category:Automobiles

Вот это апи вызов Я использую

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: в этом случае это GLAMourous. Пример с 3 уровнями рекурсии (находит 186 тыс. Изображений, 114 тыс. Обычаев): 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, который обрабатывает их для вас).