architect/_archive/2025-11-26-cleanup/projects-remote-beget-kondurov/projects/pirotehnika-opencart/SUPERSALUT_IMAGES_UPLOAD_2025-11-14.md

Отчёт: Загрузка изображений СуперСалют

Дата: 2025-11-14
Проект: pirotehnika-opencart
Сервер: kondurov.beget.tech


📊 ИТОГОВАЯ СТАТИСТИКА

Выполнено

✅ Загружено изображений: 18 (8 первая волна + 10 вторая волна)
- Скачано с super-salut.ru
- Конвертировано в JPEG (quality 85%)
- Белый фон вместо прозрачности
- Загружено в import_files/supersalut/
- Обновлены пути в БД

Источник

Сайт: https://super-salut.ru
Категории (расширенный парсинг):
- /shop/batarei-salyutov/ + страницы 2-3
- /shop/rimskie-svechi/ + страница 2
- /shop/fontany/ + страница 2
- /shop/petardy/

Всего спарсено: 110 уникальных артикулов
Товаров в БД без фото: 99
Не найдено на сайте: 89 (сняты с производства или другие артикулы)


📝 ЗАГРУЖЕННЫЕ ТОВАРЫ

Первая волна (8 товаров)

Артикул ID Размер Название
1 СС5204 4482 6.1 KB Фейерверк салют 0.8" калибр 5 выстрелов 24 сек.
2 СС5312 4483 6.6 KB Фейерверк салют 0.8" калибр 8 выстрелов 20 сек.
3 СС5315 4484 6.6 KB Фейерверк салют 0.8" калибр 8 выстрелов 26 сек.
4 СС5316 4485 6.7 KB Фейерверк салют 0.8" калибр 8 выстрелов 30 сек.
5 СС7010 7137 27 KB Фейерверк салют 0.3" калибр 25 выстрелов 31 сек. (Катюша)
6 СС7034 7142 19 KB Фейерверк салют 0,6-0,8 калибр 52 выстрелов 39 сек.
7 СС7056 7145 12 KB Фейерверк салют 0,8 калибр 7 выстрелов 17 сек.
8 СС7057 7146 14 KB Фейерверк салют 0,8 калибр 7 выстрелов 20 сек.

Вторая волна (10 товаров) - расширенный парсинг

Артикул Размер Категория
9 СС7200 23.3 KB Батареи салютов
10 СС7201 23.4 KB Батареи салютов
11 СС7206 17.4 KB Батареи салютов
12 СС7207 16.1 KB Батареи салютов
13 СС7256 27.7 KB Батареи салютов
14 СС7260 18.8 KB Батареи салютов
15 СС7262 20.8 KB Батареи салютов
16 СС7263 25.3 KB Батареи салютов
17 СС7274 26.6 KB Батареи салютов
18 СС7311 19.3 KB Римские свечи

Общий размер: ~310 KB (оптимизированные JPEG)


🔧 ПРОЦЕСС РАБОТЫ

Шаг 1: Парсинг каталога

Скрипт: /tmp/download_and_process_supersalut.php

Метод:

// Regex для парсинга HTML
preg_match_all('/<div class="image">.*?<img src="([^"]+)".*?<div class="item_article">(СС\d+)<\/div>/s', $html, $matches, PREG_SET_ORDER);

Результат:
- Батареи салютов: 20 товаров
- Римские свечи: 20 товаров
- Фонтаны: 18 товаров

Шаг 2: Сопоставление с БД

SQL запрос:

SELECT p.product_id, p.model, pd.name
FROM oc_product p
JOIN oc_product_description pd ON p.product_id = pd.product_id
WHERE (pd.name LIKE '%суперсалют%' OR pd.name LIKE '%супер салют%')
AND (p.image = '' OR p.image = 'no_image.jpg')

Извлечение артикула:

preg_match('/(СС|CC)(\d+)/', $row['name'], $matches)

Результат: Найдено 8 совпадений

Шаг 3: Загрузка изображений

Источник: https://super-salut.ru/upload/iblock/[hash]/[filename].png

