From e2c0f0e2de6bf480c7ad3a617fc0cddbe6852bcc Mon Sep 17 00:00:00 2001 From: Thanh Vuong Date: Sat, 24 Aug 2019 23:59:39 -0600 Subject: parse date info for past /route --- hnreader.el | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) (limited to 'hnreader.el') diff --git a/hnreader.el b/hnreader.el index 726fbdc..a2fd302 100644 --- a/hnreader.el +++ b/hnreader.el @@ -80,6 +80,30 @@ third one is 80.") (format "\n* [[elisp:(hnreader-read-page \"https://news.ycombinator.com/%s\")][More]]" (dom-attr more-link 'href)))) +(defun hnreader--get-time-top-link (node) + "Get date link in route /past from NODE." + (let ((a-link (dom-attr (dom-by-tag node 'a) 'href)) + (text (dom-texts node))) + (format "[[elisp:(hnreader-read-page \"https://news.ycombinator.com/%s\")][%s]]" + a-link + text))) + +(defun hnreader--past-time-top-links (node-list) + "Get date, month and year links from NODE-LIST." + (seq-reduce (lambda (acc it) + (concat acc (hnreader--get-time-top-link it) " ")) + node-list + "Go back to a ")) + +(defun hnreader--get-route-top-info (dom) + "Get top info of route like title, date of hn routes such as front, past from DOM." + (let* ((space-page (dom-by-id dom "^pagespace$")) + (title (dom-attr space-page 'title)) + (hn-more (dom-by-class dom "^hnmore$"))) + (format "\n%s %s" + title + (hnreader--past-time-top-links hn-more)))) + (defun hnreader--print-frontpage (dom buf) "Print raw DOM on BUF." (let ((things (dom-by-class dom "^athing$")) @@ -88,6 +112,7 @@ third one is 80.") (read-only-mode -1) (erase-buffer) (insert "#+STARTUP: overview indent\n") + (insert (hnreader--get-route-top-info dom)) (cl-mapcar #'hnreader--print-frontpage-item things subtexts) ;; (setq-local org-confirm-elisp-link-function nil) (insert (hnreader--get-morelink dom)) @@ -146,7 +171,7 @@ third one is 80.") (hnreader--get-indent (hnreader--get-img-tag-width comment)) (hnreader--get-comment-owner comment))) - (hnreader--print-node (hnreader--get-comment comment))) + (hnreader--print-node (hnreader--get-comment comment))) (org-mode) (org-shifttab 3) (goto-char (point-min)) @@ -183,15 +208,19 @@ third one is 80.") (defun hnreader-read-page (url) "Print HN URL page." (interactive "sLink: ") - (message url) (hnreader-readpage-promise url) nil) -(defun hnreader-front() +(defun hnreader-news() "Read front page." (interactive) (hnreader-read-page "https://news.ycombinator.com/news")) +(defun hnreader-past() + "Read past page." + (interactive) + (hnreader-read-page "https://news.ycombinator.com/front")) + (defun hnreader-ask () "Read ask page." (interactive) -- cgit v1.2.3