#!/bin/bash

####################################################################
#####                                                          #####
#####            AUTHOR: BORIS KIEFER (08/2019)                #####
#####                                                          #####
####################################################################

# THIS SOFTWARE IS DISTRIBUTED AS IS WITHOUT ANY WARRANTY
# USE AT YOUR OWN DISGRESSION
#
# ==> WORK ON A COPY OF THE RECOVERED FILES 
#     IN CASE SOMETHING GOES WRONG

echo "1)  Find jpeg header information    : jhead f*jpg"
echo "2)  Check for                       : Camera model"
echo "2a)  If match                       : Process" 
echo "       zjhead : extract             : File name"
echo "       zjhead : extract : YYYY MM   : Date/Time"
echo "       mv                           : direc/YYYY/MM"                   
echo "2b)  If no match                    : Skip"
echo "       record location to file      : zzz_camera" 

# SOME MAYBE USEFUL COMMANDS
# find ./recup.* t*.jpg -delete   # DELETE ALL RECOVERED THUNMBNAILS

# STRING FOR FILTERING
#search="HTC6500LVW"     # HTC 
#search="SM-J727V"       # SAMSUNG
#search="SM-G900V"       # SAMSUNG
#search="COOLPIX"        # NIKON CAMERA 
#search="FinePix"        # CAMERA
#search="DMC"            # CAMERA?
#search="PC36100"        # CAMERA?
#search="Canon"          # CAMERA?
#search="KODAK"          # CAMERA?
search="iPhone"
#search="E5400"          
#search="DSC"

# MAKE TARGET DIRECTORY IF NEEDED 
dir=../AAA_REC

# START PROCESSING THE FILES
ndir=0
nfiles=0
nfjpg=0
nfproc=0
nfskip=0
nffail=0

for direc in recup_dir.*
 do 

 ndir=$(( $ndir + 1 ))
 echo "SCRIPT: ENTERING $direc"
 cd $direc

for jpg in f*.jpg
 do

 echo
 echo "CURRENT FILE: $jpg"

 nfjpg=$(( $nfjpg +1 ))

 jhead "$jpg" > zjhead                     # EXTRACT HEADER FILE

 camera=""
 camera=`cat zjhead | grep "Camera model"`
# if [[ ! -z $camera ]]; then               # IF PRESENT RECORD CAMERA MODEL 
#  echo "$camera ./$direc/$jpg" >> ../zzz_cameras
# fi

 csearch=0
 csearch=`cat zjhead | grep $search`

 echo "SEARCH: $csearch"
 if [[ ! -z $csearch ]]; then                # Camera model AGREES ==> PROCESS
  echo "PROCESSING: '$jpg'"

  nfproc=$(( $nfproc + 1 ))

  cfile=
  cyear=
  cmonth=
  cfile=`cat zjhead | grep "File name" | awk -F":" '{print $2}'`
  cyear=`cat zjhead | grep "Date/Time" | awk -F":" '{print $2}'`
  cmonth=`cat zjhead | grep "Date/Time" | awk -F":" '{print $3}'`

  dir0=`echo "$dir/$cyear/$cmonth" | sed 's/ //g'`         # OUTPUT DIRECTORY
  mkdir -p $dir0                            # MAKE IF NEEDED
  out=`echo "$dir0/$cfile" | sed 's/ //g'`  # OUTPUT FILE
  mv "$jpg" $out                            # MV FILE TO OUTPUT LOCAITON
#  echo "MOVING: $jpg $out"
  
 elif [[ ! -z $camera ]]; then               # CAMERA MODEL INCORRECT ==> RECORD

  nffail=$(( $nffail + 1 ))
  echo "$camera ./$direc/$jpg" >> ../zzz_cameras

 else

  nfskip=$(( $nfskip + 1 ))

 fi

done   # END LOOP OVER FILES

cd ..

done   # END LOOP OVER DIRECTORIES

echo "SUMMARY: "
echo "DIRS                   : $ndir"
echo "JPGS                   : $nfjpg"
echo "  ==> CAMERA CORRECT   : $nfproc"
echo "  ==> CAMERA INCORRECT : $nffail"
echo "  ==> NO CAMERA        : $nfskip"

nfrem=$(( $nffail + $nfskip ))
echo "REMAINING              : $nfrem"
