diff options
-rw-r--r-- | emacsconf-pad.el | 69 | ||||
-rw-r--r-- | emacsconf-stream.el | 28 | ||||
-rw-r--r-- | emacsconf.el | 9 |
3 files changed, 69 insertions, 37 deletions
diff --git a/emacsconf-pad.el b/emacsconf-pad.el index f9cd655..b798b5e 100644 --- a/emacsconf-pad.el +++ b/emacsconf-pad.el @@ -360,7 +360,7 @@ ${next-talk-list} (concat " <p>Ctrl-5 is the shortcut for striking through on Etherpad.</p> -Don't use this for notes since it gets overwritten. +<p>Don't use this for notes since it gets overwritten.</p> <strong>Setup</strong> <ul> @@ -375,7 +375,7 @@ Don't use this for notes since it gets overwritten. <ul> <li>[? Can't connect to VNC]: ssh emacsconf-${track-id}@res.emacsconf.org -p ${ssh-port} /home/${conf-id}-${track-id}/bin/track-vnc</li> <li>[? Can't find OBS]: track-obs</li></ul></li> -<li>[ ] Start background music via SSH or VNC: <em>~/bin/start-background-music</em> +<li>[ ] Start background music via SSH or VNC: <em>music</em> <ul><li>[? No audio device]: <ul><li><em>pulseaudio -k; pulseaudio --start</em></li> <li>quit OBS</li> @@ -385,7 +385,7 @@ Don't use this for notes since it gets overwritten. <li>[ ] Check 480p by viewing it : <strong>mpv https://live0.emacsconf.org/emacsconf/${track-id}-480p.webm &</strong></li> <li>[ ] Confirm that the streaming user has connected to Mumble, is in the ${channel} channel, and can hear what we say on Mumble.</li> <li>[ ] Test with a sample video or Q&A session. You can run this command on your local system if you want to do things off-screen: <strong>ssh emacsconf-${track-id}@res.emacsconf.org -p 46668 \"~/bin/track-mpv meetups &\"</strong></li> -<li>[ ] ${stream}: Restart the background music via SSH or VNC: <em>~/bin/start-background-music</em> . The background music should automatically get killed when the talks start, but if it doesn't, you can stop it with: <em>screen -S background -X quit</em></li> +<li>[ ] ${stream}: Restart the background music via SSH or VNC: <em>music</em> . The background music should automatically get killed when the talks start, but if it doesn't, you can stop it with: <em>screen -S background -X quit</em></li> </ul></li> <li>[ ] ${coord}: ssh -t orga@live0.emacsconf.org 'screen -S restream-${track-id}-youtube /home/orga/restream-${track-id}-youtube.sh' and then confirm</li> <li>[ ] ${coord}: ssh -t orga@live0.emacsconf.org 'screen -S restream-${track-id}-toobnix /home/orga/restream-${track-id}-toobnix.sh' and then confirm</li> @@ -558,7 +558,7 @@ ${bbb-checklist}</li>") talk (mapcar (lambda (status) (list (intern (concat ":ssh-" (replace-regexp-in-string "_" "" (downcase status)))) - (format "<strong>ssh orga@res.emacsconf.org -p 46668 \"~/scripts/update-task-status.sh %s . %s\"</strong>" + (format "<strong>ssh orga@res.emacsconf.org -p 46668 \"talk %s %s\"</strong>" (plist-get talk :slug) status))) '("PLAYING" "OPEN_Q" "CLOSED_Q")))) @@ -566,9 +566,10 @@ ${bbb-checklist}</li>") (setq result (emacsconf-replace-plist-in-string modified-talk - (format "<li><strong>%s %s (Talk: %s, Q&A: %s) %s <a href=\"%s\">%s</a></strong><ul>%s</ul>\n</li>" + (format "<li><strong>%s %s (intro: %s, talk: %s, Q&A: %s) %s <a href=\"%s\">%s</a></strong><ul>%s</ul>\n</li>" (format-time-string "%H:%M" (plist-get talk :start-time) emacsconf-timezone) (plist-get talk :slug) + (if (plist-get talk :recorded-intro) "recorded" "live") (if (plist-get talk :video-file) "recorded" "live") (or (plist-get talk :q-and-a) "none") (plist-get talk :title) @@ -577,17 +578,40 @@ ${bbb-checklist}</li>") (concat (emacsconf-surround "<li><strong>" (plist-get talk :hyperlist-note) "</strong></li>" "") - (if (file-exists-p - (expand-file-name (concat (plist-get talk :slug) ".webm") (expand-file-name "intros" emacsconf-stream-asset-dir))) - "<li>This talk has a recorded intro that should automatically play when you mark the talk as playing. If it doesn't play, go to the ~/assets/intros directory and use track-mpv to play the video file. If that doesn't work, display the in-between slide: ${ssh-track} and run <em>firefox ~/assets/in-between/${slug}.png</em> . ${host} can join Mumble and say: <strong>${intro-note}</strong></li>" - "<li>[ ] ${stream}: Display the in-between slide: ${ssh-track} and run <em>firefox ~/assets/in-between/${slug}.png</em></li> -<li>[ ] ${host}: Connect to the ${mumble} channel in Mumble and introduce the talk: <strong>${intro-note}</strong></li> -") + (cond + ((and (plist-get talk :video-file) + (plist-get talk :recorded-intro)) + (concat + "<li>Recorded intro and recorded talk:<ul>" + "<li>[ ] ${stream}: Mark the talk as playing, which should play the intro and the talk: ${ssh-playing}<ul> + <li>(backup: <em>play ${slug}</em>; if that still doesn't work, <em>mpv ~/assets/intros/${slug}.webm</em> and the video in <em>~/stream</em>)</li></ul></li>" + "</ul></li>")) + ((and (plist-get talk :recorded-intro) + (null (plist-get talk :video-file))) ;; recorded intro, but live talk + (concat + "<li>Live intro and talk:<ul>" + "<li>[ ] ${stream}: Mark the talk as playing, which should play the intro: ${ssh-playing} (backup: mpv ~/assets/intros/${slug}.webm)<ul>" + "<li>[? intro still didn't play, switch to live intro]<ul><li>${stream}: join ${bbb-backstage}</li>" + "<li>[ ] ${host}: Join ${bbb-backstage} and introduce the talk: <strong>${intro-note}</strong>. Turn over to speaker.</li></ul></li></ul></li>" + "</ul></li>")) + ((and (null (plist-get talk :recorded-intro)) + (plist-get talk :video-file)) ;; live intro and recorded talk + (concat + "<li>Live intro and recorded talk:<ul>" + "<li>[ ] ${stream}: Mark the talk as playing, which should open the in-between slide: ${ssh-playing} (backup url: ${in-between})</li>" + "<li>[ ] ${host}: Join ${mumble} in Mumble and introduce the talk: <strong>${intro-note}</strong>.</li>" + "<li>[ ] ${stream}: Play the talk with <em>play ${slug}</em> (backup: use mpv to play the talk in the ~/stream directory)</li>" + "</ul></li>" + )) + ((and (null (plist-get talk :recorded-intro)) + (null (plist-get talk :video-file))) ;; live intro and talk + (concat + "<li>Live intro and talk:<ul>" + "<li>[ ] ${stream}: Mark the talk as playing: ${ssh-playing} (Backup URL to join in case it doesn't automatically join: ${bbb-backstage})</li>" + "<li>[ ] ${host}: Join ${bbb-backstage} and introduce the talk: <strong>${intro-note}</strong>.</li></ul></li>" + "<li>[ ] ${stream}: Adjust audio as needed.</li>")) + ) - (if (plist-get talk :video-file) - "<li>[ ] ${stream}: Mark the talk as playing: ${ssh-playing} and confirm that it plays. If it doesn't play, go to the ~/stream directory and use track-mpv to play the video file.</li> -<li>[ ] ${coord}: emacsconf-publish-update-talk ${slug} and then commit and push the wiki. Confirm that the video is visible" - "<li>[ ] ${stream}: <strong>LIVE talk:</strong> Mark the talk as playing: ${ssh-playing} and arrange windows (backup URL for BBB if it doesn't open: ${bbb-backstage}). Adjust audio as needed</li>") (pcase (or (plist-get talk :q-and-a) "") ((rx "live") (concat @@ -602,8 +626,9 @@ ${bbb-checklist}</li>") <li>[ ] ${stream}: Give the host the go-ahead via Mumble or #emacsconf-org</li> <li>[ ] ${host}: Start recording and read questions</li> <li>[ ] ${stream}: Adjust the audio levels as needed: ${ssh-audio}</li> -<li>[ ] ${host}: Decide when to open the Q&A and let ${coord} know privately</li> -<li>[ ] ${coord}: Mark the Q&A as open: ${ssh-openq} and double-check the redirect at ${bbb-redirect}. If the redirect doesn't work, ssh media \"cp ~/${year}/backstage/assets/redirects/open/bbb-${slug}.html ~/${year}/current/\" . Confirm the redirect and let ${host} know.</li> +<li>[ ] ${host}: Decide when to open the Q&A and let ${stream} know</li> +<li>[ ] ${stream}: Update the task status (no visible changes): ${ssh-openq}</li> +<li>[ ] ${stream}: Confirm BBB redirect at ${bbb-redirect} goes to BBB room, let host know</li> <li>[ ] ${host}: Announce that people can join using the URL on the talk page or ask questions on the pad or IRC channel</li> <li>${next-talk-in-5} [? Open Q&A is still going on and it's about five minutes before the next talk] <ul><li>[ ] ${host}: Let the speaker know about the time and that the Q&A can continue off-stream if people want to join</li></ul></li> @@ -611,7 +636,7 @@ ${bbb-checklist}</li>") <ul><li>[ ] ${host}: Announce that the Q&A will continue if people want to join the BBB room from the talk page, and the stream will now move to the next talk</li></ul></li> <li>[? Q&A is done early] <ul> - <li>[ ] ${stream}: Mark the talk as archived: ${ssh} \"~/current/scripts/update-task-status.sh ${slug} . TO_ARCHIVE\"</li> + <li>[ ] ${stream}: Mark the talk as archived: ${ssh} \"talk ${slug} TO_ARCHIVE\"</li> <li>${stream}: OR: <ul> <li>start emacs and use M-x emacsconf-stream-display-clock-and-countdown. time and message are optional</li> <li>display the in-between slide for the next talk</li></ul></li> @@ -619,17 +644,19 @@ ${bbb-checklist}</li>") ")) ((rx "irc") " -<li>[ ] ${stream}: Update the task status: ${ssh-closedq} # this should open the pad and IRC; arrange the windows +<li>[ ] ${stream}: Update the task status, which should open the pad and IRC; arrange windows: ${ssh-closedq} <ul><li>Backup link to pad: ${pad-url}</li> <li>Backup link to #${channel}: ${webchat-url}</li></ul></li> -<li>[ ] ${stream}: Update the task status: ${ssh-openq} # this should not make any visible changes, just update the task status</li> +<li>[ ] ${stream}: Update the task status (no visible changes): ${ssh-openq}</li> +<li>[ ] ${stream}: Confirm BBB redirect at ${bbb-redirect} goes to BBB room, let host know</li> <li>[ ] ${host}: Announce that people can ask questions in the ${channel} IRC channel.</li> ") ((rx "Mumble") " <li>[ ] ${stream}: Bring the speaker's Mumble login over to the ${channel} channel in Mumble. Confirm that Mumble is audible and adjust audio as needed: ssh emacsconf-${track-id}@res.emacsconf.org -p 46668 \"mum-vol 85%%\" (or mum-louder, mum-quieter)</li> <li>[ ] ${stream}: Mark the Q&A as closed: ${ssh-closedq} . This should display the QA slide (backup: ${ssh-track} and run <em>firefox ${qa-slide-url} &</em>)</li> -<li>[ ] ${stream}: Update the task status: ${ssh-openq} # this should not make any visible changes, just update the task status</li> +<li>[ ] ${stream}: Update the task status (no visible changes): ${ssh-openq}</li> +<li>[ ] ${stream}: Confirm BBB redirect at ${bbb-redirect} goes to BBB room, let host know</li> <li>[ ] ${host}: Announce that people can ask questions in the pad or on the ${channel} IRC channel.</li> ") ((rx "after") diff --git a/emacsconf-stream.el b/emacsconf-stream.el index 76c7809..078b673 100644 --- a/emacsconf-stream.el +++ b/emacsconf-stream.el @@ -180,20 +180,20 @@ while OTHER-FILENAME will be displayed at other times." (defun emacsconf-stream-play-intro-maybe (talk) (interactive (list (emacsconf-complete-talk-info))) - (when (file-exists-p - (expand-file-name (concat (plist-get talk :slug) ".webm") - (expand-file-name "intros" emacsconf-stream-asset-dir))) - (let ((info (tramp-dissect-file-name (emacsconf-stream-track-login talk)))) - (apply - #'call-process - (append - (list - "ssh" nil nil t - (concat (tramp-file-name-user info) - "@" (tramp-file-name-host info)) - "-p" (tramp-file-name-port info) - "nohup" "~/bin/track-mpv" (concat "~/assets/intros/" (plist-get talk :slug) ".webm")) - (list ">" "/dev/null" "2>&1" "&")))))) + (let ((info (tramp-dissect-file-name (emacsconf-stream-track-login talk)))) + (apply + #'call-process + (append + (list + "ssh" nil nil t + (concat (tramp-file-name-user info) + "@" (tramp-file-name-host info)) + "-p" (tramp-file-name-port info) + "nohup") + (if (plist-get talk :recorded-intro) + (list "~/bin/track-mpv" (concat "~/assets/intros/" (plist-get talk :slug) ".webm")) + (list "firefox" (concat "~/assets/in-between/" (plist-get talk :slug) ".png"))) + (list ">" "/dev/null" "2>&1" "&"))))) (defun emacsconf-stream-play-talk-on-change (talk) "Play the talk." diff --git a/emacsconf.el b/emacsconf.el index 25964e7..fe1d2ff 100644 --- a/emacsconf.el +++ b/emacsconf.el @@ -617,8 +617,8 @@ (when track (plist-put o :watch-url (concat emacsconf-base-url emacsconf-year "/watch/" (plist-get track :id))) (plist-put o :webchat-url (concat emacsconf-chat-base "?join=emacsconf," - (replace-regexp-in-string "#" "" - (plist-get track :channel))))) + (replace-regexp-in-string "#" "" + (plist-get track :channel))))) (plist-put o :channel (plist-get track :channel)) (plist-put o :bbb-backstage (concat emacsconf-media-base-url emacsconf-year "/backstage/current/room/" (plist-get o :slug))) (cond @@ -644,6 +644,11 @@ (t (plist-put o :qa-info "none") (plist-put o :qa-link "none"))) (plist-put o :pad-url (format "https://pad.emacsconf.org/%s-%s" emacsconf-year (plist-get o :slug))) + (plist-put o :recorded-intro + (let ((filename + (expand-file-name (concat (plist-get o :slug) ".webm") + (expand-file-name "intros" emacsconf-stream-asset-dir)))) + (and (file-exists-p filename) filename))) o)) (defun emacsconf-search-talk-info (search &optional info) |