Made the fields more configurable, allowing for user customization
This commit is contained in:
parent
e761e1eb6f
commit
4cf1259c5b
1 changed files with 30 additions and 22 deletions
|
@ -39,28 +39,37 @@
|
|||
;;; Code:
|
||||
|
||||
(defcustom elfeed-export-fields
|
||||
'(title date url tags feed-title feed content)
|
||||
"Which fields to export per entry."
|
||||
'((title . elfeed-entry-title)
|
||||
(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)
|
||||
|
||||
(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)
|
||||
(let ((feed (elfeed-entry-feed entry)))
|
||||
(remove nil
|
||||
(list
|
||||
(when (memq 'title elfeed-export-fields)
|
||||
(cons "title" (elfeed-entry-title entry)))
|
||||
(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))))))))
|
||||
(mapcar (lambda (field)
|
||||
(cons (symbol-name (car field))
|
||||
(funcall (cdr field) entry)))
|
||||
elfeed-export-fields)))
|
||||
|
||||
(defun elfeed-export--entries ()
|
||||
(let ((entries)
|
||||
|
@ -69,11 +78,10 @@
|
|||
(setq entries
|
||||
(append entries
|
||||
(elfeed-feed-entries feed))))
|
||||
entries))
|
||||
(mapcar #'elfeed-export--entry-to-alist entries)))
|
||||
|
||||
(defun elfeed-export-to-json ()
|
||||
(json-encode
|
||||
(mapcar #'elfeed-export--entry-to-alist (elfeed-export--entries))))
|
||||
(json-encode (elfeed-export--entries)))
|
||||
|
||||
(defun elfeed-export-to-file (path)
|
||||
(interactive "F")
|
||||
|
|
Loading…
Reference in a new issue