summaryrefslogtreecommitdiff
path: root/lisp/servall-ytdl.el
diff options
context:
space:
mode:
authorYuchen Pei <hi@ypei.me>2022-09-13 12:29:36 +1000
committerYuchen Pei <hi@ypei.me>2022-09-13 12:29:36 +1000
commit3fb5ca12a4c454887f3310c386c3dcbf9a4f3f9c (patch)
tree1503a11dffd4dd264d815de3e9016ef73e20594e /lisp/servall-ytdl.el
parent0badf7a7160e297b04bf198d23e890bce2629a57 (diff)
Separating out results and ytdl to their own files
Diffstat (limited to 'lisp/servall-ytdl.el')
-rw-r--r--lisp/servall-ytdl.el41
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)