・・・「
jpg の Exif」の続き。
クリックだけで動かしたいので仮称 krmgdt を作ってみた。
目的:
jpg のExif情報からGPSと年月日時分秒のタグをマウスクリックで確認/消去。
(Debian GNU/Linux 9.8 stretch + KDE にて)
流れ:
1) シェルスクリプト krmgdt.shを作る。
2) /usr/local/bin/に置く。
3) Kメニューからクリックで動くように設定。
作業:
1) シェルスクリプト krmgdt.shを作る。
KDEの
kdialog を使ってみる。シェルスクリプトに混ぜて書くと、ウィンドウが開く。
ウィンドウ間の通信には dBus使うらしい。
(他に GnomeのZenityや XのXdialog などがある)
kdialogは、kdebase-binパッケージに含まれているので、KDE環境ならすでにインストール済み。
$ apt show kdebase-bin ←確認
シェルスクリプトは、先の rmgpsdt.shを元にこんな感じ。
===== krmgdt.sh
#!/bin/bash
kdialog --title krmgdt --msgbox "<h2><font style="background:white">krmgdt</font></h2><hr><font style="background:white">Kdialog remove gps and datetime tags.</font><br>jpgファイルのmetadataから年月日時分秒とGPSのデータを削除<br>該当タグの有無により、続行/ブラウザに戻る/終了 を選択<br><br>[続行] : バックファイルを作り、処理する<br>[終了]/[キャンセル] : 何もせず終了<br>[振出し] : 何もせずファイルブラウザに戻る<br><hr>Shellscript, depends on exiv2, bash, and kdialog."
now_dir=$PWD
# 開く yes OK continue 0, no 1 キャンセル 2
while ( : )
do
cd $now_dir
infile=$(kdialog --title krmgdt --getopenfilename $now_dir "image/jpeg image/jpg")
ret=$?
if [ $ret -eq 1 ]; then
kdialog --title krmgdt --passivepopup "krmgdt: 終了" 3
break
fi
now_dir=$(dirname ${infile})
ext=${infile##*.}
date_msg=$`exiv2 -g Date $infile`
gps_msg=`exiv2 -g GPS $infile`
if [ -z "$date_msg" ] || [ -z "$gps_msg" ]; then
kdialog --title krmgdt --warningcontinuecancel "$infile\nこのファイルには、該当タグが在りません。" --continue-label "振出し" --cancel-label "終了"
ret=$?
if [ $ret = 0 ]; then
continue
else
kdialog --title krmgdt --passivepopup "krmgdt: 終了" 3
exit 0
fi
else
kdialog --title "krmgdt: rm tags" --yesnocancel "<hr><pre>$(exiv2 -g DateTime $infile)\n$(exiv2 -g GPS $infile)</pre><hr>" --yes-label "続行" --no-label "振出し" --cancel-label "終了"
ret=$?
if [ $ret = 0 ]; then
cp --backup=t $infile ${infile%.*}_bak.$ext
tags=(
"Exif.Image.DateTime"
"Exif.Photo.DateTimeOriginal"
"Exif.Photo.DateTimeDigitized"
"Exif.Image.GPSTag"
"Exif.GPSInfo.GPSVersionID"
"Exif.GPSInfo.GPSLatitudeRef"
"Exif.GPSInfo.GPSLatitude"
"Exif.GPSInfo.GPSLongitudeRef"
"Exif.GPSInfo.GPSLongitude"
"Exif.GPSInfo.GPSAltitudeRef"
"Exif.GPSInfo.GPSAltitude"
"Exif.GPSInfo.GPSTimeStamp"
"Exif.GPSInfo.GPSSatellites"
"Exif.GPSInfo.GPSStatus"
"Exif.GPSInfo.GPSMapDatum"
"Exif.GPSInfo.GPSDateStamp"
)
for tag in ${tags[@]}
do
exiv2 -M"del $tag" $infile
done
kdialog --title "krmgdt" --passivepopup "krmgdt: 成功:タグの削除\n\nブラウザに戻る" 5
elif
[ $ret = 1 ]; then
continue
elif
[ $ret = 2 ]; then
kdialog --title krmgdt --passivepopup "krmgdt: 終了" 3
exit 0
fi
fi
done
exit 0
=====
2) /usr/local/bin/に置く
実行許可を与えておく。
$ chmod +x krmgdt.sh
"krmgdt.sh を右クリックでプロパティ開いて、パーミッション:実行可能 クリック OK"でも同じ。
$ sudo cp krmgdt.sh /usr/local/bin/
3) Kメニューからマウスクリックで動くように設定。
例) [メニュー][アプリケーション][グラフィックス]に置く
Kメニュー右クリック→アプリケーションを編集→
グラフィックス→新しい項目→項目名[krmgdt] OK →全般{説明:[rm GPS DateTime tag from JPG], アイコン:□検索[shell]から選択, コマンド:フォルダ印から [ルート > usr > local > bin > krmgdt.sh]開く}→上バー[保存]。☒ 終了。
これで、/home/%USER%/.local/share/applications/krmgdt.descktop が作成される。テキスト形式なので追記修正可能。削除も上記のように[メニューの編集]からkrmgdtを右クリックで[削除]保存でメニューから消して、/usr/local/bin/krmgdt.shを消す。krmgdt.desktopも消しておく。
また、ファイルブラウザから、該当.jpg で右クリック→[アプリケーションで開く]に登録しても、Kメニューの[履歴]の中からでも動く。
以上、DO素人のメモ