mirror of
https://github.com/magnus919/agent-skills.git
synced 2026-09-19 15:36:29 +03:00
38 lines
1.8 KiB
Python
Executable File
38 lines
1.8 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
"""Small JSON CLI for the FlareSolverr v1 API."""
|
|
import argparse, json, os, sys, urllib.request
|
|
|
|
def call(server, payload, timeout):
|
|
req=urllib.request.Request(server.rstrip('/') + '/v1', data=json.dumps(payload).encode(), headers={'Content-Type':'application/json'})
|
|
try:
|
|
with urllib.request.urlopen(req, timeout=timeout) as response:
|
|
return json.load(response)
|
|
except Exception as exc:
|
|
print(json.dumps({'error': type(exc).__name__, 'message': str(exc)}), file=sys.stderr)
|
|
return 1
|
|
|
|
def main():
|
|
p=argparse.ArgumentParser(description='FlareSolverr JSON CLI')
|
|
p.add_argument('--server', default=os.getenv('FLARESOLVERR_SERVER','http://localhost:8191'))
|
|
p.add_argument('--timeout', type=float, default=60)
|
|
s=p.add_subparsers(dest='command', required=True)
|
|
s.add_parser('health')
|
|
for method in ('get','post'):
|
|
x=s.add_parser(method); x.add_argument('url'); x.add_argument('--session'); x.add_argument('--data', default='')
|
|
x=s.add_parser('session'); x.add_argument('action', choices=('create','list','destroy')); x.add_argument('session_id', nargs='?')
|
|
a=p.parse_args()
|
|
if a.command=='health': payload={'cmd':'sessions.list'}
|
|
elif a.command=='session':
|
|
payload={'cmd': 'sessions.' + a.action}
|
|
if a.action=='destroy': payload['session']='' if a.session_id is None else a.session_id
|
|
else:
|
|
payload={'cmd':'request.'+a.command, 'url':a.url, 'maxTimeout':int(a.timeout*1000)}
|
|
if a.session: payload['session']=a.session
|
|
if a.command=='post' and a.data: payload['postData']=a.data
|
|
result=call(a.server, payload, a.timeout)
|
|
if result==1: return 1
|
|
print(json.dumps(result, sort_keys=True))
|
|
return 0
|
|
|
|
if __name__=='__main__': raise SystemExit(main())
|