Skip to content

Instantly share code, notes, and snippets.

@QB
Created November 29, 2013 09:26
Show Gist options
  • Save QB/7703384 to your computer and use it in GitHub Desktop.
Save QB/7703384 to your computer and use it in GitHub Desktop.
情報処理技術者試験の過去問ファイルを一括でダウンロードするスクリプト
#!/bin/bash
# ITパスポートは無視する
# 平成21〜25年以外の数値を渡されることは想定していない
# 想定外の数値や変なモノを渡されて暴走しても作者は関知しない
# パラメータはコマンドライン引数で指定できる
# 年と季節を指定すると、そのときの試験問題を全科目丸ごと取ってくる
heisei=$1 # 試験の年度を平成で指定
kisetu=$2 # 春なら 1、秋なら 2 を指定
################ 設定ここまで ###################
debug=0 # デバッグするときは1を指定
seireki=`expr 1988 + $heisei`
nengou="h${heisei}"
dirname=${nengou}-${kisetu}
if [ $kisetu == 1 ] ; then
season="h"
else
season="a"
fi
if [ $kisetu == 1 -a $nengou == "h23" ] ; then # 震災
season="tokubetsu"
fi
header="http://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_${seireki}${nengou}_${kisetu}/${seireki}${nengou}${season}"
if [ $seireki -gt 2009 ] ; then
kiso=("fe" "ap")
elif [ $seireki == 2009 -a $kisetu == 2 ] ; then
kiso=("fe" "ap")
else
kiso=("fe" "ad" "ap") #シスアド
fi
kamoku1=("am" "pm")
kamoku2=("am2" "pm1" "pm2")
paper=("qs" "ans" "cmnt")
if [ $kisetu == 1 ]; then
high=("pm" "db" "es" "sc" "au")
else
high=("st" "sa" "nw" "sc" "sm")
fi
if [ $debug != 1 ] ; then
mkdir ${dirname}
mkdir ${dirname}/kiso ${dirname}/koudo
fi
getting() {
filename="${header}_${1}_${2}_${3}.pdf"
if [ ${1} == "fe" -o ${1} == "ad" -o ${1} == "ap" ]; then
directory="${dirname}/kiso"
else
directory="${dirname}/koudo"
fi
if [ $debug == 1 ] ; then
echo "wget -P $directory $filename"
else
wget -P $directory $filename
fi
}
# 基本/応用
for i in ${kiso[@]}; do
for j in ${kamoku1[@]}; do
for k in ${paper[@]}; do
if [ $j != "am" -o $k != "cmnt" ]; then #午前試験にcmntは無い
getting $i $j $k
fi
done
done
done
# 高度午前1
for k in qs ans; do
getting koudo am1 $k
done
# 高度その他
for i in ${high[@]}; do
for j in ${kamoku2[@]}; do
for k in ${paper[@]}; do
if [ $j != "am2" -o $k != "cmnt" ]; then #午前2にcmntは無い
getting $i $j $k
fi
done
done
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment