import os import json def handle_arguments(arguments, config, engine): for index, arg in enumerate(arguments[1:]): match arg: case '--wpm'|'-w': config['wpm'] = int(arguments[index+2]) case '--language'|'-l': config['language'] = arguments[index+2] case '--voice'|'-v': config['voice'] = arguments[index+2] case '--mode'|'-m': config['mode'] = arguments[index+2] case '--words'|'-o': config['words'] = int(arguments[index+2]) case '--time'|'-t': config['time'] = int(arguments[index+2]) case '--filename'|'-f': config['filename'] = arguments[index+2] case '--quote'|'-q': config['quoteid'] = int(arguments[index+2]) case '--list-languages'|'-i': languages = os.listdir('languages') for lang in languages: print(lang.replace('.json','')) exit() case '--list-quotes'|'-u': with open(f'quotes/{config['language']}.json') as file: quotes = json.load(file) for index,quote in enumerate(quotes): print(f'{index}: {quote['quote']} - {quote['author']}') exit() case '--list-voices'|'-c': voices = engine.getProperty('voices') for voice in voices: print(voice) exit() case '--help'|'h': print('''Command line options All these options overide configuration in config.json c,f,h,i,l,m,o,q,t,u,v,w --wpm, -w set the rate of dictation, defaults to 50, note: this is not exact as it measures the time between words in order to avoid a very short gap after a long word. --mode, -m Sets a mode, one of 'timed', 'words','quote' or 'file' followed by an optional modifier representing either the time (in seconds) or the number of words, or the quote ID, or the file name. --filename, -f Passes a filename as parameter for the file mode --words, -o Number of words for words mode --time, -t