ケアマネの訪問依頼はこちら、あなたの会社・団体に訪問します!

ゆるゆるな日曜、あんしん村画像集をメンテ、836日・23901枚のファイルは一つ一つ手作業で・・・しません(笑)、コマンド1回たたけば、、、sh+awk+OneDrive+IIS環境でさくっと終わる(笑)、そんな環境をご紹介!! No5077

おはようござワガドゥグー、はやしでゥグー。

 

ゆるゆるな日曜、あんしん村画像集をメンテ、836日・23901枚のファイルは一つ一つ手作業で・・・しません(笑)、コマンド1回たたけば、、、sh+awk+OneDrive+IIS環境でさくっと終わる(笑)、そんな環境をご紹介!! No5077

 

日曜日がやってきた

日曜日がやってきました。
今日はGW最終日でしょうか、
やっと連休が終わってくれます。

 

昨日のTwitterユーザさんで言うと、、、

・家で大人しくしてよ
・人が多いところ行くなよ
・果ては、、施設に泊まり込めよ(汗)

そんなことは言っていませんが、
自由にやらせてください。

 

もはや、
どういう経路・経緯でも
感染してもおかしくありません。

施設運営にあたる職員だけ、、
なんてのはもう困りますよね。

 

BBQやりたかったな(笑)

 

今日は日曜日、
ゆるゆると参ります。

 

先日の日曜ゆるゆるの記事を書いたら、、、

パンダ

おお‼︎ なんと予想の斜め89度上を行く 分析記事!
「不真面目に真面目」 との名言まで飛び出しておる

そしてつい また今後の記事で curlやgrepで面白分析をやってみるシリーズが爆誕する予感がワクワク

とコメントを頂けました♪

 

最近の日曜ゆるゆるであっても、
見る人によっては、
マニアックで興味深い、、、

オタク記事に出来上がっています(笑)

 

興味を引いてくれてよかったです。

 

有料老人ホームあんしん村には画像集がある

あんしん村には画像集があります。

レクや行事、
家族の面会など、

あれば撮影し、
貯めています。

 

(画像にリンク貼ってありま、、、、せん)

 

その数なんと、
平成18年8月の開設以降、
ずっと貯めています。

その量なんと、
60G!
ファイル数 50,149!

OneDriveの容量を逼迫しております(汗)

 

 

もう少し調べてみた

1日毎に作成しているので、、、
その数なんと

836日分!

$ ls html | wc
836 836 12425

 

そして画像の数はなんと

23,901枚!

$ find thumbnail/ -name “*.*” | wc
23901 23901 1733581

 

もちろん数枚しかない
家族やレクの様子もあれば、

納涼祭のように100枚以上
あるフォルダもありますので、

平均1日あたり28枚。

$ expr 23901 / 836
28

 

と分かりました。
なぜわざわざ shで・・・(笑)

 

画像集の構造

画像集のHTML構造は、
いたって簡単です。

日付毎にhtmlファイルを作り、

フレームを作って
日付毎に並べて、
画像を5枚ずつ並べて、、、、

 

で画像は本サイズ(数MB)を
使っていましたが、

読み込みに時間がかかるので、
軽サイズのサムネイル(数百KB)を
用意しておき、、、、

 

画像をクリックしたら、
別ウィンドウで本サイズの
画像を開くようにしました。

 

 

なので、
行事が起きたあとは、、、、、

1枚1枚手作業でファイル名をつけて、
サムネイルを作って、
日付のリンクを貼って、
サーバーにコピーして、

という作業が、、、、、

 

大変ではありません(笑)

100枚あっても1分くらいで出来ます(笑)

 

 

sh + awk

これを最初に作った時、
ほんと手間がかかるよな、、、、
楽したいな、、、

と思い作ったのが、
shellスクリプトです。

 

それにawkをかませていたのですが、

 

画像変換も邪魔くさくなったので、
全部自動で行うことにしました。

コマンド一回で、、、

$ ./pict_convert.sh 20230425_NHKニュースざうるす取材/
[INF] change filename [20230425_NHKニュースざうるす取材/] [INF] <CHK> “20230425_NHKニュースざうるす取材/tmp_dir” is not file
[INF] … end
[INF] convert to thumbnail
[INF] thumbnail dir cleanup
[INF] … cleanup end
[INF] remake html….yyyymmdd=[20230425] [INF] remake html (all)…skipped, for exec -a option
[INF] …end

