>>107160795
Here's my work in progress.
(defun org-4chan-thread-render-front (buffer op)
(with-current-buffer buffer
(insert "#+title: " (alist-get 'sub op) "\n")
(insert "#+startup: indent\n\n")
))
(defun org-4chan-thread-render-post (buffer post)
(with-current-buffer buffer
(insert (format "* <%s> %d\n"
(org-4chan-convert-datetime (alist-get 'now post))
(alist-get 'no post)))
(let* ((a (point)))
(insert (format "%s\n\n" (alist-get 'com post)))
(let* ((b (point)))
(shr-render-region a b)
(let* ((c (point)))
(replace-regexp-in-region
(rx line-start "* ") " * " a c))))
(insert "\n")))
(defun org-4chan-thread-render (board thread)
"Create an org buffer with the contents the given thread."
(interactive)
(let* ((posts (alist-get 'posts thread))
(op (aref posts 0))
(buffer (get-buffer-create "*4chan thread*")))
(org-4chan-thread-render-front buffer op)
(cl-loop for p in (cl-coerce posts 'list)
do (org-4chan-thread-render-post buffer p))
buffer
))
Example:
ELISP> (org-4chan-thread-render "g" g-thread-lisp)
#<buffer *4chan thread*>
Then C-x b *4chan thread* RET.