基于curl,使用shell脚本批量下载魔法快报图片

今天突然发现魔法记录手游里竟然能看魔法快报!

但是一个个点进去看(而且还是小图,再点一次才能放大),也太费劲了,做成pdf再看多好!

首先随便点进一张图,使用 iPadOS “万物皆可拖动” 的思想把第一张图拖到屏幕边缘:

然后看电脑屏幕左下角,通过接力打开这个网页:

复制它的网址,然后再找另一张图片如法炮制,很容易发现网址的规律:

然后我们首先试验一下curl命令能否帮我们保存图片:

1
curl https://l13-prod-gs-tw-mfsn2.komoejoy.com/magica/resource/image_web/page/collection/magirepo/img/part1/magirepo_01_001.png --output ~/Desktop/1.png  

执行完后桌面上出现了!

那么接下来写shell脚本批量保存吧。

首先把网址中公共的部分放在变量url里:

1
url="https://l13-prod-gs-tw-mfsn2.komoejoy.com/magica/resource/image_web/page/collection/magirepo/img/part1/magirepo_01_0"

然后定义一个整数变量num,代表第几张图片:

1
num=1

我们的魔法快报总共有46张,因此num要逐渐加到46,可以使用while循环:

1
2
3
4
5
while(( $num<=46 ))
do
# do something here
let "num++"
done

因为网址中无论几位数统统加到3位,比如001,002,…,045,046,第一个0是公共的,可以直接写在变量url里,剩下的两位就需要判断了:

1
2
3
4
5
6
if (( $num<=9 ))
then
num_in_url="0${num}"
else
num_in_url=$num
fi

然后执行curl就好了~

1
2
echo "正在保存第${num_in_url}张图片"
curl "${url}${num_in_url}.png" --output "${num}.png"

最后的代码是这样子哒:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
url="https://l13-prod-gs-tw-mfsn2.komoejoy.com/magica/resource/image_web/page/collection/magirepo/img/part1/magirepo_01_0"
num=1
while(( $num<=46 ))
do
if (( $num<=9 ))
then
num_in_url="0${num}"
else
num_in_url=$num
fi

echo "正在保存第${num_in_url}张图片"
curl "${url}${num_in_url}.png" --output "${num}.png"
let "num++"
done

把它保存到一个shell文件里,比如madoka.sh,终端cd进入它所在的文件夹,执行

1
sh madoka.sh

执行完之后,所有的图片都被下载下来啦:

然后使用macOS自带的操作创建PDF吧:

最后我也把PDF文件放在这里了,圆厨自取:

资源无了,等我啥时候心情好再更新。 —— 2021.8.5

魔法快报第一部(点我下载)

微信的朋友复制此链接到浏览器下载:

https://share.weiyun.com/gUC8Ql5b