で完了です(笑)

 

この pict_convert.sh にて、

・フォルダを指定すれば(複数可)
・ファイル名を付けて
・thumbnailフォルダにサムネイル画像を作って
・一時フォルダを削除して
・htmlファイルを作る

まで行います。

 

しかも、OneDrive上に置いてあるので、
ローカルのを更新するだけで、、、、

サーバー上のフォルダも更新、
インストールも数秒で完了です。

 

あとは日付の一覧を、、、

templateのところから
コピペして1行追加するだけ。

こちらも保存するだけで、
インストール完了です♪

<!–// template
<a href=”html/.html” target=”pict_contents”></a><br><br>
<a href=”html/.html” target=”pict_contents”></a><br><br>
<a href=”html/.html” target=”pict_contents”></a><br><br>
//–>

<b>○令和5年/2023年</b><br>

<a href=”html/20230427.html” target=”pict_contents”>厨房マニュアル 4/27</a><br><br>
<a href=”html/20230425.html” target=”pict_contents”>NHKニュースざうるす取材 4/25</a><br><br>
<a href=”html/20230424.html” target=”pict_contents”>1Fお茶会</a><br><br>

 

コマンドの内容

./pict_convert.sh
コマンドの内容は別で作ってある、

ファイル名変更用shell
$ chg_filename.sh

html作成用shell
$ mk_html.sh
$ mk_html.awk

を呼び出すように
なっています。

(過去に作ったのでそのまんま呼び出すだけ)

 

ヘッダの部分は割愛しますが、
ループ文回しているだけです。

# change filename

for i in $*; do
info “change filename [$i]”

$CHG_FILENAME $i

info “… end”

info “convert to thumbnail”

info “thumbnail dir cleanup”
target_dir=$THUM_DIR/$i
[ -d $target_dir ] && rm -rf $target_dir && info “… cleanup end”

yyyymmdd=`printf “%-.8s” $i `
[ -f __temp ] && __temp

