-
Notifications
You must be signed in to change notification settings - Fork 4
/
getZoomStatus.py
130 lines (98 loc) · 3.92 KB
/
getZoomStatus.py
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
127
128
129
130
import os
import sys
import time
import json
import time
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) # not required after 'pip install uiautomation'
import uiautomation as automation
def DetectZoomMeeting():
if debug:
global start
start = time.time()
zoomMeetingInProgress = False
def GetFirstChild(control):
return control.GetFirstChildControl()
def GetNextSibling(control):
return control.GetNextSiblingControl()
desktop = automation.GetRootControl()
#window = automation.WindowControl(searchDepth=1, ClassName='ZPContentViewWndClass')
#toolsMenu = window.WindowControl(searchDepth=3, ClassName='ZPControlPanelClass')
#start = time.time()
for control, depth in automation.WalkTree(desktop, getFirstChild=GetFirstChild, getNextSibling=GetNextSibling, includeTop=False, maxDepth=2):
if debugWalkTree:
print(str(depth) + ' ' * depth * 4 + str(control))
if str(control).find("ZPContentViewWndClass") > 0 :
zoomMeetingInProgress = True
return zoomMeetingInProgress
def GetZoomStatus():
statusMute = "unknown"
statusVideo = "unknown"
statusShare = "unknown"
statusRecord= "unknown"
def GetFirstChild(control):
return control.GetFirstChildControl()
def GetNextSibling(control):
return control.GetNextSiblingControl()
desktop = automation.GetRootControl()
window = automation.WindowControl(searchDepth=1, ClassName='ZPContentViewWndClass')
toolsMenu = window.WindowControl(searchDepth=3, ClassName='ZPControlPanelClass')
if debug:
print ("desktop="+str(desktop))
print ("window="+str(window))
print ("toolsMenu="+str(toolsMenu))
for control, depth in automation.WalkTree(toolsMenu, getFirstChild=GetFirstChild, getNextSibling=GetNextSibling, includeTop=False, maxDepth=2):
if debugWalkTree:
print(str(depth) + ' ' * depth * 4 + str(control))
if str(control).find("currently muted") > 0 :
statusMute = "muted"
elif str(control).find("currently unmuted") > 0 :
statusMute = "unmuted"
elif str(control).find("start my video") > 0 :
statusVideo = "stopped"
elif str(control).find("stop my video") > 0 :
statusVideo = "started"
elif str(control).find("Share Screen") > 0 :
statusShare = "stopped"
elif str(control).find("Pause Share") > 0 :
statusShare = "started"
elif str(control).find("Resume Share") > 0 :
statusShare = "paused"
# The maxDepth needs to be increased if you want to add recording status. However, it doubles the processing time.
# elif str(control).find("Name: Record") > 0 :
# statusRecord = "stopped"
# elif str(control).find("Pause/Stop Recording") > 0 :
# statusRecord = "started"
# elif str(control).find("Resume Share") > 0 :
# statusRecord = "paused"
if debug:
stop = time.time()
print("Elapsed Time:",stop-start)
statusZoom = "open"
statusJSON = {
"statusZoom":statusZoom,
"statusMute":statusMute,
"statusVideo":statusVideo,
"statusShare":statusShare
}
y = json.dumps(statusJSON)
print (y)
def main():
global debug
debug = False
global debugWalkTree
debugWalkTree = False
if DetectZoomMeeting() == True:
#Zoom Meeting in Progress
GetZoomStatus()
else:
#No Zoom Meeting Detected
statusJSON = {
"statusZoom":"closed",
"statusMute":"muted",
"statusVideo":"stopped",
"statusShare":"stopped"
}
y = json.dumps(statusJSON)
print (y)
if __name__ == '__main__':
main()