#!/usr/bin/env bash
html=$(wget --quiet --output-document=- "$1")
page_count=$(echo "$html" |\
grep --only-matching --perl-regexp 'pageCount\\":\K\d+')
[[ $page_count -gt 0 ]] || { echo 'no pages' && exit 1; }
publication_id=$(echo "$html" |\
grep --only-matching --perl-regexp 'publicationId\\":\\"\K[a-z0-9]+' |\
head -1)
[[ -n $publication_id ]] || { echo 'no publication_id' && exit 1; }
revision_id=$(echo "$html" |\
grep --only-matching --perl-regexp 'revisionId\\":\\"\K[0-9]+' |\
cut -d ' ' -f 1)
[[ -n $revision_id ]] || { echo 'no revision_id' && exit 1; }
title=$(echo "$html" |\
grep --only-matching --perl-regexp 'title\\":\\"\K[^"]+' |\
head -1 |\
sed 's/.$//' |\
# Remove '/'.
sed 's/\///g')
[[ -z $title ]] && title=issuu
tmp_dir=$(mktemp --directory)
for ((i = 1; i <= page_count; i++)); do
wget --quiet --output-document="${tmp_dir}/${i}.jpg" \
"https://image.isu.pub/${revision_id}-${publication_id}/jpg/page_${i}.jpg" &
done
echo -n 'Downloading... '
wait
echo done!
echo Converting...
# convert doesn't like long filenames(252 bytes, I think).
tmp_file="${tmp_dir}/t.pdf"
convert \
$(find "$tmp_dir" -type f -printf '%f\n' |\
sort --numeric-sort |\
awk -v dir="$tmp_dir" '{ printf dir "/" $1 " " }') \
"$tmp_file"
mv "$tmp_file" "$title".pdf
exit 0
# vim: set ft=bash