for f in “$i”/*.*; do
debug “convert [$f]”
dir_name=`dirname $f`
filename=`basename $f`
thum_dir=$THUM_DIR/$dir_name
debug “dir_name[$dir_name], filename=[$filename], thum_dir=[$thum_dir]”

[ ! -d $thum_dir ] && mkdir $thum_dir

debug “$CONVERT_THUM -resize $GEOM_OP $f $thum_dir/$filename”
`$CONVERT_THUM -resize $GEOM_OP $f $thum_dir/$filename`

echo “$yyyymmdd $dir_name $filename” >> __temp
done

# remake html
info “remake html….yyyymmdd=[$yyyymmdd]”
cat __temp | awk -f $MAKE_HTML > $MAKE_DIR/$yyyymmdd.html

rm -f __temp

debug “… end”
debug “”

done

 

そして chg_filename.shも
ループ回しているだけです。
(ヘッダや終了処理は割愛)

for f in $dir_name/*; do
[ ! -f “$f” ] && \
info “<CHK> \”$f\” is not file” && continue
#debug “target: $f”

suffix=`echo “$f” | sed ‘s/.*\.//’ | tr ‘A-Z’ ‘a-z’`
debug “file: [$f], suffix: [$suffix]”

filename1=`basename “$f” “$suffix”`
debug “filename1: [$filename1]”

if [ $suffix = “jpg” -o $suffix = “mp4” -o $suffix = “mpeg” ]; then
filename=`printf “%s_%03d.%s” $dir_name $f_cnt $suffix`
debug “$f –> $filename”

$MV “$f” “$dir_name/$tmp_file”
$MV “$dir_name/$tmp_file” “$dir_name/$tmp_dir/$filename”
f_cnt=`expr $f_cnt + 1`
debug “moved..”
fi
done

 

そして htmlを作る
mk_html.sh

# make html
for d in `cat dates | sed -e ‘s/\n//’`
do
#echo $d”—–“;
grep $d files | awk -f mk_html.awk > $target_dir/$d.html
done

 

これで呼ばれる
mk_html.awk

はHTMLを作っています。

#!/bin/awk

# $Id: mk_html.awk,v 1.2 2008/09/20 15:44:51 tomozo Exp $

BEGIN {
print “<!DOCTYPE HTML PUBLIC \”-//W3C//DTD HTML 4.01 Transitional//EN\”>”;
print “<html>”;
print “”;
print “<head>”;
print ” <meta http-equiv=\”Content-Type\” content=\”text/html; charset=UTF-8\”>”;
print ” <link rel=\”stylesheet\” type=\”text/css\” href=\”../css/main.css\”>”;
print “”;
print ” <title>(有)あんしん村グループ: 画像集</title>”;
print “</head>”;
print “”;
print “<body>”;
print “”;
print “<a href=\”../pict_contents.html\”>戻る</a><br><br>”;
print “”;
print “クリックすると別ウィンドウで拡大画像を開きます。<br><br>”;
print “”;
print “<table border=0>”;
print “<tr>”;

count = 1
}

{

print “<td>”;
print “<a href=\”../”$2″/”$3″\” target=\”picture\”><img src=\”../thumbnail/”$2″/”$3″\” alt=\””$2″/”$3″\”></a><br>”;
print $3″”;
print “</td>”;

if ( count % 5 == 0) {
print “</tr>”;
print “”;
print “<tr>”;
print “<td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td>”;
print “</tr>”;
print “”;
print “<tr>”;
}
count ++;
}

END {
print “</tr>”;
print “</table>”;
print “”;
print “<a href=\”../pict_contents.html\”>戻る</a><br><br>”;
print “”;
print “</body>”;
print “</html>”;

}

 

大昔、練習プログラムを
作ったので思い出して作りました。

 

サムネイル画像は幅を200px
くらいに抑えているので、

5列になっていますが、
このあたりを修正すると、

300pxで4列とか
そんな風に簡単に出来ます。

 

準備環境

このために準備が必要です(笑)

 

Cygwin (awk忘れずにww)
convert.exe  (ImageMagick-6.2.8-Q16よりコピー)
Meadow
OneDrive

さらにサーバーサイドで
IIS公開 (FileMakerとポート重なるので別ポートで)
OneDriveフォルダをデフォルトに

という設定が必要です

※Meadow使わない方は、秀丸やさくらエディタでOK!

 

そして過去に、、、

  1. iphoneの画像対応(ファイル名に空白が入る)
  2. pict_convert対応
  3. htmlを都度全部作ると時間がかかるので -all オプションで作成、それ以外は指定日のみ作成

 

というバグ対応を行っています。

 

しかしながら、日付が1日毎に
なっているので、

同日に複数行事があった場合は対応できません。

 

そんな時は、
日付を変えて(笑)

20230506  ○○レク 5/7
20230507  ○○様家族面会 5/7

と運用でカバー(笑)

 

ここの恒久対応は
きっとしません(笑)(笑)

 

もし定時でプログラム走らせたい、
定時でバックアップ取りたい、

という場合は cronしかありませんが、
Windowsでは、、、タスクスケジューラですね(笑)(笑)(笑)

 

不真面目に真面目

くどいですが、
ここにも精神が生きています(笑)

 

いや待てよ、
ここは不真面目じゃなく、

真面目だけ、、、、なんじゃないか!?

 

楽したい、
とにかく楽したい、
徹底的に手を抜きたい、

めんどくさいことは
徹底的に楽をする!

 

ために、
ごりごりスクリプト作りに
いそしんでおります(笑)

最近はしていませんがね(笑)

 

そんなGW最終日を
ゆるゆると、、、、否!

ごりごり kintone テストに取り組みます(笑)

 

もう日曜ゆるゆるなカテゴリーじゃ
済まなくなりました(笑)

SNSでシェアしよう!

コメントを残す

メールアドレスが公開されることはありません。

ABOUT US

HAYASHI
S49/12/9福井市生まれ。 地元円山小学校区で、有料老人ホームあんしん村とあんのんデイサービスをH18/8から運営する。(カフェはH31/2閉店しデイへ) 富山大学経済学部から東京でエンジニアを7年経験し、帰福して起業。 30歳代で2回の相続体験と、有料老人ホームでの経験から、相続や終活で困らないために終活ケアマネージャとして活動中。 保有資格は介護福祉士、主任ケアマネ、初級シスアド、普通二種免許のため介護タクシーも運営している。 火星人+、ペガサスの奇人変人タイプ(笑)。 特技:マダムキラー、あんしん村の入居者さんから毎日告白されている(笑)