#!/usr/bin/env python # -*- coding: utf-8 -*- """Tests the audacity pipe. Keep pipe_test.py short!! You can make more complicated longer tests to test other functionality or to generate screenshots etc in other scripts. Make sure Audacity is running first and that mod-script-pipe is enabled before running this script. Requires Python 2.7 or later. Python 3 is strongly recommended. """ import os import sys if sys.platform == 'win32': print("pipe-test.py, running on windows") TONAME = '\\\\.\\pipe\\ToSrvPipe' FROMNAME = '\\\\.\\pipe\\FromSrvPipe' EOL = '\r\n\0' else: print("pipe-test.py, running on linux or mac") TONAME = '/tmp/audacity_script_pipe.to.' + str(os.getuid()) FROMNAME = '/tmp/audacity_script_pipe.from.' + str(os.getuid()) EOL = '\n' print("Write to \"" + TONAME +"\"") if not os.path.exists(TONAME): print(" ..does not exist. Ensure Audacity is running with mod-script-pipe.") sys.exit() print("Read from \"" + FROMNAME +"\"") if not os.path.exists(FROMNAME): print(" ..does not exist. Ensure Audacity is running with mod-script-pipe.") sys.exit() print("-- Both pipes exist. Good.") TOFILE = open(TONAME, 'w') print("-- File to write to has been opened") FROMFILE = open(FROMNAME, 'rt') print("-- File to read from has now been opened too\r\n") def send_command(command): """Send a single command.""" print("Send: >>> \n"+command) TOFILE.write(command + EOL) TOFILE.flush() def get_response(): """Return the command response.""" result = '' line = '' while True: result += line line = FROMFILE.readline() if line == '\n' and len(result) > 0: break return result def do_command(command): """Send one command, and return the response.""" send_command(command) response = get_response() print("Rcvd: <<< \n" + response) return response def quick_test(): """Example list of commands.""" do_command('Help: Command=Help') do_command('Help: Command="GetInfo"') #do_command('SetPreference: Name=GUI/Theme Value=classic Reload=1') quick_test()