(defconst my/termux-p (getenv "ANDROID_ROOT")) (defun my/clipboard-get () "Return the text on the system clipboard. This function treats Termux systems differently, the clipboard is only accessible through the termux-clipboard-get commandline interface, part of the the termux-api package." (if my/termux-p (shell-command-to-string "termux-clipboard-get") (current-kill 0))) (defun my/get-url-title (url) "Attempt to retrieve the title string from the given URL. Assuming the URL points to an HTML source. Returns nil if there is a non-200 return status or no title could be found." (let* ((command (format "curl --fail --silent %s" url)) (html (shell-command-to-string command)) (regexp (rx (seq "" (group (+ (not (any "<" ">")))) ""))) (matches (string-match regexp html)) (suggested-title (match-string 1 html))) (read-string (format-prompt "Title" "") suggested-title t))) (defun my/denote/url (url) "Create a new Org-based note based on an URL. Use the URL on the clipboard if there is one. Then, the title is retrieved from the HTML source to suggest the title for the note." (interactive (list (let* ((clipboard (my/clipboard-get)) (clipboard-url (when (org-url-p clipboard) clipboard))) (read-string (format-prompt "URL" "") clipboard-url t)))) (denote (my/get-url-title url) (denote-keywords-prompt) 'org (denote-subdirectory-prompt)) (org-set-property "URL" url))