blob: 4643dc1eb351551ca35c69e45f2aff1106447820 (
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
;;;###autoload
(defun emacsconf-bbb-status (talk)
(let ((states
'((open . "OPEN_Q UNSTREAMED_Q")
(before . "TODO TO_REVIEW TO_ACCEPT WAITING_FOR_PREREC TO_PROCESS PROCESSING TO_AUTOCAP TO_ASSIGN TO_CAPTION TO_CHECK TO_STREAM PLAYING CLOSED_Q")
(after . "TO_ARCHIVE TO_EXTRACT TO_REVIEW_QA TO_INDEX_QA TO_CAPTION_QA TO_FOLLOW_UP DONE")
(cancelled . "CANCELLED"))))
(if (string-match "live" (or (plist-get talk :q-and-a) ""))
(or (car (seq-find (lambda (state)
(member (plist-get talk :status) (split-string (cdr state))))
states))
(throw 'error "Unknown talk BBB state"))
'irc)))
(defvar emacsconf-bbb-base-url "https://bbb.emacsverse.org/" "Include trailing slash.")
(defun emacsconf-bbb-room-title-list (&optional info)
(delq nil
(mapcar
(lambda (o)
(when (car o)
(concat "ec" (substring emacsconf-year 2)
"-" (plist-get (emacsconf-get-shift (plist-get (cadr o) :start-time)) :id)
"-" (plist-get (emacsconf-get-track (plist-get (cadr o) :track)) :id)
" " (car o)
" ("
(mapconcat (lambda (talk) (plist-get talk :slug)) (cdr o) ", ")
")")))
(seq-group-by (lambda (o) (plist-get o :speakers))
(or info (emacsconf-active-talks (emacsconf-filter-talks (emacsconf-get-talk-info))))))))
(defun emacsconf-bbb-create-rooms ()
"Copy the commands needed to create the rooms.
docker exec -it greenlight-v3 /bin/bash -c \"bundle exec rails console\"
user_id = User.find_by_email(\"emacsconf@sachachua.com\").id"
(interactive)
(kill-new
(mapconcat (lambda (group)
(format
"Room.create(user_id: user_id, name: \"%s - %s\")\n"
(plist-get (cadr group) :speakers)
(string-join (mapcar (lambda (talk) (plist-get talk :slug))
(cdr group))
", ")))
(emacsconf-mail-groups (emacsconf-active-talks (emacsconf-get-talk-info)))
""))
(message "Copied. Run it inside the greenlight-v3 rails console."))
(defun emacsconf-bbb-load-rooms (string)
"Split STRING and load them as ROOM properties.
STRING should be a list of rooms, one room per line, like this:
friendly-id speaker - slugs
friendly-id speaker - slugs
Print out room IDs with:
Room.all.each { |x| puts x.friendly_id + " " + x.name }; nil
"
(interactive "MInput: ")
(let ((rooms
(mapcar (lambda (row) (when (string-match "^\\(.+?\\) \\(.+\\)" row)
(list (match-string 1 row) (match-string 2 row))))
(split-string string "\n"))))
(mapc (lambda (talk)
(emacsconf-go-to-talk talk)
(when (plist-get talk :speakers)
(org-entry-put
(point)
"ROOM"
(concat
emacsconf-bbb-base-url
"rooms/"
(car
(seq-find
(lambda (o)
(string-match
(concat
"^"
(regexp-quote
(plist-get talk :speakers))
" - ")
(cadr o)))
rooms))
"/join"))))
(emacsconf-active-talks (emacsconf-get-talk-info)))))
(defun emacsconf-bbb-spookfox-set-moderator-codes ()
(interactive)
(dolist (talk (seq-filter (lambda (o)
(and (plist-get o :bbb-room)
(not (plist-get o :bbb-mod-code))))
(emacsconf-publish-prepare-for-display (emacsconf-get-talk-info))))
(spookfox-js-injection-eval-in-active-tab
(format "window.location.href = \"%s\""
(replace-regexp-in-string "/join" "" (plist-get talk :bbb-room)))
t)
(sleep-for 3)
(spookfox-js-injection-eval-in-active-tab
"document.querySelector('button[data-rr-ui-event-key=\"settings\"]').click()" t)
(spookfox-js-injection-eval-in-active-tab
"document.querySelector('input#glAnyoneCanStart').checked = true")
(spookfox-js-injection-eval-in-active-tab
"document.querySelector('input#muteOnStart').checked = true")
(spookfox-js-injection-eval-in-active-tab
"document.querySelectorAll('.border-end button')[2].click()" t)
(let ((code (spookfox-js-injection-eval-in-active-tab
"document.querySelector('.access-code-input input').value" t)))
(message "Setting %s to %s" (plist-get talk :slug) code)
(emacsconf-set-property-from-slug
talk "BBB_MOD_CODE"
code)
(sit-for 2))))
(defun emacsconf-bbb-spookfox-confirm-settings ()
(interactive)
(dolist (talk (seq-filter (lambda (o)
(plist-get o :bbb-room))
(emacsconf-publish-prepare-for-display (emacsconf-get-talk-info))))
(spookfox-js-injection-eval-in-active-tab
(format "window.location.href = \"%s\""
(replace-regexp-in-string "/join" "" (plist-get talk :bbb-room)))
t)
(sleep-for 3)
(spookfox-js-injection-eval-in-active-tab
"document.querySelector('button[data-rr-ui-event-key=\"settings\"]').click()" t)
(sleep-for 3)))
|