Пример использования Yandex Cloud Search для получения изображений

Yandex Cloud — это мощный инструмент, позволяющий разработчикам интегрировать поисковые возможности Yandex и не только в свои приложения. В этом примере мы рассмотрим, как использовать Yandex Cloud Search для получения изображений на заданную тему с помощью Python. Мы создадим класс, который будет взаимодействовать с API Yandex для получения изображений и обработки результатов.

Перед тем как начать, убедитесь, что у вас есть:

  • Учетная запись в Yandex Cloud.
  • Созданный проект с включенной службой Yandex Image Search.
  • Полученный API-ключ и идентификатор папки.
  • А так же настроен сервис аккаунт для доступа к search

Документация от Yandex Cloud

Установка необходимых библиотек

Вам потребуется установить библиотеку requests, если она еще не установлена. Это можно сделать с помощью pip:

pip install requests

Реализация кода

Теперь мы можем перейти к реализации кода. Ниже приведен пример класса YandexImageService, который взаимодействует с API Yandex для получения случайного изображения на заданную тему.

import os
import requests
import xml.etree.ElementTree as ET

class YandexImageService:
    def __init__(self):
        self.folder_id = "FOLDER ID"  # Ваш идентификатор папки
        self.api_key = "API KEY"  # Ваш API-ключ сервис аккаунта
        self.endpoint = f"https://yandex.ru/images-xml?folderid={self.folder_id}&apikey={self.api_key}"

    def get_image(self, topic):
        url = f"{self.endpoint}&text={topic}"

        try:
            response = requests.get(url)
            response.raise_for_status()  # Проверка на ошибки HTTP
        except requests.exceptions.RequestException as e:
            print(f"Ошибка при запросе к Yandex API: {e}")
            return ''

        xml = ET.fromstring(response.content)

        error = xml.find('.//error')
        if error is not None:
            error_code = error.get('code')
            error_message = error.text
            return f"Error (Code: {error_code} \n Message: {error_message})"

        image_link  = xml.find('.//image-properties/image-link')

        if image_link  is not None:
            return image_link.text
        else:
            return ''

Метод получения изображения

  • Метод get_image: Этот метод принимает один параметр — topic, который определяет тему изображения, которое мы хотим получить.
  • Формирование URL: URL формируется с использованием заданной темы.
  • Запрос к API: Мы выполняем GET-запрос к API и обрабатываем возможные ошибки, используя requests. Если запрос успешен, мы разбираем полученный XML-ответ.
  • Обработка ошибок: Если в ответе присутствует ошибка, метод возвращает код и сообщение об ошибке.
  • Извлечение ссылки на изображение: Если изображение найдено, мы возвращаем ссылку на него. В противном случае возвращается пустая строка.

Пример использования

Чтобы использовать класс, создайте его экземпляр и вызовите метод get_random_image, передав тему поиска:

if __name__ == "__main__":
    image_service = YandexImageService()
    topic = "котики"
    image_url = image_service.get_image(topic)
    if image_url:
        print(f"Найдено изображение: {image_url}")
    else:
        print("Изображение не найдено.")

Заключение

Использование Yandex Cloud Search для получения изображений — это простой и эффективный способ интеграции поисковых возможностей в ваше приложение. Приведенный код можно легко адаптировать для более сложных задач, таких как фильтрация изображений по размеру или формату. Надеемся, этот пример был полезен, и вы сможете использовать его в своих проектах. Цены – https://yandex.cloud/ru/docs/search-api/pricing


Больше на БЛОГ | RUVEM.RU | НОВОСТИ В ИТ

Subscribe to get the latest posts sent to your email.