From 9239e2826914278cf5a3fca55d6fb65e8fa12820 Mon Sep 17 00:00:00 2001 From: Bruno21 Date: Fri, 19 Aug 2022 15:00:19 +0200 Subject: [PATCH] 1st commit --- keywords.csv | 20 ++++ keywords2insta.sh | 239 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 259 insertions(+) create mode 100644 keywords.csv create mode 100755 keywords2insta.sh diff --git a/keywords.csv b/keywords.csv new file mode 100644 index 0000000..74949b0 --- /dev/null +++ b/keywords.csv @@ -0,0 +1,20 @@ +FR;EN +renard;fox +renard roux;red fox +cerf;deer +cerf élaphe;red deer +chevreuil;roe deer +brocard;buck +chevrette;doe +sanglier;wild boer +laie;saw +faon;fawn +chat;cat +chat forestier;wildcat +lièvre;hare +lièvre d'europe;european hare +blaireau;badger +blaireau d'europe;european badger +martre;marten +martre des pins;pine marten +bouquetin;ibex diff --git a/keywords2insta.sh b/keywords2insta.sh new file mode 100755 index 0000000..081454b --- /dev/null +++ b/keywords2insta.sh @@ -0,0 +1,239 @@ +#!/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" \ No newline at end of file