bbbctl 0.2.0__tar.gz → 0.3.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {bbbctl-0.2.0/src/bbbctl.egg-info → bbbctl-0.3.1}/PKG-INFO +2 -2
- {bbbctl-0.2.0 → bbbctl-0.3.1}/setup.cfg +1 -1
- {bbbctl-0.2.0 → bbbctl-0.3.1/src/bbbctl.egg-info}/PKG-INFO +2 -2
- {bbbctl-0.2.0 → bbbctl-0.3.1}/src/bbbctl.py +36 -11
- {bbbctl-0.2.0 → bbbctl-0.3.1}/LICENSE +0 -0
- {bbbctl-0.2.0 → bbbctl-0.3.1}/README.md +0 -0
- {bbbctl-0.2.0 → bbbctl-0.3.1}/pyproject.toml +0 -0
- {bbbctl-0.2.0 → bbbctl-0.3.1}/src/bbbctl.egg-info/SOURCES.txt +0 -0
- {bbbctl-0.2.0 → bbbctl-0.3.1}/src/bbbctl.egg-info/dependency_links.txt +0 -0
- {bbbctl-0.2.0 → bbbctl-0.3.1}/src/bbbctl.egg-info/entry_points.txt +0 -0
- {bbbctl-0.2.0 → bbbctl-0.3.1}/src/bbbctl.egg-info/top_level.txt +0 -0
|
@@ -28,7 +28,7 @@ class BBBApiClient:
|
|
|
28
28
|
self.ssl = ssl_context or ssl.create_default_context()
|
|
29
29
|
|
|
30
30
|
def makeurl(self, command, **query):
|
|
31
|
-
query = urllib.parse.urlencode(query)
|
|
31
|
+
query = urllib.parse.urlencode({k:v for k,v in query.items() if v is not None})
|
|
32
32
|
checksum = hashlib.sha1(
|
|
33
33
|
(command + query + self.secret).encode("utf8")
|
|
34
34
|
).hexdigest()
|
|
@@ -70,6 +70,9 @@ class BBBApiClient:
|
|
|
70
70
|
def deleteRecordings(self, recordID):
|
|
71
71
|
return self.call("deleteRecordings", recordID=recordID)
|
|
72
72
|
|
|
73
|
+
def sendChatMessage(self, meetingID, message, userName=None):
|
|
74
|
+
return self.call("sendChatMessage", meetingID=meetingID, message=message, userName=userName)
|
|
75
|
+
|
|
73
76
|
|
|
74
77
|
def build_parser():
|
|
75
78
|
|
|
@@ -129,7 +132,7 @@ def build_parser():
|
|
|
129
132
|
|
|
130
133
|
cmd = meet_sub.add_parser("list", help="List meetings")
|
|
131
134
|
cmd.add_argument("--sort", help="Sort by a specific key")
|
|
132
|
-
cmd.add_argument("--no-user", action="store_true", help="Do not show
|
|
135
|
+
cmd.add_argument("--no-user", action="store_true", help="Do not show participants")
|
|
133
136
|
cmd.set_defaults(cmd=cmd_meet_list)
|
|
134
137
|
|
|
135
138
|
cmd = meet_sub.add_parser("info", help="Show meeting details")
|
|
@@ -139,10 +142,10 @@ def build_parser():
|
|
|
139
142
|
cmd = meet_sub.add_parser("create", help="Create meeting")
|
|
140
143
|
cmd.add_argument("id", help="Meeting ID")
|
|
141
144
|
cmd.add_argument("name", help="Meeting name")
|
|
142
|
-
cmd.add_argument("--record", help="Allow
|
|
145
|
+
cmd.add_argument("--record", help="Allow recording?", action="store_true")
|
|
143
146
|
cmd.add_argument(
|
|
144
147
|
"--mod",
|
|
145
|
-
help="Directly create and print a join link for this username. Can be repeated.",
|
|
148
|
+
help="Directly create and print a moderator join link for this username. Can be repeated.",
|
|
146
149
|
action="append",
|
|
147
150
|
)
|
|
148
151
|
cmd.set_defaults(cmd=cmd_meet_create)
|
|
@@ -164,8 +167,15 @@ def build_parser():
|
|
|
164
167
|
cmd.add_argument("id", help="Meeting ID")
|
|
165
168
|
cmd.set_defaults(cmd=cmd_meet_end)
|
|
166
169
|
|
|
170
|
+
cmd = meet_sub.add_parser("chat", help="Send a chat message into a running meeting (BBB 3.0)")
|
|
171
|
+
cmd.add_argument("id", help="Meeting ID. Can be 'BROADCAST' do broadcase a message to all running meetings")
|
|
172
|
+
cmd.add_argument("message", help="The message to send to chat")
|
|
173
|
+
cmd.add_argument("--name", help="The name that will be shown as the sender of the chat message", default="SYSTEM")
|
|
174
|
+
cmd.set_defaults(cmd=cmd_meet_chat)
|
|
175
|
+
|
|
167
176
|
cmd = meet_sub.add_parser("nuke", help="End ALL meeting")
|
|
168
|
-
cmd.add_argument("--doit", help="
|
|
177
|
+
cmd.add_argument("--doit", help="Disable dry-run mode and actually end meetings?", action="store_true")
|
|
178
|
+
cmd.add_argument("--ask", help="Ask for every meeting?", action="store_true")
|
|
169
179
|
cmd.set_defaults(cmd=cmd_meet_nuke)
|
|
170
180
|
|
|
171
181
|
return parser
|
|
@@ -374,7 +384,7 @@ def cmd_meet_create(api, args):
|
|
|
374
384
|
meetingID=args.id,
|
|
375
385
|
fullName=name,
|
|
376
386
|
createTime=created.find("createTime").text,
|
|
377
|
-
|
|
387
|
+
role="MODERATOR",
|
|
378
388
|
)
|
|
379
389
|
print(name + ":", link)
|
|
380
390
|
|
|
@@ -399,14 +409,19 @@ def cmd_meet_end(api, args):
|
|
|
399
409
|
api.end(meetingID=args.id, password=pwd)
|
|
400
410
|
|
|
401
411
|
|
|
412
|
+
def cmd_meet_chat(api, args):
|
|
413
|
+
if args.id == "BROADCAST":
|
|
414
|
+
meetings = [m.find("meetingID").text for m in api.getMeetings()]
|
|
415
|
+
else:
|
|
416
|
+
meetings = [args.id]
|
|
417
|
+
|
|
418
|
+
for meeting in meetings:
|
|
419
|
+
api.sendChatMessage(meeting, args.message, userName=args.name)
|
|
420
|
+
|
|
421
|
+
|
|
402
422
|
def cmd_meet_nuke(api, args):
|
|
403
423
|
meetings = list(api.getMeetings())
|
|
404
424
|
for meeting in meetings:
|
|
405
|
-
if args.doit:
|
|
406
|
-
api.end(
|
|
407
|
-
meetingID=meeting.find("meetingID").text,
|
|
408
|
-
password=meeting.find("moderatorPW").text,
|
|
409
|
-
)
|
|
410
425
|
print(
|
|
411
426
|
"{dryrun}id={id} user={users} name={name!r}".format(
|
|
412
427
|
dryrun="" if args.doit else "(dry run) ",
|
|
@@ -415,6 +430,16 @@ def cmd_meet_nuke(api, args):
|
|
|
415
430
|
name=meeting.find("meetingName").text,
|
|
416
431
|
)
|
|
417
432
|
)
|
|
433
|
+
if args.doit:
|
|
434
|
+
if args.ask:
|
|
435
|
+
answer = input("End this meeting? [Yna] ").strip().lower()
|
|
436
|
+
if answer == "a":
|
|
437
|
+
args.ask = False
|
|
438
|
+
elif answer in ("", "y"):
|
|
439
|
+
pass
|
|
440
|
+
else:
|
|
441
|
+
continue
|
|
442
|
+
api.end(meetingID=meeting.find("meetingID").text)
|
|
418
443
|
|
|
419
444
|
|
|
420
445
|
if __name__ == "__main__":
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|