blob: 426333bd6e6e79a38922cd215ef1c1fe4812f842 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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)
|