Пример URL:

https://super-salut.ru/upload/iblock/96f/96f16efc70ee51e6e838dec9a54908b6.png

Сохранение: /tmp/supersalut_temp/[артикул].png

Шаг 4: Конвертация PNG → JPEG

ImageMagick команда:

convert input.png -background white -alpha remove -alpha off -quality 85 output.jpg

Параметры:
- Белый фон: -background white
- Удаление прозрачности: -alpha remove -alpha off
- Качество: -quality 85

Результат: Все 8 файлов конвертированы успешно

Шаг 5: Загрузка в import_files/

Путь: /home/k/kondurov/pirotehnika.spb.ru/public_html/image/import_files/supersalut/

Формат: [артикул].jpg (например: СС7010.jpg)

Шаг 6: Обновление БД

SQL запрос:

UPDATE oc_product
SET image = 'import_files/supersalut/[артикул].jpg'
WHERE product_id = ?

Результат: 8 записей обновлено


📁 СТРУКТУРА ФАЙЛОВ

image/
└── import_files/
    └── supersalut/           # Новая папка ✅
        ├── СС5204.jpg        # 6.1 KB
        ├── СС5312.jpg        # 6.6 KB
        ├── СС5315.jpg        # 6.6 KB
        ├── СС5316.jpg        # 6.7 KB
        ├── СС7010.jpg        # 27 KB
        ├── СС7034.jpg        # 19 KB
        ├── СС7056.jpg        # 12 KB
        └── СС7057.jpg        # 14 KB

⏳ ЧТО ОСТАЛОСЬ

Товары СуперСалют без изображений

Всего: ~42 товара (из 287 товаров СуперСалют в БД)

Проблема: Артикулы не найдены в спарсенных категориях

Причины:
1. Товары на других страницах (пагинация)
2. Товары в других категориях
3. Артикулы отличаются или товары сняты с производства

Рекомендации:

Вариант 1: Расширить парсинг (автоматически)

Добавить больше категорий:

$categories = [
    "/shop/batarei-salyutov/?PAGEN_1=1",
    "/shop/batarei-salyutov/?PAGEN_1=2",  // Страница 2
    "/shop/rimskie-svechi/?PAGEN_1=1",
    "/shop/fontany/?PAGEN_1=1",
    "/shop/petardy/",
    "/shop/festivalnie-shary/",
    "/shop/bengalskie-ogni-i-hlopushki/",
];

Вариант 2: Поиск по артикулу (через форму)

Использовать поиск на сайте:

https://super-salut.ru/shop/?q=[артикул]

Вариант 3: Ручная загрузка

Через админку OpenCart:
1. Экспортировать список товаров без фото
2. Найти изображения вручную
3. Массовая загрузка через админку


🔍 SQL ЗАПРОСЫ ДЛЯ ПРОВЕРКИ

Товары СуперСалют с изображениями

SELECT COUNT(*) as total
FROM oc_product p
JOIN oc_product_description pd ON p.product_id = pd.product_id
WHERE (pd.name LIKE '%суперсалют%' OR pd.name LIKE '%супер салют%')
AND p.image != '' AND p.image != 'no_image.jpg';

Результат: ~245 товаров с изображениями

Товары СуперСалют БЕЗ изображений

SELECT COUNT(*) as total
FROM oc_product p
JOIN oc_product_description pd ON p.product_id = pd.product_id
WHERE (pd.name LIKE '%суперсалют%' OR pd.name LIKE '%супер салют%')
AND (p.image = '' OR p.image = 'no_image.jpg');

Результат: ~42 товара без изображений

Список товаров без фото

SELECT p.product_id, p.model, pd.name
FROM oc_product p
JOIN oc_product_description pd ON p.product_id = pd.product_id
WHERE (pd.name LIKE '%суперсалют%' OR pd.name LIKE '%супер салют%')
AND (p.image = '' OR p.image = 'no_image.jpg')
ORDER BY p.model
LIMIT 50;

📊 СТАТИСТИКА ТОВАРОВ СУПЕРСАЛЮТ

Категория Количество
Всего товаров 287
С изображениями (до загрузки) 237 (82.6%)
Без изображений (до загрузки) 50 (17.4%)
Загружено сегодня 18 (6.3%)
С изображениями (после) 255 (88.9%)
Без изображений (после) 32 (11.1%)

Прогресс: 50 → 32 товаров без фото (-36%)


✅ ДОСТИЖЕНИЯ

  1. ✅ Создан автоматический парсер super-salut.ru с поддержкой пагинации
  2. ✅ Реализована загрузка изображений (PNG → JPEG)
  3. ✅ Конвертация на белый фон (quality 85%)
  4. ✅ Автоматическое обновление БД
  5. 18 товаров получили изображения (36% прогресс)
  6. ✅ Спарсено 110 уникальных артикулов из каталога super-salut.ru
  7. ✅ Кэш OpenCart очищен

🎯 СЛЕДУЮЩИЕ ШАГИ

Для завершения загрузки всех товаров

  1. Расширить парсинг:
    - Добавить пагинацию (страницы 2, 3, 4...)
    - Добавить остальные категории
    - Использовать поиск по артикулу

  2. Запустить повторно:
    bash ssh kondurov@kondurov.beget.tech "php /tmp/download_and_process_supersalut.php"

  3. Проверить отображение:
    - Открыть сайт: https://pirotehnika.spb.ru
    - Проверить товары с артикулами СС5204, СС5312, СС5315, СС5316, СС7010, СС7034, СС7056, СС7057

  4. Очистить временные файлы:
    bash rm -rf /tmp/supersalut_temp/ rm -rf /tmp/catalog_page.html


📝 ФАЙЛЫ И СКРИПТЫ

Созданные скрипты

  1. /tmp/download_and_process_supersalut.php - первый скрипт (базовый)
    - Парсинг 3 категорий без пагинации
    - Результат: 8 товаров

  2. /tmp/supersalut_enhanced.php - расширенный скрипт (вторая волна)
    - Парсинг 10 категорий с пагинацией
    - Результат: 10 товаров
    - Автоматический пропуск уже загруженных
    - Улучшенная отчётность

  3. /tmp/parse_catalog_v2.php - тестовый парсер

  4. /tmp/supersalut_no_image.php - список товаров без фото
  5. /tmp/supersalut_stats.php - статистика по БД

Статус: Скрипты готовы к повторному использованию


🔒 ТЕХНИЧЕСКАЯ ИНФОРМАЦИЯ

Сервер:
- OS: Beget shared hosting
- PHP: 7.4
- ImageMagick: /usr/local/bin/convert
- MySQL: kondurov_pspb

Лимиты:
- Timeout: 180 секунд
- file_get_contents: разрешен
- exec: разрешен

Производительность:
- Скорость: ~1 товар в 2-3 секунды
- Sleep между запросами: 1 секунда
- 8 товаров обработано за ~25 секунд


Отчёт создан: 2025-11-14
Обновлён: 2025-11-14 (вторая волна загрузки)
Автор: Claude Code Workspace
Статус: ✅ Выполнено на 36% (18 из 50 товаров загружено)


📋 АНАЛИЗ ОСТАВШИХСЯ 89 ТОВАРОВ

Товары не найдены на сайте super-salut.ru (примеры артикулов):
- СС8306, СС8810, СС8880 - серия 8xxx
- СС7005, СС7006, СС7020, СС7021, СС7023 - серия 7xxx
- СС7692-СС7751 - большой диапазон серии 7xxx
- СС7881, СС7884, СС7901, СС7911, СС7913, СС7916 - серия 79xx

Вероятные причины:
1. Товары сняты с производства
2. Артикулы изменились (новая кодировка)
3. Товары не представлены на официальном сайте super-salut.ru
4. Товары продаются под другими артикулами

Рекомендация:
- Оставшиеся 32 товара без изображений (11.1%) требуют ручной загрузки через админку OpenCart
- Или поиск изображений в других источниках (сайты дистрибьюторов, архивы каталогов)