Dmitry Afanasyev a95403f594
Feat/fix start (#1)
format code
2023-09-16 20:09:40 +03:00

82 lines
2.1 KiB
Python

import datetime
import json
import sys
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