Массовая Загрузка, Обработка И Выгрузка Изображений В Битрикс На Python3



А как насчет более подробной информации? Месяц назад в нашу команду поступило задание примерно следующего содержания: запускается новый сайт интернет-магазина, работающий на Битриксе, все товары в его базе уже зарегистрированы, но фотографии к каждому товару заполнены не полностью( к каждому товару есть только подробное фото, а превью - фотографий и дополнительных изображений нет).

Для каждого изделия необходимо было сделать:

  • Загрузите каждую подробную фотографию
  • Измените его размер до необходимого разрешения и обработайте в зависимости от статуса товара (разрешение фото для люксового товара выше, чем для товара из категории масс-маркета)
  • Загрузите это фото как дополнительное изображение
  • Измените размер одной и той же фотографии до разрешения, необходимого для трех типов изображений предварительного просмотра продукта, и загрузите ее в поля изображения предварительного просмотра.

  • Загрузите со старого сайта дополнительные фотографии для каждого товара и подгоните их под разрешение основной фотографии (для целей данного поста будем считать, что доступа к базе данных старого сайта нет)
  • Загрузите дополнительные фотографии в раздел дополнительных изображений.

Так как мы общаемся в основном на Python, с Битриксом мы не знакомы, а написание и использование модулей на PHP для нас вообще мрак, мы начали искать информацию, как это сделать просто, желательно тоже на Python. Информации было мало, а точнее почти ноль, поэтому для тех, кто любит в данном случае наваливать жесткий Python-код, а не решать все вопросы встроенными инструментами, написана эта статья.

Предполагается, что вы умеете работать с Python и SQL, знаете библиотеки request, bs4, sqlite3, если нет, то информация все равно будет полезна.



Шаг 1. Массовое получение ссылок на изображения из Битрикс

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

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

Это можно сделать путем парсинга карточки товара в Битриксе, а можно просто (как оказалось) скачать таблицу с соответствующим ID товара и ссылкой на подробное изображение.

Для этого перейдите в раздел Ресурсы > Каталог > Каталог товаров > Эelements.

Массовая загрузка, обработка и выгрузка изображений в Битрикс на Python3

Каталог продуктов Битрикс Видите механизм, выделенный на фотографии? Нажмите на нее и настройте поля, которые будут отображаться в таблице в зависимости от вашей задачи.



Массовая загрузка, обработка и выгрузка изображений в Битрикс на Python3

Установка стола Для нашей конкретной задачи нам нужна была только подробная картинка, но в зависимости от ваших настроек они могут отличаться.

Нажмите кнопку «Применить» и получите красивый вид таблицы нашей продукции.



Массовая загрузка, обработка и выгрузка изображений в Битрикс на Python3

Теперь нам нужно скачать эту таблицу как обычную таблицу Excel. Для этого нажмите эту кнопку:

Массовая загрузка, обработка и выгрузка изображений в Битрикс на Python3

Поздравляем, вы загрузили полную таблицу Excel со всеми продуктами, их идентификаторами, номерами артикулов и ссылками на подробное фото.

А если вы уже готовы распаковать свой модуль для работы с таблицами Excel на Python, то спешу вас прервать и открыть скачанный файл в текстовом редакторе:

Массовая загрузка, обработка и выгрузка изображений в Битрикс на Python3

Оказывается, это обычный html-документ, что нас конечно радует. Полученные данные было бы неплохо привести в удобный формат плюс-минус, то есть загрузить в локальную базу данных.

Прежде чем вы сможете загрузить что-либо в таблицу, вам необходимо ее создать: (Хотелось бы отметить, что этот шаг не является обязательным, и если вам удобно хранить данные в формате json, txt или той же таблице, пожалуйста, сделайте это).

   

CREATE TABLE "elements" (

Теги: #python #php #sql #Битрикс #1С-Битрикс #Битрикс Картинки #Продукты Битрикс
Вместе с данным постом часто просматривают: