Skip to content

maximus2526/ImageExtractPy

Repository files navigation

Image Extract from YML Feed

Скрипт для вигрузки товарів з YML фіду та завантаження їх зображень з організацією по категоріях.

Опис

Цей Python скрипт обробляє XML файл у форматі YML (Yandex Market Language) та:

  • Парсить всі категорії товарів
  • Створює структуру папок для кожної категорії
  • Для кожного товару створює окрему папку
  • Завантажує всі зображення товарів
  • Зберігає інформацію про товар у текстовому файлі

Структура вихідних папок

output/
├── {category_id}_{category_name}/
│   ├── {product_id}_{product_name}/
│   │   ├── info.txt              # Інформація про товар
│   │   ├── image_01.jpg          # Зображення 1
│   │   ├── image_02.jpg          # Зображення 2
│   │   └── ...
│   └── ...
└── ...

Вимоги

  • Python 3.7 або вище
  • Бібліотеки з requirements.txt

Встановлення

  1. Клонуйте репозиторій або завантажте файли
  2. Встановіть залежності:
pip install -r requirements.txt

Використання

🖱️ Для Windows (найпростіший спосіб)

Просто подвійний клік на файли:

  • run.bat - завантажить всі зображення
  • analyze.bat - покаже статистику фіду
  • test.bat - перевірить систему
  • fix_python_path.bat - виправить Python PATH (потрібні права адміністратора)

Якщо Python не знайдено:

  1. Спробуйте fix_python_path.bat (запустіть як адміністратор)
  2. Або встановіть Python з https://python.org
  3. Або додайте Python в PATH вручну

Автоматичний пошук Python:

Скрипти автоматично шукають Python в:

  • ✅ PATH системних змінних
  • ✅ C:\Python39, C:\Python310, C:\Python311, C:\Python312
  • ✅ C:\Program Files\Python*
  • ✅ C:\Users\USERNAME\AppData\Local\Programs\Python\Python*
  • ✅ Реєстрі Windows
  • ✅ Всіх папках Program Files

🐧 Для Mac/Linux

Швидкий аналіз фіду (без завантаження)

Перед завантаженням всіх зображень можна проаналізувати структуру фіду:

python3 analyze_feed.py

Це покаже:

  • Кількість категорій і товарів
  • Статистику по зображеннях
  • ТОП-10 категорій
  • Детальну інформацію по кожній категорії

Завантаження зображень

  1. Переконайтеся, що файл products_feed.xml знаходиться в тій же папці, що й скрипт

  2. Встановіть залежності:

pip3 install -r requirements.txt
  1. Запустіть скрипт:
python3 extract_images.py
  1. Скрипт почне обробку:

    • Парсинг XML файлу
    • Створення структури папок
    • Завантаження зображень
  2. Результати будуть збережені в папці output/

  3. Лог роботи зберігається в файлі extract_images.log

Особливості

  • Автоматична очистка назв файлів: Видаляє недопустимі символи з назв папок
  • Обмеження довжини назв: Обрізає занадто довгі назви до 200 символів
  • Пропуск існуючих файлів: Не завантажує зображення повторно якщо воно вже є
  • Затримка між запитами: 0.1 секунди між завантаженнями (можна змінити)
  • Детальне логування: Всі дії записуються в лог файл
  • Обробка помилок: Скрипт продовжує роботу навіть при помилках завантаження окремих зображень

Налаштування

У файлі extract_images.py можна змінити:

  • xml_file - назва XML файлу (за замовчуванням: products_feed.xml)
  • output_directory - папка для результатів (за замовчуванням: output)
  • delay_between_downloads - затримка між завантаженнями в секундах (за замовчуванням: 0.1)
  • timeout - таймаут для завантаження зображень в секундах (за замовчуванням: 30)

Приклад виводу

2025-10-23 10:00:00 - INFO - Початок роботи скрипта
2025-10-23 10:00:00 - INFO - Читання XML файлу: products_feed.xml
2025-10-23 10:00:01 - INFO - Парсинг категорій...
2025-10-23 10:00:01 - INFO - Знайдено категорій: 65
2025-10-23 10:00:02 - INFO - Парсинг товарів...
2025-10-23 10:00:05 - INFO - Знайдено товарів: 5432
2025-10-23 10:00:05 - INFO - Створення структури папок і завантаження картинок...
2025-10-23 10:00:06 - INFO - Обробка категорії: Тактичні рюкзаки (145 товарів)
...
2025-10-23 10:15:00 - INFO - Завершено!
2025-10-23 10:15:00 - INFO - Всього категорій: 65
2025-10-23 10:15:00 - INFO - Всього товарів: 5432
2025-10-23 10:15:00 - INFO - Завантажено картинок: 24567/24600

Структура info.txt

Кожен товар має файл info.txt з наступною інформацією:

ID: 2636701394
Назва: Тактичний рюкзак Armour Tactical Oxford 900D на 35 літрів Мультикам
Категорія: Тактичні рюкзаки
Кількість зображень: 10

Посилання на зображення:
1. https://images.prom.ua/6816406753_taktichnij-ryukzak-armour.jpg
2. https://images.prom.ua/6816406762_taktichnij-ryukzak-armour.jpg
...

Обробка помилок

Скрипт обробляє наступні ситуації:

  • Відсутній або пошкоджений XML файл
  • Недоступні URL зображень
  • Помилки мережі
  • Недопустимі символи в назвах файлів

Всі помилки записуються в лог файл з детальною інформацією.

Ліцензія

MIT License

Автор

Створено для обробки YML фідів інтернет-магазинів

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors