要知道有的時候,直接下載是不行的,需要定製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