diff options
author | Arun Isaac | 2017-02-20 00:24:12 +0530 |
---|---|---|
committer | Arun Isaac | 2017-02-20 00:24:12 +0530 |
commit | 5169f200cce03fb47b4f11b743d46d0204d9e4b6 (patch) | |
tree | 902cfd3c2645c24c03305dc735252e4bc5eed4bd | |
download | exiftool.el-5169f200cce03fb47b4f11b743d46d0204d9e4b6.tar.gz exiftool.el-5169f200cce03fb47b4f11b743d46d0204d9e4b6.tar.lz exiftool.el-5169f200cce03fb47b4f11b743d46d0204d9e4b6.zip |
Initial commit
-rw-r--r-- | el-exiftool-tests.el | 14 | ||||
-rw-r--r-- | el-exiftool.el | 46 | ||||
-rw-r--r-- | test1.png | bin | 0 -> 1234 bytes | |||
-rw-r--r-- | test2.jpg | bin | 0 -> 4704 bytes |
4 files changed, 60 insertions, 0 deletions
diff --git a/el-exiftool-tests.el b/el-exiftool-tests.el new file mode 100644 index 0000000..7fce6e8 --- /dev/null +++ b/el-exiftool-tests.el @@ -0,0 +1,14 @@ +(require 'el-exiftool) +(require 'ert) + +(ert-deftest read-write-test () + (let ((test-filename "test1.png")) + (let ((temp-filename (make-temp-file "el-exiftool-" + nil (concat "-" test-filename))) + (tag "xmp:Marked") + (value "True")) + (copy-file test-filename temp-filename t) + (el-exiftool-write temp-filename (cons tag value)) + (should (equal (el-exiftool-read temp-filename tag) + value)) + (delete-file temp-filename)))) diff --git a/el-exiftool.el b/el-exiftool.el new file mode 100644 index 0000000..9dd4807 --- /dev/null +++ b/el-exiftool.el @@ -0,0 +1,46 @@ +;; -*- lexical-binding: t -*- + +(require 'subr-x) +(require 'cl) + +(defun el-exiftool--tq-sync-query (tq question regexp &optional closure) + (let ((response)) + (tq-enqueue tq question regexp closure + (lambda (closure answer) (setq response answer))) + (while (not response) + (accept-process-output)) + response)) + +(defun el-exiftool-run () + (when-let (exiftool (get-process "exiftool")) + (delete-process exiftool)) + (start-process "exiftool" "exiftool" "exiftool" "-stay_open" "True" "-@" "-")) + +(let ((tq (tq-create (el-exiftool-run)))) + (defun el-exiftool-command (&rest args) + (string-trim + (let ((suffix "{ready}\n")) + (string-remove-suffix + suffix (el-exiftool--tq-sync-query + tq (concat (string-join args "\n") + "\n-execute\n") + suffix)))))) + +(defun el-exiftool-read (filepath tag) + (el-exiftool-command + "-s" "-s" "-s" (format "-%s" tag) filepath)) + +(defun el-exiftool-copy (source destination) + (el-exiftool-command "-overwrite_original" + "-tagsFromFile" source + "-all:all" destination) + (message "Tags from %s copied to %s" source destination) + destination) + +(cl-defun el-exiftool-write (filepath (tag . value)) + (unless (string-blank-p value) + (el-exiftool-command + "-m" "-overwrite_original" + (format "-%s=%s" tag value) filepath))) + +(provide 'el-exiftool) diff --git a/test1.png b/test1.png Binary files differnew file mode 100644 index 0000000..7252cca --- /dev/null +++ b/test1.png diff --git a/test2.jpg b/test2.jpg Binary files differnew file mode 100644 index 0000000..b027165 --- /dev/null +++ b/test2.jpg |