summaryrefslogtreecommitdiffhomepage
path: root/lib/media/jao-spt.el
diff options
context:
space:
mode:
Diffstat (limited to 'lib/media/jao-spt.el')
-rw-r--r--lib/media/jao-spt.el53
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 ()