要知道有的时候,直接下载是不行的,需要定制http头信息才可以,所以这里,使用httpie的shell脚本来下载文件
#!/bin/bash
#采用httpie来下载图片,因为需要处理referer头
#made by davidsu33
#2017-5-17
DOWNLOAD_DIR=~/images/lyn
GALLERY_LYN=18071
INDEX_LYN=22678
IMAGE_MAX_COUNT=40
#下载图片的函数,需要传入路径参数
#三次下载失败,则返回失败信息
function download_image()
{
if [ $# -ne 1 ]; then
echo "参数数目不正确,用法 download_image url"
return 1
fi
#如果不是目录创建目录
if [ ! -d "$DOWNLOAD_DIR" ];then
#创建目录成功不处理,失败的话退出
if mkdir "$DOWNLOAD_DIR"; then
:
else
echo "创建目录失败:$DOWNLOAD_DIR"
return 2
fi
fi
url=$1
ret=0
file=`echo $url | awk 'BEGIN{FS="/"} {print $7;}'`
file="$DOWNLOAD_DIR/$file"
echo "正准备下载文件: $file"
http GET $url referer:http://www.nvshens.com -d -o $file
return $ret
}
#根据gallery和index来生成下载url列表,默认文件个数100个
function generator_urls()
{
if [ $# -ne 2 ]; then
echo "参数数目不对,需要输入两个参数 generator_urls gallery_id index_id"
return 1
fi
gallery=$1
index=$2
urlfmt0="https://t1.onvshen.com:85/gallery/%d/%d/%d.jpg"
urlfmtn="https://t1.onvshen.com:85/gallery/%d/%d/%03d.jpg"
for((i=0; i<=$IMAGE_MAX_COUNT; ++i)); do
if [ $i -eq 0 ];then
url=`printf $urlfmt0 $gallery $index 0`
else
url=`printf $urlfmtn $gallery $index $i`
fi
echo "url=$url"
if download_image $url ;then
:
else
echo "下载失败,不再继续下载...."
break
fi
done
}
generator_urls $GALLERY_LYN $INDEX_LYN
exit 0