diff options
author | Yuchen Pei <hi@ypei.me> | 2022-09-13 12:29:36 +1000 |
---|---|---|
committer | Yuchen Pei <hi@ypei.me> | 2022-09-13 12:29:36 +1000 |
commit | 3fb5ca12a4c454887f3310c386c3dcbf9a4f3f9c (patch) | |
tree | 1503a11dffd4dd264d815de3e9016ef73e20594e /lisp/servall-ytdl.el | |
parent | 0badf7a7160e297b04bf198d23e890bce2629a57 (diff) |
Separating out results and ytdl to their own files
Diffstat (limited to 'lisp/servall-ytdl.el')
-rw-r--r-- | lisp/servall-ytdl.el | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/lisp/servall-ytdl.el b/lisp/servall-ytdl.el new file mode 100644 index 0000000..426333b --- /dev/null +++ b/lisp/servall-ytdl.el @@ -0,0 +1,41 @@ +;; -*- lexical-binding: t; -*- +(require 'servall-client) +(require 'servall-results) + +;; ytdl results +(define-derived-mode servall-ytdl-results-mode servall-results-mode + "servall-ytdl-results" + "Mode for showing and selecting ytdl results" + (setq-local servall-ytdl-results-query nil)) + +(defun servall-ytdl-search (query) + (interactive "sYtdl Query: ") + (with-current-buffer (get-buffer-create servall-results-buffer) + (servall-ytdl-results-mode) + (setq servall-ytdl-results-query query + servall-results-update-function 'servall-ytdl-results-update + servall-results-re-search-function 'servall-ytdl-search + servall-results-open-function 'servall-ytdl-results-open) + (servall-results-update (lambda () + (switch-to-buffer servall-results-buffer))))) + +(defun servall-ytdl-results-update (cb) + (servall-api-ytdl-search + servall-ytdl-results-query + (lambda (results) + (with-current-buffer (get-buffer-create servall-results-buffer) + (let* ((inhibit-read-only t)) + (erase-buffer) + (mapc + (lambda (result) + (let ((title (alist-get 'title result))) + (insert + (propertize + (concat "* " title "\n") + 'title title)) + (insert (alist-get 'description result) "\n\n"))) + results) + (goto-char (point-min)))) + (funcall cb)))) + +(provide 'servall-ytdl) |