summaryrefslogtreecommitdiffstats
path: root/emacsconf-stream.el
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--emacsconf-stream.el106
1 files changed, 57 insertions, 49 deletions
diff --git a/emacsconf-stream.el b/emacsconf-stream.el
index da64992..0ac6853 100644
--- a/emacsconf-stream.el
+++ b/emacsconf-stream.el
@@ -162,20 +162,26 @@ while OTHER-FILENAME will be displayed at other times."
(shell-command (concat "firefox " (plist-get talk :qa-slide-url) "&"))))
(defun emacsconf-stream-open-qa-windows-on-change (talk)
+ "Open the QA window(s) for TALK if the track's autopilot is set to 'todo."
(interactive (list (emacsconf-complete-talk-info)))
- (when (or (not (boundp 'org-state)) (string= org-state "CLOSED_Q"))
- (save-window-excursion
- (if (or (null (plist-get talk :q-and-a))
- (string-match "Mumble" (plist-get talk :q-and-a)))
- (emacsconf-stream-open-in-between-slide talk)
- (emacsconf-stream-join-qa talk)
- (shell-command "i3-msg 'layout splith'")))))
+ (let ((track (emacsconf-get-track (plist-get talk :track))))
+ (when (eq (plist-get track :autopilot) 'todo)
+ (when (or (not (boundp 'org-state)) (string= org-state "CLOSED_Q"))
+ (save-window-excursion
+ (if (or (null (plist-get talk :q-and-a))
+ (string-match "Mumble" (plist-get talk :q-and-a)))
+ (emacsconf-stream-open-in-between-slide talk)
+ (emacsconf-stream-join-qa talk)
+ (shell-command "i3-msg 'layout splith'")))))))
(defun emacsconf-stream-update-talk-info-on-change (talk)
- "Update talk info."
+ "Update TALK info if the track's autopilot is set to 'todo."
(when (string= org-state "PLAYING")
- (save-window-excursion
- (emacsconf-stream-set-talk-info talk))))
+ (let* ((talk (emacsconf-resolve-talk talk))
+ (track (emacsconf-get-track (plist-get talk :track))))
+ (when (eq (plist-get track :autopilot) 'todo)
+ (save-window-excursion
+ (emacsconf-stream-set-talk-info talk))))))
(defun emacsconf-stream-track-ssh (track &rest commands)
"SSH to the account for TRACK and run COMMANDS.
@@ -207,49 +213,51 @@ especially when two things need to happen close together."
(emacsconf-stream-track-ssh talk "nohup" "intro" (plist-get talk :slug)))
(defun emacsconf-stream-play-talk-on-change (talk)
- "Play the talk."
+ "Play the talk if the track's autopilot is set to 'todo."
(interactive (list (emacsconf-complete-talk-info)))
(setq talk (emacsconf-resolve-talk talk))
- (when (or (not (boundp 'org-state)) (string= org-state "PLAYING"))
- (if (plist-get talk :stream-files)
- (progn
+ (let ((track (emacsconf-get-track (plist-get talk :track))))
+ (when (eq (plist-get track :autopilot) 'todo)
+ (when (or (not (boundp 'org-state)) (string= org-state "PLAYING"))
+ (if (plist-get talk :stream-files)
+ (progn
+ (emacsconf-stream-track-ssh
+ talk
+ "overlay"
+ (plist-get talk :slug))
+ (emacsconf-stream-track-ssh
+ talk
+ (append
+ (list
+ "nohup"
+ "mpv")
+ (split-string-and-unquote (plist-get talk :stream-files))
+ (list "&"))))
(emacsconf-stream-track-ssh
talk
- "overlay"
- (plist-get talk :slug))
- (emacsconf-stream-track-ssh
- talk
- (append
- (list
- "nohup"
- "mpv")
- (split-string-and-unquote (plist-get talk :stream-files))
- (list "&"))))
- (emacsconf-stream-track-ssh
- talk
- (cons
- "nohup"
- (cond
- ((and
- (plist-get talk :recorded-intro)
- (plist-get talk :video-file)) ;; recorded intro and recorded talk
- (message "should automatically play intro and recording")
- (list "play-with-intro" (plist-get talk :slug))) ;; todo deal with stream files
- ((and
- (plist-get talk :recorded-intro)
- (null (plist-get talk :video-file))) ;; recorded intro and live talk; play the intro and join BBB
- (message "should automatically play intro; join %s" (plist-get talk :bbb-backstage))
- (list "intro" (plist-get talk :slug)))
- ((and
- (null (plist-get talk :recorded-intro))
- (plist-get talk :video-file)) ;; live intro and recorded talk, show slide and use Mumble; manually play talk
- (message "should show intro slide; play %s afterwards" (plist-get talk :slug))
- (list "intro" (plist-get talk :slug)))
- ((and
- (null (plist-get talk :recorded-intro))
- (null (plist-get talk :video-file))) ;; live intro and live talk, join the BBB
- (message "join %s for live intro and talk" (plist-get talk :bbb-backstage))
- (list "bbb" (plist-get talk :slug)))))))))
+ (cons
+ "nohup"
+ (cond
+ ((and
+ (plist-get talk :recorded-intro)
+ (plist-get talk :video-file)) ;; recorded intro and recorded talk
+ (message "should automatically play intro and recording")
+ (list "play-with-intro" (plist-get talk :slug))) ;; todo deal with stream files
+ ((and
+ (plist-get talk :recorded-intro)
+ (null (plist-get talk :video-file))) ;; recorded intro and live talk; play the intro and join BBB
+ (message "should automatically play intro; join %s" (plist-get talk :bbb-backstage))
+ (list "intro" (plist-get talk :slug)))
+ ((and
+ (null (plist-get talk :recorded-intro))
+ (plist-get talk :video-file)) ;; live intro and recorded talk, show slide and use Mumble; manually play talk
+ (message "should show intro slide; play %s afterwards" (plist-get talk :slug))
+ (list "intro" (plist-get talk :slug)))
+ ((and
+ (null (plist-get talk :recorded-intro))
+ (null (plist-get talk :video-file))) ;; live intro and live talk, join the BBB
+ (message "join %s for live intro and talk" (plist-get talk :bbb-backstage))
+ (list "bbb" (plist-get talk :slug)))))))))))
(defun emacsconf-stream-get-filename (talk)
"Return the local filename for the video file for TALK.