Сейчас ваша корзина пуста!
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.