起因
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。