GMT ver.5 で貸出記録の印刷

2017年6月23日記事 地域図書館の貸出記録を取得  で作成したテーブルが、だいぶ充実してきました。

折角ですので、一度読んだ本を重複して図書館で借りたりしないように読書リストを作ってみようと思います。

上記のテーブルには著者名のフィールド auther、書名のフィールド title、借りた日(正確にはデータベース登録した日)のフィールド insertDateなどが存在します。

そこで、著者名でグループ化したうえで借りた日でソートした表をPDFにしました。これを紙に印刷したり、タブレット端末やスマートフォンにダウンロードして図書館に持って行けば、一度読んだことのある本を重複してまた借りるといった失敗が無くなります。

f:id:S_E_Hyphen:20171119140636j:plain

#!/bin/bash

#著者名を変数 $auther に入力
declare -a auther
auther=(\
`mysql -N -h 192.168.0.16 life_log << _SQL_
select auther from library
group by auther
order by auther;
_SQL_`)

for ( ( i=0; i<${#auther[*]}; i++ ) )
do
echo `expr $i % 2 ` ${auther[$i]}
done > auther_list.txt

# auther_list.txtの各行に該当する著者名のタイトルを
# table.txtに出力
rm table.txt
while read binary auther
do
mysql -N -h 192.168.0.16 life_log << _SQL_ >> table.txt
select $binary,date(insertDate),left(auther,14),left(title,45) from library
where auther="$auther" order by insertDate;
_SQL_
done < auther_list.txt
rm auther_list.txt

MAX_REC=55
nl=`cat table.txt | wc -l`
page=`expr $nl / $MAX_REC + 1`
psfile=temp.ps
rm temp.ps
for ( ( p=0; p<$page; p++ ) )
do
#table.txtを55行ずつに分ける
cat table.txt |\
awk --assign p="$p" --assign MAX_REC="$MAX_REC" 'p*MAX_REC<NR && NR<=(p+1)*MAX_REC {print $0}' > temp

# binary=1にGRAY200で着色
width=17
cat temp |\
awk -F "\t" '$1==1{printf "0.0 -%f\n 17.0 -%f\n 17.0 -%f\n0.0 -%f\n",NR,NR,NR-1,NR-1}' |\
gmt psxy -P -JX${width}c/25c \
-R0/${width}/-${MAX_REC}/0 \
-Bwesn \
-Byg1 \
-G200 \
-K >> $psfile

#著者名欄(4cm)を記入
gmt psbasemap -P -JX4c/25c \
-R0/4/-${MAX_REC}/0 \
-Bwesn \
-Byg1 \
-O -K >> $psfile
cat temp |\
awk -F "\t" '{printf "0.05 -%f %s\n",NR-0.1,$3}' |\
gmt pstext -J -R -F+jBL+a0.0+f8p,GothicBBB-Medium-UniJIS-UTF8-H,0/0/0 -O -K >> $psfile

#書名欄(11cm)を記入
gmt psbasemap -P -JX11c/25c \
-R0/11/-${MAX_REC}/0 \
-Bwesn \
-Byg1 \
-O -K -X4c >> $psfile
cat temp |\
awk -F "\t" '{printf "0.2 -%f %s\n",NR-0.1,$4}' |\
gmt pstext -J -R -F+jBL+a0.0+f8p,GothicBBB-Medium-UniJIS-UTF8-H,0/0/0 -O -K >> $psfile

#記入日(2cm)を記入
gmt psbasemap -P -JX2c/25c \
-R0/2/-${MAX_REC}/0 \
-Bwesn \
-Byg1 \
-O -K -X11c >> $psfile
cat temp |\
awk -F "\t" '{printf "1.0 -%f %s\n",NR-0.1,$2}' |\
gmt pstext -J -R -F+jBC+a0.0+f8p,GothicBBB-Medium-UniJIS-UTF8-H,0/0/0 -O >> $psfile

done
# PDFファイルに変換する
ps2pdf temp.ps library_list.pdf
rm temp.ps temp table.txt