summaryrefslogtreecommitdiffstats
path: root/gpt4free/italygpt2/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'gpt4free/italygpt2/__init__.py')
-rw-r--r--gpt4free/italygpt2/__init__.py70
1 files changed, 70 insertions, 0 deletions
diff --git a/gpt4free/italygpt2/__init__.py b/gpt4free/italygpt2/__init__.py
new file mode 100644
index 00000000..1eb191c0
--- /dev/null
+++ b/gpt4free/italygpt2/__init__.py
@@ -0,0 +1,70 @@
+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() \ No newline at end of file