68 lines
1.2 KiB
Bash
Executable File
68 lines
1.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
TAGS_TO_TRANSFER=(
|
|
-Make
|
|
-Model
|
|
-ModifyDate
|
|
-Artist
|
|
-Copyright
|
|
-Orientation
|
|
-CreateDate
|
|
-ExposureTime
|
|
-FNumber
|
|
-ISO
|
|
-DateTimeOriginal
|
|
-ShutterSpeedValue
|
|
-ApertureValue
|
|
-Flash
|
|
-FocalLength
|
|
)
|
|
FOLDER="./JPGs"
|
|
|
|
extractRAW() {
|
|
[[ -n "$1" ]] || return
|
|
prev="$FOLDER/${1%.*}.JPG"
|
|
if [[ ! -e "$prev" ]]; then
|
|
exiftool -progress \
|
|
-b \
|
|
-PreviewImage \
|
|
"$1" \
|
|
> "$prev"
|
|
exiftool -overwrite_original \
|
|
-tagsFromFile="$1" \
|
|
"${TAGS_TO_TRANSFER[@]}" \
|
|
"$prev"
|
|
fi
|
|
}
|
|
|
|
mkdir -p "$FOLDER"
|
|
for file; do
|
|
[[ -f $file ]] || continue
|
|
|
|
mime="$(file -b --mime-type "$file")"
|
|
|
|
if [[ $mime = image/x-canon-cr2 ]]; then
|
|
extractRAW "$file"
|
|
|
|
elif [[ $mime = image/tiff ]]; then
|
|
prev="$FOLDER/${file%.*}.JPG"
|
|
if [[ ! -e "$prev" ]]; then
|
|
convert "$file" "$prev"
|
|
exiftool -overwrite_original \
|
|
-tagsFromFile="$file" \
|
|
"${TAGS_TO_TRANSFER[@]}" \
|
|
"$prev"
|
|
fi
|
|
|
|
elif [[ "$(head -1 "$file")" = "#Geeqie collection" ]]; then
|
|
while read line; do
|
|
extractRAW "$file"
|
|
done <"$(sed -E '/^#/d;s/(^"|"$)//g' "$file")"
|
|
|
|
else
|
|
>&2 printf "Unrecognized format: $file\n"
|
|
|
|
fi
|
|
done
|
|
rmdir "$FOLDER" >/dev/null 2>&1 || true
|