diff --git a/keywords.csv b/keywords.csv index e6d7012..7506bee 100644 --- a/keywords.csv +++ b/keywords.csv @@ -19,3 +19,4 @@ martre;marten martre des pins;pine marten bouquetin;ibex mammifère;mammal +oiseau;bird diff --git a/keywords.numbers b/keywords.numbers new file mode 100755 index 0000000..54c5fd3 Binary files /dev/null and b/keywords.numbers differ diff --git a/keywords2insta.sh b/keywords2insta.sh index 2785fb9..63276cc 100755 --- a/keywords2insta.sh +++ b/keywords2insta.sh @@ -31,6 +31,46 @@ opt_nature=false opt_wildlife=false opt_all=true +long_path=`pwd`"/"`basename "$0"` # /Users/bruno/Documents/Scripts/kymsu2/keywords2insta.sh +#long_path=$(realpath "$0") # vide +echo "long: $long_path" + +dir=$(dirname "$0") +#dir="$0" +echo "dir: $dir" + + + +trim () { + read -rd '' $1 <<<"${!1}" +} + +alpha_name= +alpha () { + + array=() + #declare -A ilce=( ['ILCE-7M3']="Alpha 7 III" ['ILCE-7M4']="α7 IV" ['ILCE-7MRM5']="α7R V" ['ILCE-7SM3']="Alpha 7S III" ['ILCE-7RM4']="α7R IV" ['ILCE-7RM3']="α7R III" ['ILCE-7C']="Alpha 7C" ) + declare -A ilce + + if [ -f $dir/sony.csv ]; then + + #echo "Loading Sony APNs..." + + while IFS=';' read -ra array; + do + key="${array[0]}" + value="${array[1]}" + ilce["$key"]="$value" + done < $dir/sony.csv + + fi + + for val in "${!ilce[@]}" + do + [[ ${val} == "$model" ]] && alpha_name="${ilce[$val]}" + done +} + showHelp() { echo -e "${greenbold}keywords2insta${reset} v1.1" echo -e "Bruno " @@ -158,16 +198,18 @@ fi fr=() en=() -array=() +array2=() declare -A dico -if [ -f ./keywords.csv ]; then +if [ -f $dir/keywords.csv ]; then - while IFS=';' read -ra array; + echo "Loading keyword dictionary..." + + while IFS=';' read -ra array2; do - fr+=("${array[0]}") - en+=("${array[1]}") - done < keywords.csv + fr+=("${array2[0]}") + en+=("${array2[1]}") + done < $dir/keywords.csv j=0 for i in "${fr[@]}" @@ -179,31 +221,105 @@ if [ -f ./keywords.csv ]; then fi -echo -e "\n${greenbold}keywords2insta${reset} v1.1" +echo -e "\n${greenbold}keywords2insta${reset} v2.0" echo -e "\n${bold}Reading $file exif...${reset}" -exif=$(exiftool -Canon -s -Keywords "$file") +#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). +#exif=$(exiftool -Canon -s -Keywords -j "$file") +exif=$(exiftool -j "$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). + +# exif +#echo "$exif" + +#if (jq -e '.[] | has("Make")' <<< "$exif"); then +# make=$(echo "$exif" | jq -j '.[] | .Make') +#else +# make="z" +#fi + +#make=$(echo "$exif" | jq -e '.[] | has("Make") | .Make') + +make=$(echo "$exif" | jq -j '.[] | .Make | select( . != null )') +model=$(echo "$exif" | jq -j '.[] | .Model | select( . != null )') +date_original=$(echo "$exif" | jq -j '.[] | .DateTimeOriginal | select( . != null )') +speed=$(echo "$exif" | jq -j '.[] | .ShutterSpeed | select( . != null )') +aperture=$(echo "$exif" | jq -j '.[] | .Aperture | select( . != null )') +iso=$(echo "$exif" | jq -j '.[] | .ISO | select( . != null )') +lens=$(echo "$exif" | jq -j '.[] | .Lens | select( . != null )') +lensID=$(echo "$exif" | jq -j '.[] | .LensID | select( . != null )') +lensModel=$(echo "$exif" | jq -j '.[] | .LensModel | select( . != null )') +focal=$(echo "$exif" | jq -j '.[] | .FocalLength | select( . != null )') + +echo +if [[ -n $iso ]] && [[ -n $speed ]] && [[ -n $aperture ]]; then + printf " %-10s %-35s \n" "Speed:" "${speed}" + printf " %-10s %-35s \n" "Aperture:" "f/${aperture}" + printf " %-10s %-35s \n" "ISO:" "${iso}" + printf " %-10s %-35s \n" "Date:" "${date_original}" + printf " %-10s %-35s \n" "Maker:" "${make}" + [[ "$make" =~ ^SONY ]] && alpha + printf " %-10s %-35s \n" "APN:" "$alpha_name (${model})" + printf " %-10s %-35s \n" "Focal:" "${focal}" + if [[ -n $lensID ]]; then + printf " %-10s %-35s \n" "LensID:" "${lensID}" + l="$lensID" + elif [[ -n $lensModel ]]; then + printf " %-10s %-35s \n" "LensModel:" "${lensModel}" + l="$lensModel" + else + printf " %-10s %-35s \n" "Lens:" "${lens}" + l="$lens" + fi + echo +fi + # keywords -k=$(echo "$exif" | sed -n '/^Keywords/p' | awk -F":" '{print $2}' | sed 's/^ *//g') +k=$(echo "$exif" | jq --compact-output --raw-output '.[] | .Keywords[]?' | tr "\n" "," | sed 's/\,$//') +#k=$(echo "$exif" | sed -n '/^Keywords/p' | awk -F":" '{print $2}' | sed 's/^ *//g') if [ -z "$k" ]; then - echo -e "${bold}${red}No Keywords found !${reset}" + echo -e "\n${bold}${red}No Keywords found !${reset}" echo "Quit." - exit 5 + #exit 5 fi IFS="," read -a key <<< "$k" + +#echo "key:${key[@]}_" +#echo "dico:${dico[@]}_" + + for i in "${key[@]}" do - ii=$(echo "$i" | xargs) # trim $i + #echo "@$i@" + # @ bouton d'or@ + # xargs: unterminated quote + + + + #ii=$(echo "$i" | xargs -0) # trim $i + #ii=$(echo "$i" | sed 's/ *$//g') + ii="$i" + trim ii + #trim i + + #echo "i:$i" + #echo "ii:$ii" + if [[ ! "$ii" =~ ^_ ]]; then + #echo "ii: $ii" + #echo ${dico["$ii"]} + if [[ ${dico["$ii"]} ]] ; then k_en=${dico["$ii"]} else @@ -211,6 +327,9 @@ do fi k_fr="$ii" + + #echo "k_fr:$k_fr" + #echo "k_en:$k_en" if [ -n "$k_en" ]; then [[ "$k_fr" = *" "* ]] && keyword_flickr+="\"${k_fr}\" " || keyword_flickr+="${k_fr} " @@ -220,28 +339,76 @@ do [[ "$k_fr" = *" "* ]] && keyword_flickr+="\"${k_fr}\" " || keyword_flickr+="${k_fr} " keyword_insta+="#${k_fr// /} " fi + + #echo "keyword_insta:$keyword_insta" + #echo "keyword_flickr:$keyword_flickr" fi done # model # Canon EOS R6 Canon EOS 5D Mark III Canon EOS-1D Mark IV Canon EOS 20D -m=$(echo "$exif" | sed -n '/^Model/p' | awk -F":" '{print $2}' | xargs) -mod=("${m}") # Canon EOS R6 +#m=$(echo "$exif" | sed -n '/^Model/p' | awk -F":" '{print $2}' | xargs) +#mod=("${m}") # Canon EOS R6 -if [[ "$m" =~ ^Canon ]]; then +# "Make": "OM Digital Solutions", +# "Model": "OM-5", "OM-1" +# "Make": "SONY", +# "Model": "ILCE-7M3", "ILCE-7M4" +# "Make": "FUJIFILM", +# "Model": "X-T5", +# "Make": "Panasonic", +# "Model": "DC-S5", + +# "Make": "LEICA CAMERA AG", +# "Model": "LEICA Q3", "LEICA SL2-S" +# "Make": "NIKON CORPORATION", +# "Model": "NIKON D850", +# "Make": "NIKON CORPORATION", +# "Model": "NIKON Z 9", +# "Make": "Canon", +# "Model": "Canon EOS R7", + +#mod=("${model}") +#m=("${model}") + +#echo "mod:${mod[@]}_" +#echo "m:${m[@]}_" + +if [[ "$make" =~ ^Panasonic ]] || [[ "$make" =~ ^SONY ]] || [[ "$make" =~ ^FUJI ]]; then + mod=("${make} ${model}") + mod+=("${make}") + mod+=("${model}") + mod+=("${make,,}photography") +elif [[ "$make" =~ ^"OM Digital Solutions" ]]; then + mod=("${make} ${model}") # OM Digital Solutions OM-5 + mod+=("Olympus") # Olympus + mod+=("${model}") # OM-5 +elif [[ "$model" =~ ^NIKON ]] || [[ "$model" =~ ^LEICA ]]; then + mod=("${make}") + z=$(echo "${make,,}" | awk '{print $1}') ## nikon + y=$(echo "${make}" | awk '{print $1}') ## NIKON + mod+=("${z}photography") # nikonphotography leicaphotography + mod+=("${y}") # NIKON LEICA + mod+=("${model}") # NIKON Z 9 LEICA Q3 + # awk -F"|" '{$1=$2=$3=""; print $0}' PURCHASE_testing.csv > testing.csv + w=$(echo "${model}" | awk '{$1=""; print $0}' | xargs) + mod+=("${w}") +elif [[ "$model" =~ ^Canon ]]; then mod+=("Canon") - mod+=("canonphotography") - [[ "$m" = *EOS* ]] || mod+=("EOS") # EOS - z=$(echo "$m" | sed 's/Canon\ //g' | xargs) - y=$(echo "$m" | sed 's/EOS//g' | sed 's/[ ][ ]*/ /g' | xargs) + mod+=("${make,}photography") + [[ "$model" = *EOS* ]] || mod+=("EOS") # EOS + z=$(echo "$model" | sed 's/Canon\ //g' | xargs) + y=$(echo "$model" | sed 's/EOS//g' | sed 's/[ ][ ]*/ /g' | xargs) mod+=("${z}") # EOS R6 mod+=("${y}") # Canon R6 fi +#echo "mod:${mod[@]}_" + for i in "${mod[@]}" do - model+="${i} " + #model+="${i} " if [[ "$i" = *" "* ]]; then model_flickr+="\"${i}\" " else @@ -250,12 +417,63 @@ do model_insta+="#${i// /} " # supprime tous les espaces et ajoute le # done +#echo "model_flickr: $model_flickr" +#echo "model_insta: $model_insta" #lens -l=$(echo "$exif" | sed -n '/^Lens/p' | awk -F":" '{print $2}' | sed 's/\///g' | xargs) + +# "LensModel": "E 28-200mm F2.8-5.6 A071", +# "Lens": "E 28-200mm F2.8-5.6 A071", +# "LensID": "Tamron 28-200mm F2.8-5.6 Di III RXD", +# "LensModel": "FE 35mm F2.8 ZA", +# "Lens": "FE 35mm F2.8 ZA", +# "LensID": "FE 35mm F2.8 ZA" + +# LensID": "OLYMPUS M.12-45mm F4.0" +# "LensModel": "OLYMPUS M.12-45mm F4.0", +# "Lens": "OLYMPUS M.12-45mm F4.0", +# "LensModel": "OLYMPUS M.300mm F4.0", +# "Lens": "OLYMPUS M.300mm F4.0", +# "LensID": "OLYMPUS M.300mm F4.0" + +# "Lens": "OLYMPUS M.300mm F4.0", "Lens": "OLYMPUS M.12-45mm F4.0", +# "LensModel": "OLYMPUS M.300mm F4.0", "LensModel": "OLYMPUS M.12-45mm F4.0", + +# Leica no Lens no LensID +# "LensModel": "SUMMILUX 1:1.7/28 ASPH.", "Leica APO-Summicron-SL 35mm f/2 ASPH", + +# "LensModel": "Leica APO-Summicron-SL 35mm f/2 ASPH", +# "Lens": "Leica APO-Summicron-SL 35mm f/2 ASPH", +# "LensID": "Leica APO-Summicron-SL 35mm f/2 ASPH" + +# "Lens": "Fujifilm Fujinon XF18mmF1.4 R LM WR", +# "LensModel": "Fujifilm Fujinon XF18mmF1.4 R LM WR", +# LensID": "LUMIX S 20-60mm F3.5-5.6" + +# "Lens": "LUMIX S 20-60/F3.5-5.6", +# "LensModel": "LUMIX S 20-60/F3.5-5.6", +# "LensID": "Fujifilm Fujinon XF18mm F1.4 R LM WR" + +# "Lens": "400mm f/2.8", +# "LensID": "AF-S VR Nikkor 400mm f/2.8G ED", +# Nikon si LensModel vide => LensID + +# "LensModel": "VR 300mm f/2.8G", +# "Lens": "300.0 mm f/2.8", +# "LensID": "VR 300mm f/2.8G" + +# "LensModel": "EF600mm f/4L IS III USM", +# "LensID": "Canon EF 600mm f/4L IS III USM" +# "Lens": "EF600mm f/4L IS III USM", + +# 1 LensID puis 2 LendModel + lens_flickr="\"${l}\" " lens_insta="$(echo "$l" | sed 's/ //g' | sed -r 's/[^ ]+/#&/g') " +#echo "lens_flickr: $lens_flickr" +#echo "lens_insta: $lens_insta" + for i in "${wild[@]}" do @@ -407,6 +625,8 @@ else fi +# copy tags to clipboard + if [ "$insta" = true ]; then if [[ "$OSTYPE" == "linux-gnu" ]] && [ -x "$(command -v xsel)" ]; then diff --git a/sony.csv b/sony.csv new file mode 100644 index 0000000..425b4f5 --- /dev/null +++ b/sony.csv @@ -0,0 +1,42 @@ +ILCE-7M3;Alpha 7 III +ILCE-7M4;α7 IV +ILCE-7RM5;α7R V +ILCE-7SM3;Alpha 7S III +ILCE-7RM4;α7R IV +ILCE-7RM3;α7R III +ILCE-7C;Alpha 7C +ILCE-7M2;Alpha 7 II +ILCE-7RM2;Alpha 7R II +ILCE-7R;α7R +ILCE-7RM4A;α7R IV +ILCE-7RM3;Alpha 7R III +ILCE-7;α7 +ILCE-7SM2;α7S II +ILCE-7S;α7S +ILCE-7M3K;Alpha 7 III +ILCE-7M4K;α7 IV +ILCE-7M2K;Alpha 7 II +ILCE-7CL;Alpha 7C +ILCE-7K;α7 +ILCE-1;Alpha 1 +ILCE-9M2;Alpha 9 II +ILCE-9;Alpha 9 +ILCE-6000;α6000 +ILCE-6400;Alpha 6400 +ILCE-6600;Alpha 6600 +ILCE-6500;α6500 +ILCE-6100;Alpha 6100 +ILCE-6300;α6300 +ILCE-6700;α6700 +ILCE-6400L;Alpha 6400 +ILCE-6400M;Alpha 6400 +ILCE-6600M;Alpha 6600 +ILCE-3000;ILCE-3000 +ILCE-3500J;ILCE-3500J +ILCE-3000K;ILCE-3000K +ILCE-5100L;α5100 +ILCE-5100Y;α5100 +ILCE-5100Y;α5100 +ILCE-5000;α5000 +ILCE-5000;ILCE-5000 +ILCE-5000L;α5000L