Version 2

-use json data from exiftool
-support all APN Makers (not only Canon)
-some bugfixs
This commit is contained in:
2023-07-18 20:14:51 +02:00
parent fb24c60c1e
commit 58da213080
4 changed files with 284 additions and 21 deletions

View File

@@ -19,3 +19,4 @@ martre;marten
martre des pins;pine marten
bouquetin;ibex
mammifère;mammal
oiseau;bird
1 FR EN
19 martre des pins pine marten
20 bouquetin ibex
21 mammifère mammal
22 oiseau bird

BIN
keywords.numbers Executable file

Binary file not shown.

View File

@@ -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+=("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

42
sony.csv Normal file
View File

@@ -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
1 ILCE-7M3 Alpha 7 III
2 ILCE-7M4 α7 IV
3 ILCE-7RM5 α7R V
4 ILCE-7SM3 Alpha 7S III
5 ILCE-7RM4 α7R IV
6 ILCE-7RM3 α7R III
7 ILCE-7C Alpha 7C
8 ILCE-7M2 Alpha 7 II
9 ILCE-7RM2 Alpha 7R II
10 ILCE-7R α7R
11 ILCE-7RM4A α7R IV
12 ILCE-7RM3 Alpha 7R III
13 ILCE-7 α7
14 ILCE-7SM2 α7S II
15 ILCE-7S α7S
16 ILCE-7M3K Alpha 7 III
17 ILCE-7M4K α7 IV
18 ILCE-7M2K Alpha 7 II
19 ILCE-7CL Alpha 7C
20 ILCE-7K α7
21 ILCE-1 Alpha 1
22 ILCE-9M2 Alpha 9 II
23 ILCE-9 Alpha 9
24 ILCE-6000 α6000
25 ILCE-6400 Alpha 6400
26 ILCE-6600 Alpha 6600
27 ILCE-6500 α6500
28 ILCE-6100 Alpha 6100
29 ILCE-6300 α6300
30 ILCE-6700 α6700
31 ILCE-6400L Alpha 6400
32 ILCE-6400M Alpha 6400
33 ILCE-6600M Alpha 6600
34 ILCE-3000 ILCE-3000
35 ILCE-3500J ILCE-3500J
36 ILCE-3000K ILCE-3000K
37 ILCE-5100L α5100
38 ILCE-5100Y α5100
39 ILCE-5100Y α5100
40 ILCE-5000 α5000
41 ILCE-5000 ILCE-5000
42 ILCE-5000L α5000L