1
0
Fork 0

Made the fields more configurable, allowing for user customization

This commit is contained in:
Bram Schoenmakers 2024-08-01 22:59:07 +02:00
parent e761e1eb6f
commit 4cf1259c5b
Signed by: bram
GPG key ID: 0CCD19DFDC63258F

View file

@ -39,28 +39,37 @@
;;; Code: ;;; Code:
(defcustom elfeed-export-fields (defcustom elfeed-export-fields
'(title date url tags feed-title feed content) '((title . elfeed-entry-title)
"Which fields to export per entry." (date . elfeed-export--entry-date)
(url . elfeed-entry-link)
(tags . elfeed-entry-tags)
(feed-title . elfeed-export--feed-title)
(feed . elfeed-export--entry-feed)
(content . elfeed-export--entry-content))
"Which fields to export per entry and a function to obtain the value.
The function takes an entry argument for extracting the desired value."
:type 'alist
:group 'elfeed-export) :group 'elfeed-export)
(defun elfeed-export--entry-date (entry)
(format-time-string "%F %T" (elfeed-entry-date entry)))
(defun elfeed-export--feed-title (entry)
(elfeed-feed-title (elfeed-entry-feed entry)))
(defun elfeed-export--entry-feed (entry)
(elfeed-feed-url (elfeed-entry-feed entry)))
(defun elfeed-export--entry-content (entry)
(elfeed-deref (elfeed-entry-content entry)))
(defun elfeed-export--entry-to-alist (entry) (defun elfeed-export--entry-to-alist (entry)
(let ((feed (elfeed-entry-feed entry))) (remove nil
(remove nil (mapcar (lambda (field)
(list (cons (symbol-name (car field))
(when (memq 'title elfeed-export-fields) (funcall (cdr field) entry)))
(cons "title" (elfeed-entry-title entry))) elfeed-export-fields)))
(when (memq 'date elfeed-export-fields)
(cons "date" (format-time-string "%F %T" (elfeed-entry-date entry))))
(when (memq 'url elfeed-export-fields)
(cons "url" (elfeed-entry-link entry)))
(when (memq 'tags elfeed-export-fields)
(cons "tags" (elfeed-entry-tags entry)))
(when (memq 'feed-title elfeed-export-fields)
(cons "feed-title" (elfeed-feed-title feed)))
(when (memq 'feed elfeed-export-fields)
(cons "feed" (elfeed-feed-url feed)))
(when (memq 'content elfeed-export-fields)
(cons "content" (elfeed-deref (elfeed-entry-content entry))))))))
(defun elfeed-export--entries () (defun elfeed-export--entries ()
(let ((entries) (let ((entries)
@ -69,11 +78,10 @@
(setq entries (setq entries
(append entries (append entries
(elfeed-feed-entries feed)))) (elfeed-feed-entries feed))))
entries)) (mapcar #'elfeed-export--entry-to-alist entries)))
(defun elfeed-export-to-json () (defun elfeed-export-to-json ()
(json-encode (json-encode (elfeed-export--entries)))
(mapcar #'elfeed-export--entry-to-alist (elfeed-export--entries))))
(defun elfeed-export-to-file (path) (defun elfeed-export-to-file (path)
(interactive "F") (interactive "F")