done
}
+get_title_from_file_name()
+{
+ local file_name="$1"
+ local title="${file_name%.*}"
+ title="${title#*_}"
+ title="${title//_/ }"
+
+ echo "$title"
+}
+
+get_date_from_file_name()
+{
+ local file_name="$1"
+ local date="${file_name%%_*}"
+ date="${date//-/:} 00:00:00Z"
+
+ echo "$date"
+}
+
+add_keywords()
+{
+ local file_name="$1"
+ local keywords="$2"
+
+ [ -z "$keywords" ] && return 0
+
+ [[ "$file_name" =~ [0-9]{4}\-[0-9]{2}\-[0-9]{2}_.*\.pdf ]] \
+ || errlog "file name mismatch pattern" \
+ || return $?
+
+ local title=$(get_title_from_file_name "$file_name")
+ local date=$(get_date_from_file_name "$file_name")
+
+ echo "ℹ️ INFO: adding keywords $keywords to $file_name"
+ exiftool -Title="$title" \
+ -CreateDate="$date" \
+ -sep "," \
+ -PDF:Keywords="$keywords" \
+ -overwrite_original_in_place \
+ "$file_name" \
+ > /dev/null \
+ || errlog "could not add keywords $keywords to $file_name" \
+ || return $?
+}
+
scantopdf() {
local mode="$1"
local pagecount="$2"
local output="$3"
+ local keywords="$4"
check_commands \
|| return $?
createonepdf "$output" \
|| return $?
+
+ add_keywords "$output" "$keywords" \
+ || return $?
}
main()
{
- local pagecount=$1
- local output=$2
+ local pagecount="$1"
+ local output="$2"
+ local keywords="$3"
echo "⭐ START: scantopdf"
- scantopdf "Color" "$pagecount" "$output" \
+ scantopdf "Color" "$pagecount" "$output" "$keywords"\
|| return $?
echo "✅ SUCCESS: scantopdf"
}
-main $*
+main "$@"
main()
{
- local pagecount=$1
- local output=$2
+ local pagecount="$1"
+ local output="$2"
+ local keywords="$3"
echo "⭐ START: scantopdfbw"
- scantopdf "BW" "$pagecount" "$output" \
+ scantopdf "BW" "$pagecount" "$output" "$keywords" \
|| return $?
echo "✅ SUCCESS: scantopdfbw"
}
-main $*
+main "$@"
main()
{
- local pagecount=$1
- local output=$2
+ local pagecount="$1"
+ local output="$2"
+ local keywords="$3"
echo "⭐ START: scantopdfgray"
- scantopdf "Gray" "$pagecount" "$output" \
+ scantopdf "Gray" "$pagecount" "$output" "$keywords" \
|| return $?
echo "✅ SUCCESS: scantopdfgray"
}
-main $*
+main "$@"
assert_success
}
+@test "should get title from filename 2025-07-22_test_12345_word.pdf" {
+ run get_title_from_file_name "2025-07-22_test_12345_word.pdf"
+
+ assert_line --index 0 "test 12345 word"
+}
+
+@test "should get date from filename 2025-07-22_test_12345_word.pdf" {
+ run get_date_from_file_name "2025-07-22_test_12345_word.pdf"
+
+ assert_line --index 0 "2025:07:22 00:00:00Z"
+}
+
@test "should failure scantopdf missing mode parameter" {
run scantopdf
assert_success
}
+
+@test "should success add keywords" {
+ exiftool() {
+ :
+ }
+
+ run add_keywords "2025-07-22_test_word.pdf"
+
+ assert_success
+}