mirror of
https://github.com/xtekky/gpt4free.git
synced 2024-12-25 12:16:17 +03:00
Add exec_js helper def
This commit is contained in:
parent
65b5227500
commit
dfefd22aa1
@ -145,11 +145,6 @@ class OpenaiChat(AsyncGeneratorProvider):
|
||||
return f"g4f.provider.{cls.__name__} supports: ({param})"
|
||||
|
||||
async def get_arkose_token(proxy: str = None) -> str:
|
||||
node = shutil.which("node")
|
||||
if not node:
|
||||
if debug.logging:
|
||||
print('OpenaiChat: "node" not found')
|
||||
return
|
||||
dir = os.path.dirname(os.path.dirname(__file__))
|
||||
include = f'{dir}/npm/node_modules/funcaptcha'
|
||||
config = {
|
||||
@ -175,23 +170,32 @@ fun.getToken(config).then(token => {
|
||||
tmp.write(source.encode())
|
||||
tmp.close()
|
||||
try:
|
||||
if sys.platform == 'win32':
|
||||
p = subprocess.Popen(
|
||||
[node, tmp.name],
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE
|
||||
)
|
||||
if p.returncode == 0:
|
||||
return p.stdout.read().decode()
|
||||
raise RuntimeError(f"Exec Error: {p.stderr.read().decode()}")
|
||||
p = await asyncio.create_subprocess_exec(
|
||||
node, tmp.name,
|
||||
stderr=asyncio.subprocess.PIPE,
|
||||
stdout=asyncio.subprocess.PIPE
|
||||
return await exec_js(tmp.name)
|
||||
finally:
|
||||
os.unlink(tmp.name)
|
||||
|
||||
async def exec_js(file: str) -> str:
|
||||
node = shutil.which("node")
|
||||
if not node:
|
||||
if debug.logging:
|
||||
print('OpenaiChat: "node" not found')
|
||||
return
|
||||
if sys.platform == 'win32':
|
||||
p = subprocess.Popen(
|
||||
[node, file],
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE
|
||||
)
|
||||
stdout, stderr = await p.communicate()
|
||||
stdout, stderr = p.communicate()
|
||||
if p.returncode == 0:
|
||||
return stdout.decode()
|
||||
raise RuntimeError(f"Exec Error: {stderr.decode()}")
|
||||
finally:
|
||||
os.unlink(tmp.name)
|
||||
p = await asyncio.create_subprocess_exec(
|
||||
node, file,
|
||||
stderr=asyncio.subprocess.PIPE,
|
||||
stdout=asyncio.subprocess.PIPE
|
||||
)
|
||||
stdout, stderr = await p.communicate()
|
||||
if p.returncode == 0:
|
||||
return stdout.decode()
|
||||
raise RuntimeError(f"Exec Error: {stderr.decode()}")
|
Loading…
Reference in New Issue
Block a user