Парсинг Google Image Search API

31.08.14

Интеграция - WEB-интеграция

Для начала давайте найдем хотя бы одну причину, почему парсинг Google Image Search API нужен в 1С. Например, для того, чтобы устанавливать картинки номенклатуры, находя их в Google Images, не выходя из 1С.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Google images API
.epf 7,03Kb
25
25 Скачать (1 SM) Купить за 1 850 руб.
Суть процесса такова, что мы отправляем http-запрос с определенными параметрами, разделяемыми символом «&» и получаем ответ, который нужно обработать.

Наш запрос: http://ajax.googleapis.com/ajax/services/search/images?v=1.0&rsz=2&imgsz=large&q=water&start=0

Я не буду подробно описывать все параметры, их вы можете изучить самостоятельно.

Опишу только те параметры, которые используются в запросе:

v — версия протокола, сейчас доступна только «1.0»;
rsz — количество возвращаемых изображений;
imgsz — размер изображений;
q — это слово, которое мы ищем;
start — начальное значение результата запроса (например, если мы хотим пропустить первые 2 изображения, то значение должно быть равно «3» — то есть, начинать с третьего изображения).

В результате нашего запроса мы получаем вот такой ответ:
{"responseData": {
	"results":[
		{
			"GsearchResultClass":"GimageSearch",
			"width":"825",
			"height":"529",
			"imageId":"ANd9GcRm5Y-v8pql1b14azVHUPbYDvz5Rf2d0gxT00C-LyC6hXI72Oldvz7bYeY",
			"tbWidth":"144",
			"tbHeight":"92",
			"unescapedUrl":"http://www.cleanwateraction.org/files/images/ca/Front%20image_drinking-water.jpg",
			"url":"http://www.cleanwateraction.org/files/images/ca/Front%2520image_drinking-water.jpg",
			"visibleUrl":"www.cleanwateraction.org",
			"title":"Protecting Drinking \u003cb\u003eWater\u003c/b\u003e | Clean \u003cb\u003eWater\u003c/b\u003e Action",
			"titleNoFormatting":"Protecting Drinking Water | Clean Water Action",
			"originalContextUrl":"http://www.cleanwateraction.org/programinitiative/protecting-drinking-water-0",
			"content":"cup of \u003cb\u003ewater\u003c/b\u003e",
			"contentNoFormatting":"cup of water",
			"tbUrl":"http://t1.gstatic.com/images?q\u003dtbn:ANd9GcRm5Y-v8pql1b14azVHUPbYDvz5Rf2d0gxT00C-LyC6hXI72Oldvz7bYeY"
		},
		{
			"GsearchResultClass":"GimageSearch",
			"width":"550",
			"height":"339",
			"imageId":"ANd9GcTrB2HrLPag0WEBqAbho5jLbAPtgTBK7AzYDpqf4gOysga_34oFpTY1Gz2_",
			"tbWidth":"133",
			"tbHeight":"82",
			"unescapedUrl":"http://www.fengshuiweb.co.uk/wp-content/uploads/2013/03/Water-Rat-Feng-Shui.jpg",
			"url":"http://www.fengshuiweb.co.uk/wp-content/uploads/2013/03/Water-Rat-Feng-Shui.jpg",
			"visibleUrl":"www.fengshuiweb.co.uk",
			"title":"Characteristics of the \u003cb\u003eWater\u003c/b\u003e Rooster",
			"titleNoFormatting":"Characteristics of the Water Rooster",
			"originalContextUrl":"http://www.fengshuiweb.co.uk/animals/waterrooster.htm",
			"content":"Characteristics of the \u003cb\u003eWater\u003c/b\u003e",
			"contentNoFormatting":"Characteristics of the Water",
			"tbUrl":"http://t2.gstatic.com/images?q\u003dtbn:ANd9GcTrB2HrLPag0WEBqAbho5jLbAPtgTBK7AzYDpqf4gOysga_34oFpTY1Gz2_"
		}
	],
	"cursor":{
	"resultCount":"235,000,000",
		"pages":[
		{
		"start":"0",
		"label":1
		},
		{
		"start":"2",
		"label":2
		},
		{
		"start":"4",
		"label":3
		},
		{
		"start":"6",
		"label":4
		},
		{
		"start":"8",
		"label":5
		},
		{
		"start":"10",
		"label":6
		},
		{
		"start":"12",
		"label":7
		},
		{
		"start":"14",
		"label":8
		}
		],
		"estimatedResultCount":"235000000",
		"currentPageIndex":0,	"moreResultsUrl":"http://www.google.com/images?oe\u003dutf8\u0026ie\u003dutf8\u0026source\u003duds\u0026start\u003d0\u0026imgsz\u003dlarge\u0026hl\u003den\u0026q\u003dwater",
		"searchResultTime":"0.07"
	}
}, 
"responseDetails": null, 
"responseStatus": 200}

