import asyncio import json import subprocess async def tor_extract(params: dict, url: str, **kwargs): print(f'tor extracting {url}') p = subprocess.Popen( ['torify', 'python', '-m', 'v6d3music.run-extract'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, text=True ) p.stdin.write(f'{json.dumps(params)}\n') p.stdin.write(f'{json.dumps(url)}\n') p.stdin.write(f'{json.dumps(kwargs)}\n') p.stdin.flush() p.stdin.close() code = await asyncio.get_running_loop().run_in_executor(None, p.wait) if code: raise RuntimeError(code) return json.loads(p.stdout.read())