239 lines
6.2 KiB
Bash
Executable File
239 lines
6.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
italic="\033[3m"
|
|
#underline="\033[4m"
|
|
bgd="\033[1;4;31m"
|
|
red="\033[1;31m"
|
|
bold="\033[1m"
|
|
bold_under="\033[1;4m"
|
|
reset="\033[0m"
|
|
|
|
file=$1
|
|
|
|
#trans fr:en -b "renard"
|
|
#fox
|
|
|
|
if ! command -v exiftool &> /dev/null; then
|
|
echo -e "${bold}exiftool${reset} could not be found !\n"
|
|
echo -e "You should install ${bold}exiftool${reset}:\n"
|
|
echo -e " - brew install exiftool"
|
|
echo -e ""
|
|
exit 1
|
|
fi
|
|
|
|
|
|
# dico français / anglais
|
|
|
|
fr=()
|
|
en=()
|
|
array=()
|
|
declare -A dico
|
|
|
|
if [ -f ./keywords.csv ]; then
|
|
|
|
while IFS=';' read -ra array;
|
|
do
|
|
fr+=("${array[0]}")
|
|
en+=("${array[1]}")
|
|
done < keywords.csv
|
|
|
|
j=0
|
|
for i in "${fr[@]}"
|
|
do
|
|
x="${en[$j]}"
|
|
dico+=( ["$i"]="$x" )
|
|
((j=j+1))
|
|
done
|
|
fi
|
|
|
|
|
|
echo -e "\n${bold}Reading $file exif...${reset}"
|
|
exif=$(exiftool -Canon -s -Keywords "$file")
|
|
# The exiftool application exits with a status of 0 on success, or 1 if an
|
|
# error occurred, or 2 if all files failed the -if condition (for any of
|
|
# the commands if -execute was used).
|
|
|
|
#echo "$exif"
|
|
# Keywords : Anemone pulsatilla, Anemone pulsatille, _bleu_
|
|
|
|
# keywords
|
|
k=$(echo "$exif" | sed -n '/^Keywords/p' | awk -F":" '{print $2}' | sed 's/^ *//g')
|
|
# _vert_, accouplement, brocard, capreolus capreolus, chevrette, chevreuil, rut
|
|
echo "$k"
|
|
# Anemone pulsatilla, Anemone pulsatille, _bleu_
|
|
|
|
IFS="," read -a key <<< "$k"
|
|
for i in "${key[@]}"
|
|
do
|
|
ii=$(echo "$i" | xargs) # trim $i
|
|
if [[ ! "$ii" =~ ^_ ]]; then
|
|
|
|
if [[ ${dico["$ii"]} ]] ; then
|
|
k_en=$(echo ${dico["$ii"]})
|
|
else
|
|
k_en=""
|
|
fi
|
|
|
|
k_fr=$(echo "$ii")
|
|
echo "k_fr: $k_fr long: "${#k_fr}
|
|
echo "k_en: $k_en long: "${#k_en}
|
|
|
|
if [ -n "$k_en" ]; then
|
|
echo "fr & en"
|
|
[[ "$k_fr" = *" "* ]] && keyword_flickr+="\"${k_fr}\" " || keyword_flickr+="${k_fr} "
|
|
[[ "$k_en" = *" "* ]] && keyword_flickr+="\"${k_en}\" " || keyword_flickr+="${k_en} "
|
|
keyword_insta+="#${k_fr// /} #${k_en// /} "
|
|
else
|
|
[[ "$k_fr" = *" "* ]] && keyword_flickr+="\"${k_fr}\" " || keyword_flickr+="${k_fr} "
|
|
keyword_insta+="#${k_fr// /} "
|
|
fi
|
|
fi
|
|
done
|
|
|
|
|
|
# model
|
|
# Canon EOS R6 Canon EOS 5D Mark III Canon EOS-1D Mark IV Canon EOS 20D
|
|
mod=("canonphotography")
|
|
m=$(echo "$exif" | sed -n '/^Model/p' | awk -F":" '{print $2}' | xargs)
|
|
mod+=("${m}") # Canon EOS R6
|
|
|
|
if [[ "$m" =~ ^Canon ]]; then
|
|
mod+=("Canon") # Canon
|
|
[[ "$m" =~ *EOS* ]] || mod+=("EOS") # EOS
|
|
#mod+=($(echo "$m" | sed 's/Canon\ //g' | sed 's/ //g')) # EOSR6
|
|
#mod+=($(echo "$m" | sed 's/EOS//g' | sed 's/ //g') ) # CanonR6
|
|
z=$(echo "$m" | sed 's/Canon\ //g' | xargs)
|
|
y=$(echo "$m" | sed 's/EOS//g' | sed 's/[ ][ ]*/ /g' | xargs)
|
|
mod+=("${z}") # EOS R6
|
|
mod+=("${y}") # Canon R6
|
|
fi
|
|
|
|
for i in "${mod[@]}"
|
|
do
|
|
model+="${i} "
|
|
if [[ "$i" = *" "* ]]; then
|
|
model_flickr+="\"${i}\" "
|
|
else
|
|
model_flickr+="${i} "
|
|
fi
|
|
model_insta+="#${i// /} " # supprime tous les espaces et ajoute le #
|
|
done
|
|
|
|
|
|
#lens
|
|
l=$(echo "$exif" | sed -n '/^Lens/p' | awk -F":" '{print $2}' | sed 's/\///g' | xargs)
|
|
lens_flickr="\"${l}\" "
|
|
lens_insta="$(echo "$l" | sed 's/ //g' | sed -r 's/[^ ]+/#&/g') "
|
|
|
|
|
|
#fixes
|
|
# #wildlifephotography
|
|
wild=("wildlife" "wildlifephoto" "wildlifephotographer")
|
|
# #natureshots #naturelover #nature
|
|
nat=("naturelovers" "natureshot" "naturephotography")
|
|
# #jura franchecomte
|
|
reg=("Bourgogne" "Burgundy" "Bourgogne Franche-Comté" "Côte d'or" "cotedor")
|
|
|
|
for i in "${wild[@]}"
|
|
do
|
|
if [[ "$i" = *" "* ]]; then
|
|
wildlife_flickr+="\"${i}\" "
|
|
else
|
|
wildlife_flickr+="${i} "
|
|
fi
|
|
wildlife_insta+="#"$(echo "${i}" | iconv -f UTF-8-MAC -t ascii//translit | sed 's/[^a-zA-Z 0-9]//g' | sed 's/ //g')" "
|
|
done
|
|
|
|
for i in "${nat[@]}"
|
|
do
|
|
if [[ "$i" = *" "* ]]; then
|
|
nature_flickr+="\"${i}\" "
|
|
else
|
|
nature_flickr+="${i} "
|
|
fi
|
|
nature_insta+="#"$(echo "${i}" | iconv -f UTF-8-MAC -t ascii//translit | sed 's/[^a-zA-Z 0-9]//g' | sed 's/ //g')" "
|
|
done
|
|
|
|
for i in "${reg[@]}"
|
|
do
|
|
if [[ "$i" = *" "* ]]; then
|
|
region_flickr+="\"${i}\" "
|
|
else
|
|
region_flickr+="${i} "
|
|
fi
|
|
region_insta+="#"$(echo "${i}" | iconv -f UTF-8-MAC -t ascii//translit | sed 's/[^a-zA-Z 0-9]//g' | sed 's/ //g')" "
|
|
done
|
|
|
|
: <<'END_COMMENT'
|
|
echo "Keywords flickr: $keyword_flickr"
|
|
echo "Keywords insta: $keyword_insta"
|
|
echo
|
|
echo "Model flickr: $model_flickr"
|
|
echo "Model insta: $model_insta"
|
|
echo
|
|
echo "Lens flick: $lens_flickr"
|
|
echo "Lens_insta: $lens_insta"
|
|
echo
|
|
echo "Wildlife flickr: $wildlife_flickr"
|
|
echo "Wildlife insta: $wildlife_insta"
|
|
echo
|
|
echo "Nature flickr: $nature_flickr"
|
|
echo "Nature insta: $nature_insta"
|
|
echo
|
|
echo "Region flickr: $region_flickr"
|
|
echo "Region insta: $region_insta"
|
|
echo
|
|
END_COMMENT
|
|
|
|
keywords_flickr=$(echo "$keyword_flickr$model_flickr$lens_flickr$wildlife_flickr$nature_flickr$region_flickr")
|
|
keywords_insta=$(echo "$keyword_insta$model_insta$lens_insta$wildlife_insta$nature_insta$region_insta" | awk '{print tolower($0)}')
|
|
|
|
: <<'END_COMMENT'
|
|
echo "$keywords_flickr"
|
|
echo
|
|
echo "$keywords_insta"
|
|
echo
|
|
END_COMMENT
|
|
|
|
# suppress accent (bug in macos) => add sed => suppress punctuation too
|
|
# https://stackoverflow.com/questions/806199/how-to-fix-weird-issue-with-iconv-on-mac-os-x
|
|
|
|
if ! command -v iconv &> /dev/null; then
|
|
echo -e "\n${bold}iconv${reset} could not be found !\n"
|
|
echo -e "It's required for suppress accents."
|
|
echo -e "You should install ${bold}icon${reset}:"
|
|
echo -e " - brew install iconv"
|
|
echo -e ""
|
|
else
|
|
keywords_insta=$(echo "$keywords_insta" | iconv -f UTF-8-MAC -t ascii//translit | sed 's/[^a-zA-Z 0-9 \#]//g')
|
|
fi
|
|
|
|
|
|
# suppress duplicates (gawk)
|
|
if ! command -v gawk &> /dev/null; then
|
|
echo -e "\n${bold}gawk${reset} could not be found !\n"
|
|
echo -e "It's required for suppress duplicates."
|
|
echo -e "You should install ${bold}gawk${reset}:"
|
|
echo -e " - brew install gawk"
|
|
echo -e ""
|
|
else
|
|
keywords_insta=$(echo "$keywords_insta" | gawk -v RS="[ \n]" -v ORS=" " '!($0 in a){print;a[$0]}')
|
|
fi
|
|
|
|
|
|
# flick: éléphant "tic toc" demi-deuil ok
|
|
|
|
|
|
if [[ "$OSTYPE" == "linux-gnu" ]] && [ -x "$(command -v xsel)" ]; then
|
|
xsel -b <<< "$keywords_insta"
|
|
elif [[ "$OSTYPE" == "darwin"* ]] && [ -x "$(command -v pbcopy)" ]; then
|
|
#pbcopy <<< "$insta"
|
|
#echo "$insta"
|
|
echo "Insta tag's OK !"
|
|
fi
|
|
|
|
echo -e "\n${bold}The Instagram's tags are available in your clipboard !${reset}"
|
|
echo "$keywords_insta"
|
|
|
|
echo -e "\n${bold}Here the Flickr's tags too !${reset}"
|
|
echo "$keywords_flickr" |