Поиск изображений 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&dogimain>3APubpedia%3APub

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

Спасибо


person CiprianIonescu    schedule 09.10.2012    source источник
comment
Если вы нашли изображения в общественном достоянии полезными, подумайте о том, чтобы внести свой вклад в общее достояние, например. за счет улучшения машиночитаемых метаданных, доступных для всех. meta.wikimedia.org/wiki/File_metadata_cleanup_drive   -  person Nemo    schedule 07.11.2015


Ответы (1)


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

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

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

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

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

person Bergi    schedule 09.10.2012
comment
Я думаю, что добавление clcategories может иметь смысл здесь, чтобы ограничить категории только категорией:общественное достояние и ее подкатегориями. Это, скорее всего, будет означать меньше query-continue. - person svick; 10.10.2012
comment
Нет, clcategories, к сожалению, не работает, потому что не включает подкатегории, и вы не можете передать туда все 1200 подкатегорий. - person Bergi; 10.10.2012
comment
К сожалению, вы не можете ограничить модуль поиска поиском только в некоторых категориях — конечно, вы можете, просто добавьте incategory:<category name> к поисковому запросу. - person Tgr; 14.10.2012
comment
Хорошо, вы можете сделать это (хотя на самом деле это не параметр [URL]), но это по-прежнему не включает подкатегории. Вам нужно будет сделать что-то вроде search_string + incategory:"Public Domain" OR incategory:CC-zero OR …, и это, вероятно, превышает ограничение длины строки поиска. - person Bergi; 14.10.2012
comment
если я добавляю +incategory:Public Domain или что-то еще к параметру srsearch, он возвращает следующую ошибку: { servedby: "srv292", error: { code: "srsearch-text-disabled", info: "text search is disabled" } } - person CiprianIonescu; 16.10.2012
comment
Хм, рабочая форма. Сообщение об ошибке недвусмысленно, но я не думаю, что серверы Википедии настроены неправильно. - person Bergi; 16.10.2012