Парсим и ресайзим аватарки из пс выдачи яндекса

Получать картинки будем из кеша chrome. Наша задача состоит не только в том, чтобы выдернуть картинки из кеша браузера, но и перевести их из формата webp в jpg, отресайзить до 100px по сторонам, удалив из них не пропорциональные, а именно те, где ширина или высота менее/более 15% от 100px. А затем окончательно отресайзим их до пропорции 100×100 пикселей.

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

К сожалению, остальных фильтров покруче тут нет, поэтому не мудрствуя лукаво, выделяем все записи и копируем все url что выдала программа. Для этого: CTRL+A и CTRL+U

Вставляем url в текстовый файлик и сохраняем его.

Грепнем по созданному файлу в новый файл только то, что необходимо по шаблону:

grep '^https://im0-tub-ua.yandex.net/i?id=' Untitled-1.txt > url.txt

С вновь созданным файлом url.txt идём на linux систему и остальные действия выполним уже на ней.

Командная строка, ваш выход:

# создаём временный каталог
mkdir images

# скачиваем url сохраняя тот порядок в котором получен список
i=0;while read url; do ((i++)) ; wget -qO- $url > images/$i.webp ; done < url.txt

# конверим webp в jpg с ресайзом одной из сторон до 100 пискселей
# и удаляем ненужные более webp файлы
for file in images/* ; do convert $file -resize 100 $file.jpg ; rm $file ; done

# определяем не подходящие под пропорции сторон +/- 15% и удаляем их
for file in images/*; do i=$(identify -ping -format '%w %h' $file | awk '$1/$2<0.85||$1/$2>1.15{print $1/$2}') ; if [ -n "${i}" ]; then rm $file ; fi ; done

# переходим в каталог
cd images/

# делаем окончательный ресайз, сохраняем картинки по порядку и удаляем временный файл
i=0;for file in $(ls | sort -n) ; do ((i++)) ; convert $file -resize 100x100! $i.jpg ; rm $file ; done

# заворачиваем в архив
zip ../images.zip ./*

# выходим и удаляем временный каталог
cd .. && rm -r images

Готово.

UPD: все манипуляции выше, можно сделать одной командой. Для этого накатал специальный скрипт под Linux: https://github.com/avtobys/ava_parser

  1. Чистим полностью кеш в лисе
  2. Открываем выдачу яндекса и мотаем вниз заполняя кеш
  3. Запускаем команду указанную в readme
  4. Указываем любое имя для zip архива
  5. Complete!

 

Оставить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *