четверг, 15 апреля 2010 г.

Качаем пулы изображений с danbooru.donmai.us

Не всегда нужные изображения можно найти по тегу, или по тегу их слишком много, или требуется скачать серию картинок, объеденную какой-то узкой тематикой. На danbooru-подобных галереях такие группы изображений называются пулами (pool). Список изображений в пуле можно получить через API галереи в виде XML. Этим я и пользовался для выдирания ссылок на изображения.
Единственное, что огорчило меня, так это отсутствие параметра "limit", с помощью которого можно за раз выдернуть гораздо больше ссылок.
Сам скрипт получился таким:
#! /bin/bash

# настройки логина
danlogin=LOGIN
danpass=PASSWORD
ATH=`curl -s -c danbooru.txt -F"commit=Login" -F"user[name]=${danlogin}" -F"user[password]=${danpass}" http://danbooru.donmai.us/user/authenticate`

# параметры
pnum=$1
pcount=$2
uag="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)"

rm -f get2.danbooru.txt

# мутим листинг
for ((i=1; i<=$pcount; i++))
do
wget "http://danbooru.donmai.us/pool/show.xml?id=$pnum&page=$i" --load-cookies="danbooru.txt" -U "$uag" -O - |pcregrep -o -e 'file_url=[^ ]+'|sed -e 's/file_url=//g' -e 's/\"//g' -e 's/\/>//g'  >>get2.danbooru.txt
done;

# качаем листинг
wget -nc -i get2.danbooru.txt

# уборка
rm -f *.txt
Синтаксис: pooldan.sh номер_пула количество_страниц_в_пуле
Номер получается из URL вида http://danbooru.donmai.us/pool/show/903. В примере он равен 903. Количество страниц можно узнать внизу страницы пула. Я пока не придумал, как это число получить автоматически.
Чтобы скрипт заработал правильно, надо обязательно указать свои логин и пароль.