From f0a52b3da11cb12cdff61908c6a2766e1b12daf2 Mon Sep 17 00:00:00 2001 From: stardiviner Date: Sat, 20 Aug 2022 11:29:46 +0800 Subject: [PATCH] Fix audio thumbnail preview image renaming logic. --- org-link-beautify.el | 68 ++++++++++++++++++++++++++++++---------------------- 1 file changed, 40 insertions(+), 28 deletions(-) diff --git a/org-link-beautify.el b/org-link-beautify.el index 1e407c5..a82be17 100644 --- a/org-link-beautify.el +++ b/org-link-beautify.el @@ -566,6 +566,16 @@ Set `org-link-beautify-pdf-preview-image-format' to `svg'.")) (org-link-beautify--add-keymap start end) (org-link-beautify--display-thumbnail thumbnail-file thumbnail-size start end))) +(defvar org-link-beautify--audio-thumbnailer + (cond + ;; for macOS, use `qlmanage' + ((and (eq system-type 'darwin) (executable-find "qlmanage")) "qlmanage") + ;; for Linux, use `audiowaveform' + ((and (eq system-type 'gnu/linux) (executable-find "audiowaveform")) "audiowaveform") + ;; for general, use `ffmpeg' + ((executable-find "ffmpeg") "ffmpeg")) + "Find available audio thumbnailer command.") + (defun org-link-beautify--preview-audio (path start end) "Preview audio PATH with wave form image on link between START and END." (let* ((audio-file (expand-file-name (org-link-unescape path))) @@ -574,34 +584,36 @@ Set `org-link-beautify-pdf-preview-image-format' to `svg'.")) (thumbnail-size (or org-link-beautify-audio-preview-size 200))) (org-link-beautify--ensure-thumbnails-dir thumbnails-dir) (unless (file-exists-p thumbnail-file) - ;; DEBUG: - ;; (message "%s\n%s\n" audio-file thumbnail-file) - (cond - ((and (eq system-type 'darwin) (executable-find "qlmanage")) - (start-process - "org-link-beautify--audio-preview" - " *org-link-beautify audio preview*" - "qlmanage" - "-x" - "-t" - "-s" (number-to-string 100) - audio-file - "-o" thumbnails-dir) - ;; then rename [video.mp4.png] to [video.png] - (let ((original-thumbnail-file (concat thumbnails-dir (file-name-nondirectory audio-file) ".png"))) - (if (and (not org-link-beautify-enable-debug-p) (file-exists-p original-thumbnail-file)) - (rename-file original-thumbnail-file thumbnail-file) - (when (and org-link-beautify-enable-debug-p (not (file-exists-p thumbnail-file))) - (org-link-beautify--notify-generate-thumbnail-failed audio-file thumbnail-file))))) - ((and (eq system-type 'gnu/linux) (executable-find "audiowaveform")) - (start-process - "org-link-beautify--audio-preview" - " *org-link-beautify audio preview*" ; DEBUG: check out output buffer - "audiowaveform" - "-i" audio-file - "-o" thumbnail-file) - (when (and org-link-beautify-enable-debug-p (not (file-exists-p thumbnail-file))) - (org-link-beautify--notify-generate-thumbnail-failed audio-file thumbnail-file))))) + (pcase org-link-beautify--audio-thumbnailer + ("qlmanage" + (let ((qlmanage-thumbnail-file (concat thumbnails-dir (file-name-nondirectory audio-file) ".png"))) + (unless (file-exists-p qlmanage-thumbnail-file) + (start-process + "org-link-beautify--audio-preview" + " *org-link-beautify audio preview*" + "qlmanage" + "-x" + "-t" + "-s" (number-to-string 100) + audio-file + "-o" thumbnails-dir)) + ;; then rename [audio.mp3.png] to [audio.png] + (when (not (file-exists-p thumbnail-file)) + (rename-file qlmanage-thumbnail-file thumbnail-file)) + (when (and org-link-beautify-enable-debug-p (not (file-exists-p thumbnail-file))) + (org-link-beautify--notify-generate-thumbnail-failed audio-file thumbnail-file)))) + ("audiowaveform" + (start-process + "org-link-beautify--audio-preview" + " *org-link-beautify audio preview*" ; DEBUG: check out output buffer + "audiowaveform" + "-i" audio-file + "-o" thumbnail-file) + (when (and org-link-beautify-enable-debug-p (not (file-exists-p thumbnail-file))) + (org-link-beautify--notify-generate-thumbnail-failed audio-file thumbnail-file))) + ;; TODO: use ffmpeg to generate audio wave form preview image. + ("ffmpeg" + ))) (org-link-beautify--add-overlay-marker start end) (org-link-beautify--add-keymap start end) (org-link-beautify--display-thumbnail thumbnail-file thumbnail-size start end))) -- 2.11.4.GIT