]> gitweb.hhaalo.de Git - scantopdf.git/commitdiff
add keywords with exiftool
authorBastian Dehn <hhaalo@arcor.de>
Tue, 22 Jul 2025 12:34:28 +0000 (14:34 +0200)
committerBastian Dehn <hhaalo@arcor.de>
Tue, 22 Jul 2025 16:18:35 +0000 (18:18 +0200)
src/scanbasic.sh
src/scantopdf
src/scantopdfbw
src/scantopdfgray
tests/scanbasic.bats

index c5096f58405c0f44e2147fbdd3aae2baebe97179..96033d5fc088e855caa466df66f39470865605b9 100644 (file)
@@ -198,10 +198,56 @@ createmultipdfs()
        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 $?
@@ -235,4 +281,7 @@ scantopdf() {
 
        createonepdf "$output" \
                || return $?
+
+       add_keywords "$output" "$keywords" \
+               || return $?
 }
index 44129858061983cc85f97a8db6f60944e313e637..f748388fbfa16ce09a58bf7ab386fd8fbe568fb3 100755 (executable)
@@ -4,15 +4,16 @@
 
 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 "$@"
index b1ff2683f150e30a65d3255db1e823c472299c75..e37b2899726a4b5e42e4350e7b9854f251a0d8f4 100755 (executable)
@@ -4,15 +4,16 @@
 
 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 "$@"
index 103a1756bf602eb36b8645532c3f3f6567d9ee03..2f2f7cf82a184de348f710963312661f9255fefa 100755 (executable)
@@ -4,15 +4,16 @@
 
 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 "$@"
index 069db782d3a3bd3f00eeba3ad760120dd85c3840..8fefc46efa4a5b87497824c1c577f6bcecc43b49 100755 (executable)
@@ -242,6 +242,18 @@ setup() {
        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
 
@@ -312,3 +324,13 @@ setup() {
 
        assert_success
 }
+
+@test "should success add keywords" {
+       exiftool() {
+               :
+       }
+
+       run add_keywords "2025-07-22_test_word.pdf"
+
+       assert_success
+}