diff options
Diffstat (limited to 'emacs/.emacs.d/lisp/my')
| -rw-r--r-- | emacs/.emacs.d/lisp/my/belf.el | 42 | 
1 files changed, 29 insertions, 13 deletions
| diff --git a/emacs/.emacs.d/lisp/my/belf.el b/emacs/.emacs.d/lisp/my/belf.el index 0e7a557..9eef0b8 100644 --- a/emacs/.emacs.d/lisp/my/belf.el +++ b/emacs/.emacs.d/lisp/my/belf.el @@ -162,24 +162,40 @@              found (file-exists-p cover-file-name)))      (when found cover-file-name))) +(defun belf-pdf-page-one-cover (file-name) +  "Extract the first page of a pdf file as cover." +  (let ((cover-file (file-name-with-extension file-name "jpg"))) +    (with-temp-buffer +      (if (eq 0 +              (call-process "gs" nil t t +                            "-dNOPAUSE" "-dBATCH" "-sDEVICE=jpeg" "-r300" +                            (format "-sOutputFile=%s" cover-file) +                            "-dFirstPage=1" "-dLastPage=1" file-name)) +          cover-file +        (message "Failed to extract cover from PDF: %s" (buffer-string)) +        nil)))) +  (defun belf-book-cover (file-name)    "Get book cover.  First look for an image file with the same file name.  Then for PDF, extract the first page. -For EPUB, looks for a cover image in the file. If not found, extract the first page." -  (when-let ((cover-file-name (belf-locate-book-cover file-name))) -    (concat "file://" cover-file-name)) -  (when (equal "epub" (file-name-extension file-name)) -    (when-let* ((content-file-name (belf-epub-content-file-name file-name)) -                (cover-file -                 (belf-epub-cover-file-name file-name content-file-name)) -                (cover-file-name (file-name-with-extension -                                  file-name -                                  (file-name-extension cover-file)))) -      (call-process "unzip" nil `(:file ,cover-file-name) nil -                    "-p" file-name cover-file) -      (concat "file://" cover-file-name))) +For EPUB, looks for a cover image in the file." +  (if-let ((cover-file-name (belf-locate-book-cover file-name))) +      (concat "file://" cover-file-name) +    (when (equal "epub" (file-name-extension file-name)) +      (when-let* ((content-file-name (belf-epub-content-file-name file-name)) +                  (cover-file +                   (belf-epub-cover-file-name file-name content-file-name)) +                  (cover-file-name (file-name-with-extension +                                    file-name +                                    (file-name-extension cover-file)))) +        (call-process "unzip" nil `(:file ,cover-file-name) nil +                      "-p" file-name cover-file) +        (format "file://%s" cover-file-name))) +    (when (equal "pdf" (file-name-extension file-name)) +      (when (setq cover-file-name (belf-pdf-page-one-cover file-name)) +        (format "file://%s" cover-file-name))))    )  (defun belf-book-infobox-at-point () | 
