Add --keynote which uses applescript to control keynote directly
This commit is contained in:
@@ -3,23 +3,23 @@
|
|||||||
# To install dependencies:
|
# To install dependencies:
|
||||||
# pip3 install requests sseclient-py pyautogui
|
# pip3 install requests sseclient-py pyautogui
|
||||||
|
|
||||||
|
import argparse
|
||||||
import json
|
import json
|
||||||
import pyautogui
|
|
||||||
import requests
|
import requests
|
||||||
import sseclient
|
import sseclient
|
||||||
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
import time
|
import time
|
||||||
import urllib
|
import urllib
|
||||||
|
|
||||||
ALLOWED_CONTROLS = {'left', 'right'}
|
ALLOWED_CONTROLS = {'left', 'right'}
|
||||||
|
|
||||||
if len(sys.argv) != 2:
|
parser = argparse.ArgumentParser(description='slidetogether.io presenter client')
|
||||||
print(f'usage: {sys.argv[0]} <url>')
|
parser.add_argument('url')
|
||||||
sys.exit(1)
|
parser.add_argument('--keynote', action='store_true')
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
pyautogui.FAILSAFE = False
|
url = urllib.parse.urlparse(args.url)
|
||||||
|
|
||||||
url = urllib.parse.urlparse(sys.argv[1])
|
|
||||||
qs = urllib.parse.parse_qs(url.query)
|
qs = urllib.parse.parse_qs(url.query)
|
||||||
|
|
||||||
if 'room' not in qs or len(qs['room']) != 1:
|
if 'room' not in qs or len(qs['room']) != 1:
|
||||||
@@ -36,6 +36,24 @@ presentUrl = urllib.parse.urlunparse([
|
|||||||
url.fragment,
|
url.fragment,
|
||||||
])
|
])
|
||||||
|
|
||||||
|
if args.keynote:
|
||||||
|
LOOKUP = {
|
||||||
|
'left': 'show previous',
|
||||||
|
'right': 'show next',
|
||||||
|
}
|
||||||
|
def send_key(key):
|
||||||
|
subprocess.run([
|
||||||
|
'osascript',
|
||||||
|
'-e', 'tell application "Keynote"',
|
||||||
|
'-e', LOOKUP[key],
|
||||||
|
'-e', 'end tell',
|
||||||
|
])
|
||||||
|
else:
|
||||||
|
import pyautogui
|
||||||
|
pyautogui.FAILSAFE = False
|
||||||
|
def send_key(key):
|
||||||
|
pyautogui.press(control)
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
try:
|
try:
|
||||||
response = requests.get(presentUrl, stream=True)
|
response = requests.get(presentUrl, stream=True)
|
||||||
@@ -49,7 +67,7 @@ while True:
|
|||||||
print(f'INVALID CONTROL: {control}')
|
print(f'INVALID CONTROL: {control}')
|
||||||
continue
|
continue
|
||||||
print(control)
|
print(control)
|
||||||
pyautogui.press(control)
|
send_key(control)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(e)
|
print(e)
|
||||||
time.sleep(2)
|
time.sleep(2)
|
||||||
|
|||||||
Reference in New Issue
Block a user