Spaces:
Running
Running
import re | |
import requests | |
import hashlib | |
from fake_useragent import UserAgent | |
class Account: | |
def create(): | |
r=requests.get("https://italygpt.it/",headers=Account._header) | |
f=r.text | |
tid=re.search('<input type=\"hidden\" name=\"next_id\" id=\"next_id\" value=\"(\w+)\">',f).group(1) | |
if len(tid)==0: | |
raise RuntimeError("NetWorkError:failed to get id.") | |
else: | |
Account._tid=tid | |
Account._raw="[]" | |
return Account | |
def next(next_id:str)->str: | |
Account._tid=next_id | |
return Account._tid | |
def get()->str: | |
return Account._tid | |
_header={ | |
"Host": "italygpt.it", | |
"Referer":"https://italygpt.it/", | |
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36",#UserAgent().random, | |
"Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8", | |
"Accept-Language":"zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2", | |
"Upgrade-Insecure-Requests":"1", | |
"Sec-Fetch-Dest":"document", | |
"Sec-Fetch-Mode":"navigate", | |
"Sec-Fetch-Site":"none", | |
"Sec-Fetch-User":"?1", | |
"Connection":"keep-alive", | |
"Alt-Used":"italygpt.it", | |
"Pragma":"no-cache", | |
"Cache-Control":"no-cache", | |
"TE": "trailers" | |
} | |
def settraw(raws:str): | |
Account._raw=raws | |
return Account._raw | |
def gettraw(): | |
return Account._raw | |
class Completion: | |
def create( | |
account_data, | |
prompt: str, | |
message=False | |
): | |
param={ | |
"prompt":prompt.replace(" ","+"), | |
"creative":"off", | |
"internet":"false", | |
"detailed":"off", | |
"current_id":"0", | |
"code":"", | |
"gpt4":"false", | |
"raw_messages":account_data.gettraw(), | |
"hash":hashlib.sha256(account_data.get().encode()).hexdigest() | |
} | |
if(message): | |
param["raw_messages"]=str(message) | |
r = requests.get("https://italygpt.it/question",headers=account_data._header,params=param,stream=True) | |
account_data.next(r.headers["Next_id"]) | |
account_data.settraw(r.headers["Raw_messages"]) | |
for chunk in r.iter_content(chunk_size=None): | |
r.raise_for_status() | |
yield chunk.decode() |