@@ -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 <bruno<clicclac.info>"
@@ -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 += ( "canon photography" )
[ [ " $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