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:
|
;;; 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
|
||||||
(list
|
(mapcar (lambda (field)
|
||||||
(when (memq 'title elfeed-export-fields)
|
(cons (symbol-name (car field))
|
||||||
(cons "title" (elfeed-entry-title entry)))
|
(funcall (cdr field) entry)))
|
||||||
(when (memq 'date elfeed-export-fields)
|
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")
|
||||||
|
|
Loading…
Reference in a new issue