WeAir

一个下载Pixiv指定画师的Shell脚本

起因

P站上看到有画师画得作品不错,想全部保存下来但是嫌一个一个的下载太慢,于是摸鱼造了这个轮子。

准备工作

因为API提供的数据是json格式的,所以需要先提前安装好用来处理json的命令行工具jq,以及需要安装下载工具aria2,另外还需要查看要下载的画师的P站ID。

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#!/usr/bin/env bash

read -p "请输入Pixiv作者ID:" member_id
if [[ `curl -sSL -k https://api.obfs.dev/api/pixiv/\?type\=member_illust\&id\=${member_id} | jq -r .code` = '422' ]]
then
echo -e "该ID不存在。\n"
exit 1
elif [[ `curl -sSL -k https://api.obfs.dev/api/pixiv/\?type\=member_illust\&id\=${member_id} | jq -r .illusts` = '[]' ]]
then
echo -e "该ID不存在。\n"
exit 1
else
mkdir ./${member_id}
fi
echo -e "下载中,请稍候……\n"
illust_page=1
while true
do
if [[ `curl -sSL -k https://api.obfs.dev/api/pixiv/\?type\=member_illust\&id\=${member_id}\&page\=${illust_page} | jq -r .illusts` = '[]' ]]
then
break
else
curl -sSL -k https://api.obfs.dev/api/pixiv/\?type\=member_illust\&id\=${member_id}\&page\=${illust_page} | jq . | grep -E "\"original_image_url\":|\"original\":" | sed -e "s/\"original_image_url\"://g;s/\"original\"://g;s/\"//g;s/[[:space:]]//g;s/i.pximg.net/i.pixiv.cat/g" >> ./download.txt
let illust_page++
continue
fi
done
cat ./download.txt | sort | uniq | tee ./download.txt &> /dev/null
while read line
do
while true
do
aria2c -c -d ./${member_id} -x 15 -s 5 ${line}
if [ -f ./${member_id}/`echo ${line} | rev | cut -d "/" -f 1 | rev` ]
then
break
else
continue
fi
done
done < ./download.txt
rm ./download.txt
echo -e "下载完成,共下载了`ls ./${member_id} | wc -l`张图片。"

或点击这里下载。

致谢

最后感谢用到的API程序HibiAPI,以及P站图片反向代理pixiv.cat