|
@@ -0,0 +1,55 @@
|
|
|
+#!/bin/bash
|
|
|
+
|
|
|
+if [ -z "$1" ] || [ -z "$2" ] || [ ! -d "$1" ] ; then
|
|
|
+ printf "Usage: $0 <Directory to Search> <File Expression>\n"
|
|
|
+ printf "\tex. tinypng.sh . 'thumb*.jpg' // All JPG thumbnails in current directory\n"
|
|
|
+ printf "\tex. tinypng.sh subdirectory/ '*.png' // All PNG files under subdirectory\n"
|
|
|
+ exit 1
|
|
|
+fi
|
|
|
+
|
|
|
+APIKEY="INSERT_API_KEY_HERE"
|
|
|
+LOGFILE="tinypng.log"
|
|
|
+
|
|
|
+# Find all jpg/png files with names starting with 'thumb*' (thumbnails)
|
|
|
+FILES="$(find $1 -type f -name $2)";
|
|
|
+for FILE in $FILES ; do
|
|
|
+
|
|
|
+ # Prepend './' if directory was given (to match output from '.')
|
|
|
+ if [ "$1" != "." ] ; then
|
|
|
+ FILE="./$FILE"
|
|
|
+ fi
|
|
|
+
|
|
|
+ # Sanity check to ensure file exists
|
|
|
+ if [ -e "$FILE" ] ; then
|
|
|
+
|
|
|
+ # Check if the file has been compressed previously
|
|
|
+ if [ -e "$LOGFILE" ] && (grep -Fxq "$FILE" "$LOGFILE") ; then
|
|
|
+ printf "$FILE has already been compressed\n"
|
|
|
+ continue
|
|
|
+ fi
|
|
|
+
|
|
|
+ # Upload file to tinypng compression service
|
|
|
+ printf "Uploading $FILE..\n"
|
|
|
+ JSON=`curl --progress-bar https://api.tinypng.com/shrink --user api:$APIKEY --data-binary @"$FILE"`
|
|
|
+ URL=`echo $JSON | grep -oP 'url\":\"\K.+(?=")'`
|
|
|
+ RATIO=`echo $JSON | grep -oP 'ratio\":\K.+(?=,)'`
|
|
|
+
|
|
|
+ # Download replacement if URL is given
|
|
|
+ if [ -n "$URL" ] ; then
|
|
|
+ printf "URL: $URL\n"
|
|
|
+ printf "Downloading replacement $FILE..\n"
|
|
|
+ curl --progress-bar $URL > "$FILE"
|
|
|
+ printf "${FILE} is $RATIO%% smaller than the original\n"
|
|
|
+
|
|
|
+ printf "$FILE\n" >> "$LOGFILE"
|
|
|
+ fi
|
|
|
+
|
|
|
+ printf "\n"
|
|
|
+ fi
|
|
|
+done
|
|
|
+
|
|
|
+unset -v APIKEY
|
|
|
+unset -v LOGFILE
|
|
|
+unset -v JSON
|
|
|
+unset -v URL
|
|
|
+unset -v RATIO
|