|
@@ -0,0 +1,160 @@
|
|
|
+#!/bin/bash
|
|
|
+
|
|
|
+# CONFIGURATION
|
|
|
+VERSION="0.1"
|
|
|
+TITLE="Image anonymizer"
|
|
|
+
|
|
|
+# ASSETS
|
|
|
+GUIPATH=$(dirname "$0")
|
|
|
+GUIPATH="$GUIPATH/gui"
|
|
|
+GUIPATH=$(cd "$GUIPATH" && pwd)
|
|
|
+if [[ -z "$GUIPATH" ]] ; then
|
|
|
+ echo "For some reason, the path is not accessible."
|
|
|
+ exit 1
|
|
|
+fi
|
|
|
+
|
|
|
+BASH=$(bash --version | head -1 | awk '{print $4}' | cut -d'(' -f1)
|
|
|
+IM=$(convert -version | head -1 | awk '{print $3}' | cut -d'-' -f1)
|
|
|
+EXIFTOOL=$(exiftool -ver)
|
|
|
+OPTIPNG=$(optipng -version | head -1 | awk '{print $3}')
|
|
|
+DIALOG=$(zenity --version)
|
|
|
+
|
|
|
+# FUNCTIONS
|
|
|
+zenexit() {
|
|
|
+ zenity --window-icon="$GUIPATH/tux.png" \
|
|
|
+ --width="200" \
|
|
|
+ --title="$TITLE" \
|
|
|
+ --error \
|
|
|
+ --text="Operation canceled.\nThank you for using $TITLE." \
|
|
|
+ 2> /dev/null
|
|
|
+ rm -f "$HTML"
|
|
|
+ exit 1
|
|
|
+}
|
|
|
+zenstart() {
|
|
|
+ zenity --window-icon="$GUIPATH/tux.png" \
|
|
|
+ --title="$TITLE" \
|
|
|
+ --width="600" --height="400" \
|
|
|
+ --text-info \
|
|
|
+ --html \
|
|
|
+ --filename="$HTML" \
|
|
|
+ --cancel-label="I don't care" \
|
|
|
+ --ok-label="Choose a directory" \
|
|
|
+ 2> /dev/null
|
|
|
+}
|
|
|
+zendir() {
|
|
|
+ DIR=$(zenity --window-icon="$GUIPATH/tux.png" --title="$TITLE" --file-selection --directory 2> /dev/null)
|
|
|
+}
|
|
|
+zenend() {
|
|
|
+ zenity --window-icon="$GUIPATH/tux.png" \
|
|
|
+ --title="$TITLE" \
|
|
|
+ --width="800" --height="600" \
|
|
|
+ --text-info \
|
|
|
+ --html \
|
|
|
+ --filename="$HTML" \
|
|
|
+ --cancel-label="Restart" \
|
|
|
+ --ok-label="Exit" \
|
|
|
+ 2> /dev/null
|
|
|
+
|
|
|
+ rm -f "$HTML"
|
|
|
+}
|
|
|
+zenjob() {
|
|
|
+ zenity --window-icon="$GUIPATH/tux.png" \
|
|
|
+ --title="$TITLE" \
|
|
|
+ --progress \
|
|
|
+ --width="600" \
|
|
|
+ --percentage=0 \
|
|
|
+ --cancel-label="Stop everything" \
|
|
|
+ --ok-label="What happened?" \
|
|
|
+ 2> /dev/null
|
|
|
+}
|
|
|
+
|
|
|
+# MAIN
|
|
|
+HTML="/tmp/ianon.html.$RANDOM"
|
|
|
+cat "$GUIPATH/top.tpl" > $HTML
|
|
|
+cat "$GUIPATH/start.tpl" \
|
|
|
+ | sed s/'{VERSION}'/"$VERSION"/g \
|
|
|
+ | sed s/'{BASH}'/"$BASH"/g \
|
|
|
+ | sed s/'{DIALOG}'/"$DIALOG"/g \
|
|
|
+ | sed s/'{IM}'/"$IM"/g \
|
|
|
+ | sed s/'{EXIFTOOL}'/"$EXIFTOOL"/g \
|
|
|
+ | sed s/'{OPTIPNG}'/"$OPTIPNG"/g \
|
|
|
+ >> $HTML
|
|
|
+cat "$GUIPATH/bottom.tpl" >> $HTML
|
|
|
+
|
|
|
+zenstart
|
|
|
+ZENSTART=$?
|
|
|
+if [ "$ZENSTART" -eq 0 ]
|
|
|
+then
|
|
|
+ zendir
|
|
|
+ ZENDIR=$?
|
|
|
+
|
|
|
+ if [ "$ZENDIR" -eq 0 ]
|
|
|
+ then
|
|
|
+ cd $DIR;
|
|
|
+
|
|
|
+ cat "$GUIPATH/top.tpl" > $HTML
|
|
|
+ echo "<h2>Thank you for using "$TITLE".</h2>" >> $HTML
|
|
|
+ (
|
|
|
+ P=0
|
|
|
+ for F in *;
|
|
|
+ do
|
|
|
+ identify -quiet "$F" &> /dev/null
|
|
|
+ if [ "$?" -eq 0 ]
|
|
|
+ then
|
|
|
+ N=$(md5sum "$F" | awk '{print $1}')
|
|
|
+ N="$N.anon.png"
|
|
|
+
|
|
|
+ OLDTYPE=$(file "$F" | cut -d':' -f2)
|
|
|
+ OLDTYPE=$(echo $OLDTYPE | sed 's/ *$//g')
|
|
|
+ if [ ${#OLDTYPE} -gt 64 ]
|
|
|
+ then
|
|
|
+ OLDTYPE="${OLDTYPE:0:61}..."
|
|
|
+ fi
|
|
|
+
|
|
|
+ # This is the important part of the script!
|
|
|
+ convert "$F" "$N" &> /dev/null
|
|
|
+ exiftool -overwrite_original -q -all= "$N" &> /dev/null
|
|
|
+ optipng --silent "$N" &> /dev/null
|
|
|
+
|
|
|
+ OLDSIZE=$(ls -lah "$F" | awk '{print $5}')
|
|
|
+ NEWSIZE=$(ls -lah "$N" | awk '{print $5}')
|
|
|
+
|
|
|
+ OLDNAME="$F"
|
|
|
+ if [ ${#OLDNAME} -gt 24 ]
|
|
|
+ then
|
|
|
+ OLDNAME="${OLDNAME:0:21}..."
|
|
|
+ fi
|
|
|
+
|
|
|
+ P=$(($P + 10))
|
|
|
+ echo "$P"
|
|
|
+ echo "# $OLDNAME ($OLDSIZE) $OLDTYPE"
|
|
|
+ echo "<p>← <b>$F</b> ($OLDSIZE)<br> • $OLDTYPE<br>→ <b>$N</b> ($NEWSIZE)" >> $HTML
|
|
|
+ fi
|
|
|
+ done
|
|
|
+ echo "100"
|
|
|
+ echo "# Thats' all folks!"
|
|
|
+ ) | zenjob
|
|
|
+
|
|
|
+ if [ "$?" -eq 1 ]
|
|
|
+ then zenexit
|
|
|
+ fi
|
|
|
+ fi
|
|
|
+ if [ "$ZENDIR" -eq 1 ]
|
|
|
+ then zenexit
|
|
|
+ fi
|
|
|
+ cat "$GUIPATH/bottom.tpl" >> $HTML
|
|
|
+ zenend
|
|
|
+ ZENEND=$?
|
|
|
+ if [ "$ZENEND" -eq 1 ]
|
|
|
+ then exit
|
|
|
+ fi
|
|
|
+ if [ "$ZENEND" -eq 0 ]
|
|
|
+ then
|
|
|
+ cd "$GUIPATH"
|
|
|
+ exec ../$(basename $0) && exit
|
|
|
+ fi
|
|
|
+fi
|
|
|
+
|
|
|
+if [ "$ZENSTART" -eq 1 ]
|
|
|
+then zenexit
|
|
|
+fi
|