Поиск изображений по текстовому описанию с помощью API v2
API v2 сервиса Yandex Search API позволяет искать изображения по текстовым описаниям в индексе Яндекс Картинок
Перед началом работы
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления
, затем войдите в Yandex Cloud или зарегистрируйтесь. - На странице Yandex Cloud Billing
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVEилиTRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака
Подробнее об облаках и каталогах.
Чтобы воспользоваться примерами, установите утилиты cURL
Подготовьте облако к работе
-
Создайте сервисный аккаунт, от имени которого будут выполняться запросы. Вы также можете использовать аккаунт на Яндексе или федеративный аккаунт, но для автоматизации предпочтительнее использовать сервисный аккаунт.
-
Назначьте аккаунту, от имени которого будут выполняться запросы, роль
search-api.webSearch.user. -
Получите IAM-токен, необходимый для аутентификации.
В приведенных примерах используется аутентификация с помощью IAM-токена. Чтобы использовать для аутентификации API-ключ сервисного аккаунта, измените в примерах запросов заголовок
Authorization. Подробнее см. в разделе Аутентификация в API v2.
Выполните поисковый запрос
-
Отправьте запрос и получите результат в кодировке Base64
:REST APIgRPC API-
Создайте файл с телом запроса (например,
body.json):body.json
{ "query": { "searchType": "<тип_поиска>", "queryText": "<текст_поискового_запроса>", "familyMode": "<значение_настройки_фильтрации_результатов>", "page": "<номер_страницы>", "fixTypoMode": "<значение_настройки_режима_исправления_опечаток>" }, "imageSpec": { "format": "<формат_изображения>", "size": "<размер_изображения>", "orientation": "<тип_ориентации_изображения>", "color": "<цвет_изображения>" }, "site": "<доменное_имя_сайта>", "docsOnPage": "<количество_результатов_на_странице>", "folderId": "<идентификатор_каталога>", "userAgent": "<заголовок_User-Agent>" }Описание полей
-
searchType— тип поиска. Возможные значения:SEARCH_TYPE_RU— для типа поискаРусский.SEARCH_TYPE_TR— для типа поискаТурецкий.SEARCH_TYPE_COM— для типа поискаМеждународный.SEARCH_TYPE_KK— для типа поискаКазахский.SEARCH_TYPE_BE– для типа поискаБелорусский.SEARCH_TYPE_UZ— для типа поискаУзбекский.
-
queryText— текст поискового запроса. Максимальная длина запроса — 400 символов. -
familyMode— фильтрация результатов. Необязательный параметр. Возможные значения:FAMILY_MODE_MODERATE— умеренный фильтр (значение по умолчанию). Из выдачи исключаются документы, относящиеся к категории «для взрослых», если запрос явно не направлен на поиск подобных ресурсов.FAMILY_MODE_NONE— фильтрация отключена. В выдачу включаются любые документы вне зависимости от содержимого.FAMILY_MODE_STRICT— семейный фильтр. Вне зависимости от поискового запроса из выдачи исключаются документы, относящиеся к категории «для взрослых», а также содержащие ненормативную лексику.
-
page— номер запрашиваемой страницы. Необязательный параметр. По умолчанию возвращается первая страница поисковой выдачи. Нумерация страниц начинается с нуля (первой странице соответствует значение0). -
fixTypoMode— значение настройки режима исправления опечаток в поисковом запросе. Необязательный параметр. Возможные значения:FIX_TYPO_MODE_ON— исправление опечаток включено (значение по умолчанию). Опечатки в тексте поискового запроса автоматически исправляются.FIX_TYPO_MODE_OFF— исправление опечаток отключено. Опечатки в тексте поискового запроса не исправляются, поиск выполняется в полном соответствии с переданным запросом.
-
format— поиск изображений указанного формата. Необязательный параметр. Если параметр не задан, выполняется поиск по изображениям всех форматов. Возможные значения: -
size— поиск изображений указанного размера. Необязательный параметр. Если параметр не задан, выполняется поиск по изображениям всех размеров. Возможные значения:IMAGE_SIZE_ENORMOUS— изображения очень большого размера (более1600 × 1200в пикселях).IMAGE_SIZE_LARGE— изображения большого размера (от800 × 600до1600 × 1200в пикселях).IMAGE_SIZE_MEDIUM— изображения среднего размера (от150 × 150до800 × 600в пикселях).IMAGE_SIZE_SMALL— изображения маленького размера (от32 × 32до150 × 150в пикселях).IMAGE_SIZE_TINY— иконки (не более32 × 32в пикселях).IMAGE_SIZE_WALLPAPER— обои для рабочего стола.
-
orientation— поиск изображений с указанной ориентацией. Необязательный параметр. Если параметр не задан, выполняется поиск по изображениям с любой ориентацией. Возможные значения:IMAGE_ORIENTATION_VERTICAL— изображения с вертикальной ориентацией.IMAGE_ORIENTATION_HORIZONTAL— изображения с горизонтальной ориентацией.IMAGE_ORIENTATION_SQUARE— изображения с равными сторонами (квадрат).
-
color— поиск изображений с заданными параметрами цвета. Необязательный параметр. Если параметр не задан, выполняется поиск по изображениям с любыми цветовыми параметрами. Возможные значения:IMAGE_COLOR_COLOR— цветные изображения.IMAGE_COLOR_GRAYSCALE— черно-белые изображения.IMAGE_COLOR_RED— изображения, в которых основной цвет — красный.IMAGE_COLOR_ORANGE— изображения, в которых основной цвет — оранжевый.IMAGE_COLOR_YELLOW— изображения, в которых основной цвет — желтый.IMAGE_COLOR_GREEN— изображения, в которых основной цвет — зеленый.IMAGE_COLOR_CYAN— изображения, в которых основной цвет — голубой.IMAGE_COLOR_BLUE— изображения, в которых основной цвет — синий.IMAGE_COLOR_VIOLET— изображения, в которых основной цвет — фиолетовый.IMAGE_COLOR_WHITE— изображения, в которых основной цвет — белый.IMAGE_COLOR_BLACK— изображения, в которых основной цвет — черный.
-
site— поиск изображений только на указанном сайте. Например:yandex.cloud. Необязательный параметр. Если параметр не задан, поиск выполняется по всем сайтам поисковой базы. -
docsOnPage— количество групп результатов, которое выводится на одной странице с результатами поиска. Возможные значения — от1до60. Необязательный параметр. Значение по умолчанию —20. -
folderId— идентификатор каталога пользователя или сервисного аккаунта, от имени которого вы будете выполнять запросы. -
userAgent— строка, содержащая заголовок User-Agent . Параметр позволяет получить поисковую выдачу, ориентированную на конкретное устройство и браузер, в том числе мобильную выдачу. Необязательный параметр. Если параметр не задан, сервис возвращает стандартную выдачу по умолчанию.
Пример тела запроса
body.json
{ "query": { "searchType": "SEARCH_TYPE_RU", "queryText": "котики" }, "folderId": "b1gt6g8ht345********" } -
-
Выполните HTTP-запрос, указав полученный ранее IAM-токен и путь к файлу с телом запроса:
curl \ --request POST \ --header "Authorization: Bearer <IAM-токен>" \ --data "@body.json" \ "https://searchapi.api.yandexcloud.kz/v2/image/search" \ > result.json
-
Создайте файл с телом запроса (например,
body.json):body.json
{ "query": { "search_type": "<тип_поиска>", "query_text": "<текст_поискового_запроса>", "family_mode": "<значение_настройки_фильтрации_результатов>", "page": "<номер_страницы>", "fix_typo_mode": "<значение_настройки_режима_исправления_опечаток>" }, "image_spec": { "format": "<формат_изображения>", "size": "<размер_изображения>", "orientation": "<тип_ориентации_изображения>", "color": "<цвет_изображения>" }, "site": "<доменное_имя_сайта>", "docs_on_page": "<количество_результатов_на_странице>", "folder_id": "<идентификатор_каталога>", "user_agent": "<заголовок_User-Agent>" }Описание полей
-
search_type— тип поиска. Возможные значения:SEARCH_TYPE_RU— для типа поискаРусский.SEARCH_TYPE_TR— для типа поискаТурецкий.SEARCH_TYPE_COM— для типа поискаМеждународный.SEARCH_TYPE_KK— для типа поискаКазахский.SEARCH_TYPE_BE– для типа поискаБелорусский.SEARCH_TYPE_UZ— для типа поискаУзбекский.
-
query_text— текст поискового запроса. Максимальная длина запроса — 400 символов. -
family_mode— фильтрация результатов. Необязательный параметр. Возможные значения:FAMILY_MODE_MODERATE— умеренный фильтр (значение по умолчанию). Из выдачи исключаются документы, относящиеся к категории «для взрослых», если запрос явно не направлен на поиск подобных ресурсов.FAMILY_MODE_NONE— фильтрация отключена. В выдачу включаются любые документы вне зависимости от содержимого.FAMILY_MODE_STRICT— семейный фильтр. Вне зависимости от поискового запроса из выдачи исключаются документы, относящиеся к категории «для взрослых», а также содержащие ненормативную лексику.
-
page— номер запрашиваемой страницы. Необязательный параметр. По умолчанию возвращается первая страница поисковой выдачи. Нумерация страниц начинается с нуля, первой странице соответствует значение0. -
fix_typo_mode— значение настройки режима исправления опечаток в поисковом запросе. Необязательный параметр. Возможные значения:FIX_TYPO_MODE_ON— исправление опечаток включено (значение по умолчанию). Опечатки в тексте поискового запроса автоматически исправляются.FIX_TYPO_MODE_OFF— исправление опечаток отключено. Опечатки в тексте поискового запроса не исправляются, поиск выполняется в полном соответствии с переданным запросом.
-
format— поиск изображений указанного формата. Необязательный параметр. Если параметр не задан, выполняется поиск по изображениям всех форматов. Возможные значения: -
size— поиск изображений указанного размера. Необязательный параметр. Если параметр не задан, выполняется поиск по изображениям всех размеров. Возможные значения:IMAGE_SIZE_ENORMOUS— изображения очень большого размера (более1600 × 1200в пикселях).IMAGE_SIZE_LARGE— изображения большого размера (от800 × 600до1600 × 1200в пикселях).IMAGE_SIZE_MEDIUM— изображения среднего размера (от150 × 150до800 × 600в пикселях).IMAGE_SIZE_SMALL— изображения маленького размера (от32 × 32до150 × 150в пикселях).IMAGE_SIZE_TINY— иконки (не более32 × 32в пикселях).IMAGE_SIZE_WALLPAPER— обои для рабочего стола.
-
orientation— поиск изображений с указанной ориентацией. Необязательный параметр. Если параметр не задан, выполняется поиск по изображениям с любой ориентацией. Возможные значения:IMAGE_ORIENTATION_VERTICAL— изображения с вертикальной ориентацией.IMAGE_ORIENTATION_HORIZONTAL— изображения с горизонтальной ориентацией.IMAGE_ORIENTATION_SQUARE— изображения с равными сторонами (квадрат).
-
color— поиск изображений с заданными параметрами цвета. Необязательный параметр. Если параметр не задан, выполняется поиск по изображениям с любыми цветовыми параметрами. Возможные значения:IMAGE_COLOR_COLOR— цветные изображения.IMAGE_COLOR_GRAYSCALE— черно-белые изображения.IMAGE_COLOR_RED— изображения, в которых основной цвет — красный.IMAGE_COLOR_ORANGE— изображения, в которых основной цвет — оранжевый.IMAGE_COLOR_YELLOW— изображения, в которых основной цвет — желтый.IMAGE_COLOR_GREEN— изображения, в которых основной цвет — зеленый.IMAGE_COLOR_CYAN— изображения, в которых основной цвет — голубой.IMAGE_COLOR_BLUE— изображения, в которых основной цвет — синий.IMAGE_COLOR_VIOLET— изображения, в которых основной цвет — фиолетовый.IMAGE_COLOR_WHITE— изображения, в которых основной цвет — белый.IMAGE_COLOR_BLACK— изображения, в которых основной цвет — черный.
-
site— поиск изображений только на указанном сайте. Например:yandex.cloud. Необязательный параметр. Если параметр не задан, поиск выполняется по всем сайтам поисковой базы. -
docs_on_page— количество групп результатов, которое выводится на одной странице с результатами поиска. Возможные значения — от1до60. Необязательный параметр. Значение по умолчанию —20. -
folder_id— идентификатор каталога пользователя или сервисного аккаунта, от имени которого вы будете выполнять запросы. -
user_agent— строка, содержащая заголовок User-Agent . Параметр позволяет получить поисковую выдачу, ориентированную на конкретное устройство и браузер, в том числе мобильную выдачу. Необязательный параметр. Если параметр не задан, сервис возвращает стандартную выдачу по умолчанию.
Пример тела запроса
body.json
{ "query": { "search_type": "SEARCH_TYPE_RU", "query_text": "котики" }, "folder_id": "b1gt6g8ht345********" } -
-
Выполните gRPC-вызов, указав полученный ранее IAM-токен и путь к файлу с телом запроса:
grpcurl \ -rpc-header "Authorization: Bearer <IAM-токен>" \ -d @ < body.json \ searchapi.api.yandexcloud.kz:443 yandex.cloud.searchapi.v2.ImageSearchService/Search \ > result.json
В файл
result.jsonбудет сохранен результат выполнения поискового запроса, в полеrawDataсодержащий XML-ответ в кодировке Base64. -
-
Декодируйте результат из формата
Base64:echo "$(< result.json)" | \ jq -r .rawData | \ base64 --decode > result.xmlВ результате в файл
result.xmlбудет сохранен XML-ответ по запросу.