今日もメモをのこそう

あとでみるメモ代わり

シェルで画像を一括ダウンロードする

最近はWindowsでもWSL2でLinuxのシェルを使えるから便利。 何に使うというわけじゃないけど、規則的な名前で存在する画像(jpg or png)をローカルに落とすシェルをかいた。

#!/bin/bash

page= # ページ数を入れる
baseUrl='' # URLをいれる
for i in `seq 1 $page`
do

    ext='jpg'

    n=`printf %03d $i`
    url=$baseUrl$i
    fileName=$n.$ext
    if [ -e $fileName ]; then
        continue
    fi
    
    echo $url.$ext
    wget $url.$ext
    if [ $? != 0 ]; then
        ext='png'
        wget $url.$ext
    fi
    file=$i.$ext
    no=`echo $file | sed -e 's/\(.*\)\.\(.*\)/\1/g'`
    ext=`echo $file | sed -e 's/\(.*\)\.\(.*\)/\2/g'`
    newNo=`printf %03d $no`
    newFile=$newNo.$ext
    if [ $file != $newFile ]; then
        mv $file $newFile
    fi

    echo $i/$page
done

ローカルに落とすときに、3桁の0埋めしている。 Windows環境ではソートするときに、文字列としてソートするので。