С этим ответом и предстоит работать. Не буду подробно описывать, что происходит в коде 1С, там есть комментарии. Вот код обработки:

Процедура КнопкаВыполнитьНажатие(Кнопка)

	// С параметрами запроса можно ознакомиться тут: https://developers.google.com/image-search/v1/jsondevguide?hl=ru
	
	РезультатЗапроса = ПолучитьИмяВременногоФайла("txt");
	КоличествоИзображений = 2; // Запрашиваем два изображения
	
	// Получаем страницу http://ajax.googleapis.com/ajax/services/search/images?v=1.0&rsz=2&imgsz=large&q=water&start=0
	Хост = "ajax.googleapis.com";
	Запрос = "/ajax/services/search/images?v=1.0&rsz=" + КоличествоИзображений + "&imgsz=large&q=water&start=0";
	
	Попытка
		Соединение = Новый HTTPСоединение(Хост);
		Соединение.Получить(Запрос, РезультатЗапроса);				
	Исключение	
		Сообщить(ОписаниеОшибки());
	КонецПопытки;
	
	// Получаем текст результата запроса
	Файл = Новый ТекстовыйДокумент;
	Попытка
		Файл.Прочитать(РезультатЗапроса, КодировкаТекста.Системная);
		Текст = Файл.ПолучитьТекст();		
	Исключение
		Сообщить(ОписаниеОшибки());
	КонецПопытки;
	
	// Обрабатываем результат запроса
	НачалоМассиваДанныхИзображений = Найти(Текст, "[") + 1;
	КонецМассиваДанныхИзображений = Найти(Сред(Текст, НачалоМассиваДанныхИзображений, СтрДлина(Текст)), "]") - 1;
	МассивДанныхИзображений = Сред(Текст, НачалоМассиваДанныхИзображений, КонецМассиваДанныхИзображений);
	// В переменной МассивДанныхИзображений хранится массив изображений с их параметрами: {"p1":"value","pn":"value"},{"p1":"value","pn":"value"}
	
	// Обрабатываем массив
	Для Н = 1 По КоличествоИзображений Цикл
		
		Сообщить("Изображение " + Строка(Н));
		НаборПараметровМассива = Сред(МассивДанныхИзображений, 2, Найти(МассивДанныхИзображений, "}") - 2); // Без {}
		
		МассивДанныхИзображений = Сред(МассивДанныхИзображений, Найти(МассивДанныхИзображений, "}") + 2, СтрДлина(МассивДанныхИзображений)); // Исключаем текущий элемент массива
		
		Если Н = 1 Тогда // Подразумеваем, что количество параметров будет одинаковым, поэтому один раз узнать их количество будет достаточно
			НаборПараметровДляВычисленияКоличества = НаборПараметровМассива;
			КоличествоПараметров = ПолучитьКоличествоПараметров(НаборПараметровДляВычисленияКоличества, СтрДлина(НаборПараметровМассива), ",");
		КонецЕсли;
		
		НаборПараметровДляВычисленияЗначений = НаборПараметровМассива;
		Для НН = 1 По КоличествоПараметров Цикл
			ПозицияРазделителя = Найти(НаборПараметровДляВычисленияЗначений, ",");
			
			ПараметрЗначение = Сред(НаборПараметровДляВычисленияЗначений, 1, ПозицияРазделителя - 1);
			Параметр = СтрЗаменить(Сред(ПараметрЗначение, 1, Найти(ПараметрЗначение, ":") - 1), """", "");
			Значение = СтрЗаменить(Сред(ПараметрЗначение, Найти(ПараметрЗначение, ":") + 1, СтрДлина(ПараметрЗначение)), """", "");
			Сообщить(Параметр + " / " + Значение);
			
			НаборПараметровДляВычисленияЗначений = Сред(НаборПараметровДляВычисленияЗначений, ПозицияРазделителя + 1, СтрДлина(НаборПараметровДляВычисленияЗначений)); // Исключаем текущую пару параметр/значение
		КонецЦикла;
		
	КонецЦикла;
	
КонецПроцедуры

Функция ПолучитьКоличествоПараметров(Стр, КонецСтроки, Разделитель)
	
	КоличествоПараметров = 0;
	
	Для Н = 1 По КонецСтроки Цикл
		
		ПозицияРазделителя = Найти(Стр, Разделитель);
		
		Если ПозицияРазделителя <> 0 Тогда
			КоличествоПараметров = КоличествоПараметров + 1;
		КонецЕсли;
		
		Стр = Сред(Стр, ПозицияРазделителя + 1, КонецСтроки);
		
	КонецЦикла;
	
	Возврат КоличествоПараметров + 1;
	
КонецФункции

Обработка разберет параметры изображений и их значения. Параметры самого запроса здесь не обрабатываются.

В результате можно получить, например, вот что: http://youtu.be/BwvNrmm-q7c

Google images API API

См. также

Оптовая торговля Розничная торговля WEB-интеграция 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

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

57600 руб.

26.11.2024    1235    1    1    

4

Сайты и интернет-магазины WEB-интеграция Системный администратор Программист Пользователь Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    18355    20    22    

18

Сайты и интернет-магазины Интеграция WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Платные (руб)

Интеграция 1С и Битрикс 24. Разработка имеет двухстороннюю синхронизацию 1С и Bitrix24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (платформа начиная с 8.3.23): 1С:Управление торговлей, 1С:Управление Нашей фирмой 3, 1С:Комплексная автоматизация 2, Объединенное решение: Модуль 1С:CRM 3 (3.0.21.3) +1С:ERP Управление предприятием 2. При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

7200 руб.

04.05.2021    20564    13    19    

18

WEB-интеграция Программист Бизнес-аналитик Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика ИТ-компания Платные (руб)

Модуль "Экспортер" — это расширение для 1С, предназначенное для автоматизации процессов выгрузки данных. Оно позволяет эффективно извлекать, преобразовывать и передавать данные из систем 1С в интеграционную платформу Spot2D. Подсистема упрощает настройку, снижает количество ручных операций и обеспечивает удобный контроль данных.

14400 руб.

20.12.2024    320    2    0    

5

WEB-интеграция Программист Руководитель проекта Платформа 1С v8.3 Конфигурации 1cv8 1С:Франчайзи, автоматизация бизнеса Платные (руб)

Расширение значительно упрощает написание API на 1С. Веб программисты получают простой и понятный доступ к 1С. Описание API создаётся автоматически и представляется в виде удобном как для человека, так и для программной обработки.

24000 руб.

27.09.2024    2483    1    0    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. sergei2k 01.09.14 14:06 Сейчас в теме
Можно использовать что-нибудь вот такое для обработки результата: http://infostart.ru/public/119601/
2. rougudz 13.06.16 11:33 Сейчас в теме
{"responseData": null, "responseDetails": "This API is no longer available.", "responseStatus": 403}

Этот API не больше не доступен.

печаль
3. echo77 1913 29.01.18 14:22 Сейчас в теме
(0) А что сейчас вместо этого API?
Оставьте свое сообщение