Add --keynote which uses applescript to control keynote directly

This commit is contained in:
Ian Gulliver
2021-06-03 09:58:41 -07:00
parent 55b2412a8a
commit 1f4f868e03

View File

@@ -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)