使用httpie下載圖片

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章