Wikimedia API поиск изображений с общедоступным фильтром

Я хотел бы запросить API Викимедиа, чтобы найти все изображения, содержащие ключевое слово, и отфильтровать только те изображения, которые являются общественным достоянием. Таким образом, нет дополнительной лицензии CC-SA.

В настоящее время я использую следующий запрос для извлечения изображений:

http://en.wikipedia.org/w/api.php?action=query&list=search&format=json&srsearch=roses&srnamespace=6&srinfo=totalhits%7Csuggestion&srprop=size%7Cwordcount%7Ctimestamp%7Cscore%7Csnippet%7Ctitlesnippet%7Credirecttitle%7Credirectsnippet%7Csectiontitle%7Csectionsnippet%7Chasrelated&srredirects=&srlimit=10&generator=images&titles=Wikipedia%3APublic_domain&gimlimit=10

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

Спасибо

1 ответ

Решение

Хм, ваш текущий запрос API делает две совершенно разные вещи:

  • получить первые 10 изображений со страницы Wikipedia: Public Domain - the pages результат, вы можете указать дополнительные свойства, чтобы получить для этого набора результатов
  • поиск в пространстве имен 6 по слову роз

К сожалению, вы не можете ограничить модуль поиска поиском только в некоторых категориях, вы можете ограничить его только одним пространством имен. Поэтому вам необходимо получить категории всех результатов поиска и отфильтровать их для изображений в категории "Общественное достояние" (и во всех ее подкатегориях). Запрос API будет выглядеть так

api.php?action=query&prop=imageinfo|categories&generator=search&gsrsearch=roses&gsrnamespace=6&format=json

Не забудьте продолжить запрос, если вы хотите, чтобы 10 изображений соответствовали критериям вашей категории, вам может потребоваться запросить (намного) больше, чем это.

Другие вопросы по тегам