From 3d0f2b0a90e0a860ed42d4f913b31cdc0e760771 Mon Sep 17 00:00:00 2001 From: Alex Orid Date: Tue, 4 May 2021 17:34:15 -0400 Subject: [PATCH] Working Version --- obsWebSocket.py | 20 +++++++++----------- standalone_obsWebSocket.py | 35 +++++++++++++++++++++++------------ 2 files changed, 32 insertions(+), 23 deletions(-) diff --git a/obsWebSocket.py b/obsWebSocket.py index ad4a28d..44e1e01 100644 --- a/obsWebSocket.py +++ b/obsWebSocket.py @@ -11,24 +11,22 @@ async def default_request(): result = await ws.call('GetVersion') # We get the current OBS version. More request data is not required print(result) # Print the raw json output of the GetVersion request await asyncio.sleep(1) - print("\n\n") requests = result['available-requests'].split(',') - for r in requests: - print(r) - print("\n\n") + #data = {'source':'test_source', 'volume':0.5} #result = await ws.call('SetVolume', data) # Make a request with the given data #print(result) await ws.disconnect() # Clean things up by disconnecting. Only really required in a few specific situations, but good practice if you are done making requests or listening to events. + return requests async def make_custom_request(request, data=None): await ws.connect() # Make the connection to OBS-Websocket - result = await ws.call(request) # We get the current OBS version. More request data is not required - print(result) # Print the raw json output of the GetVersion request + #result = await ws.call(request) # We get the current OBS version. More request data is not required + #print(result) # Print the raw json output of the GetVersion request await asyncio.sleep(1) if not data==None: - data = {'source':'test_source', 'volume':0.5} - result = await ws.call('SetVolume', data) # Make a request with the given data + #data = {'source':'tinycam', 'volume':0.5} + result = await ws.call(request, data=data) # Make a request with the given data print(result) await ws.disconnect() # Clean things up by disconnecting. Only really required in a few specific situations, but good practice if you are done making requests or listening to events. @@ -44,10 +42,10 @@ async def on_switchscenes(data): def getRequests(): - loop.run_until_complete(default_request()) + return loop.run_until_complete(default_request()) -def makeRequest(request): - loop.run_until_complete(make_custom_request(request)) +def makeRequest(request, data): + loop.run_until_complete(make_custom_request(request, data)) diff --git a/standalone_obsWebSocket.py b/standalone_obsWebSocket.py index 54822ad..21d40fd 100644 --- a/standalone_obsWebSocket.py +++ b/standalone_obsWebSocket.py @@ -16,19 +16,30 @@ api.config["DEBUG"] = False possibleRequests = [] def init(): - #possibleRequests = obsWebSocket.getRequests() - #obsWebSocket.makeRequest("ToggleStudioMode") - obsWebSocket.listenForData() + possibleRequests = obsWebSocket.getRequests() + for r in possibleRequests: + print("requestname: "+r) + #obsWebSocket.makeRequest("ToggleStudioMode", {'source':'tinycam', 'render':'True'}) + obsWebSocket.makeRequest("SetSourceRender", data={'source':"tinycam", 'render': False, 'scene-name':"Cam feed (main) INFOBOX"}) + obsWebSocket.makeRequest("SetSourceRender", data={'source':"tinycam", 'render': True, 'scene-name':"Cam feed (main) INFOBOX"}) -@api.route('/api/v1/obs/websocket/getRequests', methods=['GET']) -def getRequests(): - if 'name' in request.args: - pass - #if is_command(request.args['name']): - # return flask.make_response('', 200) - #else: - # return flask.make_response('', 404) + #obsWebSocket.listenForData() + +def do_request(requestName, data): + if requestName in possibleRequests: + obsWebSocket.makeRequest(requestName, data) + +@api.route('/api/v1/obs/websocket/makeRequest', methods=['GET']) +def makeRequest(): + if 'request_name' not in request.args: + return flask.make_response('{\"text\":"Argument \'request_name\' not in request"}', 400) + if 'request_data' not in request.args: + data = None + else: + data = request.args['request_data'] + #possibleRequests = obsWebSocket.getRequests() + do_request(request.args['request_name'], data) if __name__ == "__main__": init() - api.run(host='0.0.0.0', port=6009) \ No newline at end of file + #api.run(host='0.0.0.0', port=6009) \ No newline at end of file