Merge branch 'master' of github.com:firestuff/slidetogether

This commit is contained in:
Ian Gulliver
2021-06-11 16:40:50 +00:00

View File

@@ -3,27 +3,25 @@
# 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 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:
print(f'invalid url: {sys.argv[1]}') print(f'invalid url: {args.url}')
room = qs['room'][0] room = qs['room'][0]
@@ -36,6 +34,25 @@ presentUrl = urllib.parse.urlunparse([
url.fragment, url.fragment,
]) ])
if args.keynote:
import subprocess
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 +66,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)