Занимаясь разработкой интернет-каталогов (или же интернет-магазинов) столкнулись с проблемой подбора картинок для товара. Не каждый заказчик может позволить внедрить в свои процессы фотографирование каждого товара (особенно когда их более 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, то на эту тему уже есть хорошие статьи