import re
import requests
import hashlib
from fake_useragent import UserAgent
class Account:
@staticmethod
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:
@staticmethod
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()