Pull to refresh

Автоматизация загрузки изображений для товаров в интернет-каталогах

Reading time 4 min
Views 22K
image

Занимаясь разработкой интернет-каталогов (или же интернет-магазинов) столкнулись с проблемой подбора картинок для товара. Не каждый заказчик может позволить внедрить в свои процессы фотографирование каждого товара (особенно когда их более 7000), да и есть ли смысл фотографировать товары когда их изображения уже есть в интернете, причем абсолютно легально на сайтах производителей. Вручную скачивать-заливать изображения — не вариант. За время работы испробовали массу способов «автоматизации» данного процесса:
  • Выгрузка товаров из 1С и синхронизация картинок
  • Загрузка картинок «оптом» через FTP
  • Поиск картинок средствами Google API


Выгрузка товаров из 1С и синхронизация картинок


Ситуация: магазин торгует секонд-хенд и стоковой одеждой. Проблема заключается в том, что фотографий нет или найти их очень проблематично. Одежда приходит в баулах и в магазине даже не знают, что в них находится (покупают на развес).

Девушка-товаровед занимается приемкой, в базу 1С заносит данные о товаре. Эту вещь кладут на столик с белым фоном, над которым закреплена обычная цифровая фотокамера. Далее девушка нажимает специально обученную кнопочку в 1С, по нажатию на нее запускается внешнее приложение, которое фотографирует товар и сохраняет картинку в папку, называя файл по артикулу.

Профит: фотка хранится и в 1С, продавцам удобно ориентироваться в товаре. Например, приходит покупатель с сайта и говорит что хочет товар такого-то артикула или названия, все забивается в поиск 1С и помимо сухого описания выдается и изображение. Теперь девушка знает товар в лицо и с легкостью может найти его в море других вещей. Секонд-хенд же...

Вернемся к делу. Папка на локальном компьютере синхронизируется с сервером, на котором размещен сайт. Далее на сервере картинки ресайзятся до нужных размеров и сохраняются в нужным местах. Отдельная песня про то, как ресайзить 7000 картинок на обычном хостинге, поверьте это реально.

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

Загрузка картинок «оптом» через FTP


Тут все проще, ситуация такая: у заказчика есть фирменные изображения, заливать в ручную через веб-интерфейс просто не реально, их очень много, этих картинок, на каждый товар есть более 5-6 дополнительных изображений. Не бойтесь, как правило производители товара предоставляют его изображения, именуя файлы уже по артикулу.

Картинки просто заливаются на FTP, а сайт знает где их искать. Все просто и понятно.

Поиск картинок средствами Google API


Теперь самое интересное, как нам кажется. Ситуация следующая: магазин, который торгует офлайн известными брендами (Grohe, Tarkett и прочее интерьерно-отделочный стафф) решил сделать для начала интернет-каталог своих товаров. Как вы понимаете, изображения там играют решающую роль. В магазине несколько тысяч наименований (около 15000) и синхронизировать сайт с базой продукции пока не предоставляется возможным. На занесение товара будет выделено несколько специально обученных обезьянок. И понятно, что человек часть изображений будет искать в интернете, сохранять их, загружать и т.д. Очень долго.

Мы нашли простой и изящный способ загрузки изображений. Google предоставляет свой Google Search AJAX API, грех им не воспользоваться. В техническую реализацию вдаваться нет смысла — там все просто.

В описание товара обязательно входит бренд и артикул, специфика данной продукции (строительный стафф) такова, что есть такое понятие как «Коллекция» — набор товаров. И после добавления этих данных отправляется запрос в API Google, а он возвращает JSON-массив с информацией о найденных изображениях. Изображения показываются «вбивателю» и он выбирает подходящую картинку для загрузки и приведения ее в необходимый формат. В 90% случаев картинки удовлетворяют потребности.

Все довольны…

Давайте не будем дискутировать на тему правомерности использования данных изображений, пусть выбор останется на совести «вбивателя», так как он выбирает источник загрузки и визуально может определить фирменная это картинка или нет. Также следует отметить, что продавец — официальный представитель этих брендов в нашем городе и он имеет право использовать изображения с сайтов производителей.

Ссылки на сайты давать не будем, боимся хабраэффекта, и пиар данных ресурсов тут неуместен. Кому интересно — стучитесь в личку.

UPD

В связи с большим количеством вопросов в ПМ выкладываю пример (наши разработки сделаны на ZendFramework, этот код всего лишь для примера)

Если вам не нужен AJAX, тогда все проще простого.
http://ajax.googleapis.com/ajax/services/search/images?v=1.0&q=Филлипинский%20долгопят
Существуют и дополнительные параметры фильтрации изображений.

PHP выполняет запрос  и API возвращает вам объект в формате JSON:

  $query = 'Филлипинский долгопят';
  $body = file_get_contents('http://ajax.googleapis.com/ajax/services/search/images?v=1.0 &q='.urlencode($query));
  $json = json_decode($body);
    foreach ($json->responseData->results as $result) {
       echo '<img src="' . $result->tbUrl . '" title="' . $result->contentNoFormatting . '"/>';
      }


* This source code was highlighted with Source Code Highlighter.

В массиве result находится много полезной информации. Список самых нужных ключей массива:
  • imageId – уникальный идентификатор картинки
  • url – экранированный url картинки
  • width, height – размеры картинки
  • tbWidth, tbHeight – размеры превью
  • tbUrl – ссылка на превью картинки
  • title – описание картинки


Поиск по новостям, блогам и т.д. работает так же, но возвращает другие ключи массива.
Если вам все-таки нужен поиск с AJAX, то  на эту тему уже есть хорошие статьи
Tags:
Hubs:
+27
Comments 50
Comments Comments 50

Articles