# <post> : Emit the file download url for a given post
e621_post_to_link() {
post="${1}"
[ "${post}" ] || return 1
wget -qO- "http://e621.net/post/show/${post}" | sed -e '/<li>Size: <a href=/!d; s/^.*<a[^h]*href="\([^"]*\)" .*$/\1/'
}
# <post> [filename] : Download the given post, optionally specifying a name
# if the name lacks an extension, use that of the original url
e621_download_post() {
post="${1}"
[ "${post}" ] || return 1
url="$(e621_post_to_link "${post}")"
eval $(echo "${url}" | sed -e 's/\?.*$//; s/^.*\///g; s/^\(.*\.\([^.]*\)\)$/file="\1" ext="\2"/')
file="${2:-${file}}"
if echo "${file}" | grep -vq "\."
then
file="${file}.${ext}"
fi
wget -O "${file}" --referer="http://e621.net/post/show/${post}" "${url}"
sleep 0.5
}
# <pool> : Emit a list of posts in this pool
# does not yet handle multipage pools
e621_pool_posts() {
pool="${1}"
[ "${pool}" ] || return 1
wget -qO- "http://e621.net/pool/show/${pool}" | cat tmp | sed -e '/<span class="*\(thumb \| thumb \| thumb\)*"/!d; s/^.* id="p\([0-9]*\)".*$/\1/'
}
# <pool> [start_count] : Download an entire pool, naming the files sequentially
e621_download_pool() {
pool="${1}"
[ "${pool}" ] || return 1
count="${2:-0}"
e621_pool_posts "${pool}" | while read post
do
name="$(printf "%02u" "${count}")"
e621_download_post "${post}" "${name}"
count=$(( ${count} + 1 ))
done
}