Скачивание картинок

При скачивании картинок попутно узнавать её разрешение в пикселах 2.0

Доступно владельцам лицензии

Gorn

A-Parser Enterprise License
A-Parser Enterprise
Скачиваю большие количества (много больше 1 млн) картинок,
апарсер прекрасно их качает.
Но потом приходится их сортировать по разрешению и ориентации - портрет/ландшафт.
Сейчас для такой задачи использую утилиту Amoiksorter, она медленная, но единственная может справляться с миллионами картинок.
Было бы здорово, чтобы апарсер мог после скачивания картинки записывать и её разрешение по вертикали/горизонтали (и по разным условиям записывать их в разные каталоги, например в одну портретную, а в другую ландшафтную ориентацию)
Наверное такие возможности есть в библиотеках ноды...
Поддержите меня - кому еще такое требуется ИЛИ МОЖЕТ ПОТРЕБОВАТЬСЯ в будущем (;-)
 
Получать размеры изображения скорее всего можно в JS парсере с помощью NodeJS модуля, например такого: https://www.npmjs.com/package/image-size
Ориентацию, как вариант, можно определять сравнивая ширину и высоту: если ширина больше высоты, то альбомная, иначе портретная.
В ближайшее время постараемся выложить такой пример.
 
  • Like
Реакции: Gorn
Пользователь Support разместил новый ресурс:

Скачивание картинок - Пример скачивания картинок с определением их размеров

Парсер скачивает по ссылках картинки и сохраняет их в results/images/
Имена картинок формируются из md5 ссылок, расширение берется из заголовков ответа.

Запросы
  • прямые ссылки на картинки

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

Для работы парсера необходимо установить NodeJS модули
  • md5...

Узнать больше об этом ресурсе...
 
Неплохо было бы сделать опцию чтобы картинки раскидывались по папкам landscape, portrait, square и возможно unknow а не в в одну папку как сейчас.
 
Просто используйте $orientation в Формате имени файла результата для создания нужного пути
 
Уважаемый Саппорт,
Предлагаю сделать следующую версию Скачивание картинок 1.0 https://a-parser.com/resources/415/
Что нужно:

1)
Просто используйте $orientation в Формате имени файла результата для создания нужного пути

Я поискал место, куда вписать $orientation, получилось только текстовый результат парсинга раскидать по каталогам
\aparser\results\portrait\jun-09_12-13-18.txt
\aparser\results\landscape\jun-09_12-13-20.txt
\aparser\results\none\jun-09_12-13-19.txt
КУДА вписать $orientation, чтобы картинки раскладывались по каталогам -
portrait\ landscape\ none\
?

2) Добавить возможность записывать картинки под заданными именами:
- я использую такие входные данные для парсинга (3 колонки):
ID записи в базе данных
URL картинки
каталог/ИмяКартинки

14986460 https://a-parser.com/wp-content/uploads/2020/10/main-la.png 6/05/63/foto1.jpg
14986979 https://lokeshdhakar.com/projects/lightbox2/images/image-5.jpg 7/95/63/foto2.jpg
14987107 https://i.gifer.com/9CgA.gif 0/75/73/foto3.jpg

Мне нужно, чтобы каждая картинки писалась в свой каталог и своим заранее заданным именем
results/images/$orientation/6/05/63/foto1.jpg
results/images/$orientation/7/95/63/foto2.jpg
results/images/$orientation/0/75/73/foto3.jpg

А в текстовый файл результата выводились все данные о картинке (входные и выходные):
ID; URL; каталог/ИмяКартинки; размер W*H; landscape; размер в байтах; код ответа сервера;

14986460; https://a-parser.com/wp-content/uploads/2020/10/main-la.png; 6/05/63/foto1.jpg;1600*960;107505; 200;

Менее важный пункт (то тоже нужный):
3) Добавить возможность отфильтровывания НЕНУЖНЫХ картинок по размеру.
Бывает, что картинки уже нет, вместо неё выводится "заглушка"- тоже картинка, но не нужная.
То есть иметь возможность задавать список ненужных
размеров картинок в байтах- например(43;455;8578;998) - картинки с такими размерами не записывать!

4) В далеком будущем - добавить обработку ВСЕХ форматов (а не только jpg), которые поддерживает модуль image-size.

Я написал большой текст, но 1) и 2) задачи довольно простые,
несколько строк добавить и протестировать - очень хочется это быстрее иметь.

Пункт 3) конечно тоже нужен, но его наверное делать дольше,
поэтому прошу реализовать 1) и 2) в первую очередь.

С уважением, Gorn
 
Пользователь Support обновил ресурс Скачивание картинок новой записью:

Обновление 2.0

  • Парсер переписан на JS API v2
  • Оптимизированы импорты
  • Добавлена возможность сортировать картинки по каталогам в зависимости от ориентации
  • Добавлена возможность фильтровать картинки по размеру файла

Узнать больше об этом обновлении...
 
КУДА вписать $orientation, чтобы картинки раскладывались по каталогам
Добавить возможность отфильтровывания НЕНУЖНЫХ картинок по размеру.
В обновлении добавлены соответствующие возможности.
Добавить возможность записывать картинки под заданными именами
Это выходит за рамки данного примера, но в целом легко реализуется добавлением соответствующей логики (разделение запроса на части и их использование в нужных местах) в JS парсер.
В далеком будущем - добавить обработку ВСЕХ форматов (а не только jpg), которые поддерживает модуль image-size.
В данном парсере нет ограничений по формату файла, поэтому не совсем понятно о чем речь...
 
  • Like
Реакции: Gorn
Может пригодится, установка модуля image-size:

export PATH=$PWD/dist/nodejs/:$PATH
Данную команду нужно выполнять в корне папки парсера (т.к. dist ведь там находится)

Далее переходите в files
cd files/

И там устанавливаете модуль
npm install image-size --save
 
  • Like
Реакции: Gorn
Возникает ошибка при попытке скачать картинку
Код:
JavaScript execution error(parse v2)(JS::Example::ImageDownloader, pid: 4492#2, query: https://lokeshdhakar.com/projects/lightbox2/images/image-5.jpg): TypeError: sizeOf is not a function at JS_Example_ImageDownloader.parse (files/parsers/Example-ImageDownloader/Example-ImageDownloader.js:42:38) at async JS_Example_ImageDownloader.__do_parse (evalmachine.:1:70666) at async Object.__processIncomingData (evalmachine.:1:15246)
 
Для работы парсера необходимо установить NodeJS модуль image-size
Модуль стоит aparser\dist\nodejs\node_modules\image-size
Проверял командой

Код:
npx image-size logo.png

UPD: переустановил модуль image-size в директорию
aparser\files\node_modules\

ошибка та же
 
Последнее редактирование:
Назад
Верх