使用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


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