|
import sys |
|
import json |
|
import datetime |
|
import urllib.parse |
|
|
|
from curl_cffi import requests |
|
|
|
config = json.loads(sys.argv[1]) |
|
prompt = config['messages'][-1]['content'] |
|
|
|
skill = 'expert' if config['model'] == 'gpt-4' else 'intermediate' |
|
|
|
json_data = json.dumps({ |
|
'question': prompt, |
|
'options': { |
|
'skill': skill, |
|
'date': datetime.datetime.now().strftime('%d/%m/%Y'), |
|
'language': 'en', |
|
'detailed': True, |
|
'creative': True, |
|
'customLinks': []}}, separators=(',', ':')) |
|
|
|
headers = { |
|
'Content-Type': 'application/json', |
|
'Pragma': 'no-cache', |
|
'Accept': '*/*', |
|
'Sec-Fetch-Site': 'same-origin', |
|
'Accept-Language': 'en-GB,en;q=0.9', |
|
'Cache-Control': 'no-cache', |
|
'Sec-Fetch-Mode': 'cors', |
|
'Content-Length': str(len(json_data)), |
|
'Origin': 'https://www.phind.com', |
|
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.4 Safari/605.1.15', |
|
'Referer': f'https://www.phind.com/search?q={urllib.parse.quote(prompt)}&source=searchbox', |
|
'Connection': 'keep-alive', |
|
'Host': 'www.phind.com', |
|
'Sec-Fetch-Dest': 'empty' |
|
} |
|
|
|
|
|
def output(chunk): |
|
try: |
|
if b'PHIND_METADATA' in chunk: |
|
return |
|
|
|
if chunk == b'data: \r\ndata: \r\ndata: \r\n\r\n': |
|
chunk = b'data: \n\r\n\r\n' |
|
|
|
chunk = chunk.decode() |
|
|
|
chunk = chunk.replace('data: \r\n\r\ndata: ', 'data: \n') |
|
chunk = chunk.replace('\r\ndata: \r\ndata: \r\n\r\n', '\n\r\n\r\n') |
|
chunk = chunk.replace('data: ', '').replace('\r\n\r\n', '') |
|
|
|
print(chunk, flush=True, end = '') |
|
|
|
except json.decoder.JSONDecodeError: |
|
pass |
|
|
|
while True: |
|
try: |
|
response = requests.post('https://www.phind.com/api/infer/answer', |
|
headers=headers, data=json_data, content_callback=output, timeout=999999, impersonate='safari15_5') |
|
|
|
exit(0) |
|
|
|
except Exception as e: |
|
print('an error occured, retrying... |', e, flush=True) |
|
continue |