Актуальная версия скрипта доступна тут.
Часто наблюдаю в Интернете галереи на движке Danbooru
С галереями типа moe.imouto.org всё просто, потому что на страницах уже есть ссылки на исходные изображения.
Можно использовать менеджер закачки и обрабатывать каждую страничку отдельно, а можно и воспользоваться простым скриптом. Для его работы необходимо поставить библиотеку libpcre, в состав которой входит программа pcregrep, и wget.
Сам скрипт:
Запускается так: get.imouto.sh количество_страниц набор_тегов
Теги соединяются с помощью знака "+".
Скрипт легко переделывается для работы с konachan.com:
С галереями типа danbooru.donmai.us сложнее, потому что там прямых ссылок на картинки нет.
Познаний в bash хватило на такой скрипт:
Запуск осуществляется так же.
Скрипт можно переделать для chan.sankakucomplex.com, для него куки не нужны.
Скрипт:
Последние два скрипта создают файл "rename.bat", в котором содержатся команды для переименования файлов в том порядке, в котором они идут в галерее. В файле "not-found.txt" сохраняются URL картинок, которые не удалось скачать с сервера.
На danbooru.donmai.us с 14:00 до 14:25 MSK ежедневно проводится обслуживание. В этот промежуток времени он возвращает страницу с текстом об этом на любой запрос.
Буду благодарен. если кто-то оптимизирует мои поделки.
Часто наблюдаю в Интернете галереи на движке Danbooru
- danbooru.donmai.us
- moe.imouto.org
- konachan.com
- chan.sankakucomplex.com
С галереями типа moe.imouto.org всё просто, потому что на страницах уже есть ссылки на исходные изображения.
Можно использовать менеджер закачки и обрабатывать каждую страничку отдельно, а можно и воспользоваться простым скриптом. Для его работы необходимо поставить библиотеку libpcre, в состав которой входит программа pcregrep, и wget.
Сам скрипт:
Это вариант для moe.imouto.org.#! /bin/bash for ((i=1; i<=$1; i++)) do echo ==== Page $i ==== >>get.imouto.txt wget "http://moe.imouto.org/post?page=$i&tags=$2" -O - |pcregrep -o -e 'href[^ ]+\.[^ ^ico]{4}'|sed -e 's/href\=\"//g' -e 's/\"//g'|uniq|grep imouto >>get.imouto.txt done; wget -nc -i get.imouto.txt
Запускается так: get.imouto.sh количество_страниц набор_тегов
Теги соединяются с помощью знака "+".
Скрипт легко переделывается для работы с konachan.com:
Запускается так же.#! /bin/bash for ((i=1; i<=$1; i++)) do echo ==== Page $i ==== >>get.konachan.txt wget "http://konachan.com/post/index?page=$i&tags=$2" -O - |pcregrep -o -e 'href[^ ]+\.[^ ^ico]{4}'|sed -e 's/href\=\"//g' -e 's/\"//g'|grep Konachan >>get.konachan.txt done; wget -nc -i get.konachan.txt
С галереями типа danbooru.donmai.us сложнее, потому что там прямых ссылок на картинки нет.
Познаний в bash хватило на такой скрипт:
Для правильной работы скрипта надо зарегистрироваться на сайте и сохранить куки в файл c.txt и положить его в папку, в которую будт производиться закачка.#! /bin/bash # получаем ссылки на изображения и снабжаем файл разделителями на страницы for ((i=1; i<=$1; i++)) do echo ==== page $i === >>get2.donboru.txt wget "http://danbooru.donmai.us/post?page=$i&tags=$2" --load-cookies="c.txt" -U "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 (.NET CLR 3.5.30729)" -O - |pcregrep -o -e 'src[^ ]+preview[^ ]+'|sed -e 's/src\=\"//g' -e 's/\"//g' -e 's/\%20/ /g' -e 's/preview\///g' >>get2.donboru.txt done; # скачиваем всё, что качается wget -nc -t 0 -i get2.donboru.txt -U "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 (.NET CLR 3.5.30729)" # очищаем и сортируем список ссылок cat get2.donboru.txt|pcregrep -o -e 'http.+'|sort > get2.donboru.jpg.txt a=1 for name in `cat get2.donboru.jpg.txt|sed 's/\.jpg//'`; do echo $a $name let "a=a+1" if [ ! -f `basename $name.jpg` ] # если нет jpg, то качаем png then wget -nc -t 0 $name.png -U "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 (.NET CLR 3.5.30729)" if [ ! -f `basename $name.png` ] # если нет png, то качаем gif then wget -nc -t 0 $name.gif -U "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 (.NET CLR 3.5.30729)" if [ ! -f `basename $name.gif` ] # если нет gif, то качаем jpeg then wget -nc -t 0 $name.jpeg -U "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 (.NET CLR 3.5.30729)" if [ ! -f `basename $name.jpeg` ] # если нет jpg, то качаем JPG then wget -nc -t 0 $name.JPG -U "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 (.NET CLR 3.5.30729)" if [ ! -f `basename $name.JPG` ] # если нет JPG, то качаем PNG then wget -nc -t 0 $name.PNG -U "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 (.NET CLR 3.5.30729)" if [ ! -f `basename $name.PNG` ] # если нет PNG, то качаем GIF then wget -nc -t 0 $name.GIF -U "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 (.NET CLR 3.5.30729)" if [ ! -f `basename $name.GIF` ] # если нет GIF, то качаем JPEG then wget -nc -t 0 $name.JPEG -U "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 (.NET CLR 3.5.30729)" if [ ! -f `basename $name.JPEG` ] then echo $name >> not-found.txt fi # Not found fi #JPEG fi #GIF fi #PNG fi #JPG fi #jpeg fi #gif fi #png done; # делаем батник для переименования файлов echo -n Creating rename.bat;a=1;for i in `cat get2.donboru.txt|grep ^http | pcregrep -o -e '\/data\/[a-f0-9]+'|sed 's/\/data\///g'`; do echo move `dir $i*` `printf %06d $a`.`dir $i*`>>rename.bat;echo -n .; let "a=a+1"; done;echo Done! # прибираемся за собой #rm -f get*.txt *.htm*
Запуск осуществляется так же.
Скрипт можно переделать для chan.sankakucomplex.com, для него куки не нужны.
Скрипт:
Последнюю строчку можно раскомментировать, чтобы скрипт удалил за собой все следи своей работы.#! /bin/bash # получаем ссылки на изображения и снабжаем файл разделителями на страницы for ((i=1; i<=$1; i++)) do echo ==== page $i === >>get2.sankaku.txt wget "http://chan.sankakucomplex.com/post?page=$i&tags=$2" -U "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 (.NET CLR 3.5.30729)" -O - |pcregrep -o -e 'src[^ ]+preview[^ ]+'|sed -e 's/src\=\"//g' -e 's/\"//g' -e 's/\%20/ /g' -e 's/preview\///g' >>get2.sankaku.txt done; # скачиваем всё, что качается wget -nc -t 0 -i get2.sankaku.txt # очищаем и сортируем список ссылок cat get2.sankaku.txt|grep ^http|sort > get2.jpg.sankaku.txt a=1 for name in `cat get2.jpg.sankaku.txt|sed 's/\.jpg//'`; do echo $a $name let "a=a+1" if [ ! -f `basename $name.jpg` ] # если нет jpg, то качаем png then wget -nc -t 0 $name.png -U "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 (.NET CLR 3.5.30729)" if [ ! -f `basename $name.png` ] # если нет png, то качаем gif then wget -nc -t 0 $name.gif -U "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 (.NET CLR 3.5.30729)" if [ ! -f `basename $name.gif` ] # если нет gif, то качаем jpeg then wget -nc -t 0 $name.jpeg -U "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 (.NET CLR 3.5.30729)" if [ ! -f `basename $name.jpeg` ] # если нет jpg, то качаем JPG then wget -nc -t 0 $name.JPG -U "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 (.NET CLR 3.5.30729)" if [ ! -f `basename $name.JPG` ] # если нет JPG, то качаем PNG then wget -nc -t 0 $name.PNG -U "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 (.NET CLR 3.5.30729)" if [ ! -f `basename $name.PNG` ] # если нет PNG, то качаем GIF then wget -nc -t 0 $name.GIF -U "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 (.NET CLR 3.5.30729)" if [ ! -f `basename $name.GIF` ] # если нет GIF, то качаем JPEG then wget -nc -t 0 $name.JPEG -U "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 (.NET CLR 3.5.30729)" if [ ! -f `basename $name.JPEG` ] then echo $name >> not-found.sankaku.txt fi # Not found fi #JPEG fi #GIF fi #PNG fi #JPG fi #jpeg fi #gif fi #png done; # делаем батник для переименования файлов echo -n Creating rename.bat;a=1;for i in `cat get2.sankaku.txt|grep ^http | pcregrep -o -e '[a-f0-9]+\.'|sed 's/\.//'`; do echo move `dir $i*` `printf %06d $a`.`dir $i*`>>rename.bat;echo -n .; let "a=a+1"; done;echo Done! # убираем за собой #rm -f get*.sankaku.txt *.htm*
Последние два скрипта создают файл "rename.bat", в котором содержатся команды для переименования файлов в том порядке, в котором они идут в галерее. В файле "not-found.txt" сохраняются URL картинок, которые не удалось скачать с сервера.
На danbooru.donmai.us с 14:00 до 14:25 MSK ежедневно проводится обслуживание. В этот промежуток времени он возвращает страницу с текстом об этом на любой запрос.
Буду благодарен. если кто-то оптимизирует мои поделки.