diff options
Diffstat (limited to 'lib/media')
-rw-r--r-- | lib/media/jao-spt.el | 53 |
1 files changed, 41 insertions, 12 deletions
diff --git a/lib/media/jao-spt.el b/lib/media/jao-spt.el index b8ef0f0..c4c1604 100644 --- a/lib/media/jao-spt.el +++ b/lib/media/jao-spt.el @@ -29,42 +29,71 @@ (defvar jao-spt-bin (expand-file-name "~/bin/spt")) (defvar jao-spt-format "'%s %t - %a [%r] %f'") +(defvar jao-spt-device nil) -(defun jao-spt--exec (&rest args) +(defun jao-spt--exec-async (&rest args) (let ((display-buffer-alist `((".*spt commands.*" display-buffer-no-window))) (buff (get-buffer-create "* spt commands *"))) (apply #'start-process "spt" buff jao-spt-bin args))) (defvar jao-spt--status-str "") +(defun jao-spt--pb (&rest args) + (let* ((args (mapconcat #'identity args " ")) + (dev (if jao-spt-device (format "-d '%s'" jao-spt-device) "")) + (cmd (format "%s pb %s -f %s %s" jao-spt-bin args jao-spt-format dev)) + (st (string-trim (shell-command-to-string cmd)))) + (setq jao-spt--status-str (when (string-prefix-p "▶" st) st)) + (jao-minibuffer-refresh) + st)) + +(defun jao-spt--pb* (&rest args) + (message (apply 'jao-spt--pb args))) + ;;;###autoload (defun jao-spt-play-uri (uri) - (jao-spt--exec "play" "--uri" uri)) + (jao-spt--exec-async "play" "--uri" uri)) ;;;###autoload (defun jao-spt-update-status () (interactive) - (let ((st (string-trim (shell-command-to-string (format "%s pb -f %s" - jao-spt-bin - jao-spt-format))))) - (setq jao-spt--status-str (when (string-prefix-p "▶" st) st)) - (jao-minibuffer-refresh) - st)) + (jao-spt--pb)) ;;;###autoload (defun jao-spt-toggle () (interactive) - (jao-spt--exec "pb" "-t")) + (jao-spt--pb* "-t")) ;;;###autoload (defun jao-spt-next () (interactive) - (jao-spt--exec "pb" "-n")) + (jao-spt--pb* "-n")) ;;;###autoload (defun jao-spt-previous () (interactive) - (jao-spt--exec "pb" "-p")) + (jao-spt--pb* "-p")) + +;;;###autoload +(defun jao-spt-like () + (interactive) + (jao-spt--pb* "--like")) + +;;;###autoload +(defun jao-spt-dislike () + (interactive) + (jao-spt--pb* "--dislike")) + +;;;###autoload +(defun jao-spt-seek (secs) + (interactive "p") + (let ((secs (if (zerop secs) 10 secs))) + (jao-spt--pb* "--seek" (format "%s%s" (if (> secs 0) "+" "-") secs)))) + +;;;###autoload +(defun jao-spt-seek-back (secs) + (interactive "p") + (jao-spt-seek (- secs))) ;;;###autoload (defun jao-spt-echo-current () @@ -75,7 +104,7 @@ ;;;###autoload (defun jao-spt-toggle-shuffle () (interactive) - (jao-spt--exec "pb" "--shuffle")) + (jao-spt--pb* "--shuffle")) ;;;###autoload (defun jao-spt-set-up () |