Merge pull request #345 from sudouser777/feature/delete_poe_account
Feature/delete poe account
This commit is contained in:
commit
9c0b440b6c
14 changed files with 75 additions and 51 deletions
|
@ -4,8 +4,8 @@ from gpt4free import cocalc
|
||||||
from gpt4free import forefront
|
from gpt4free import forefront
|
||||||
from gpt4free import quora
|
from gpt4free import quora
|
||||||
from gpt4free import theb
|
from gpt4free import theb
|
||||||
from gpt4free import you
|
|
||||||
from gpt4free import usesless
|
from gpt4free import usesless
|
||||||
|
from gpt4free import you
|
||||||
|
|
||||||
|
|
||||||
class Provider(Enum):
|
class Provider(Enum):
|
||||||
|
@ -24,7 +24,6 @@ class Completion:
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def create(provider: Provider, prompt: str, **kwargs) -> str:
|
def create(provider: Provider, prompt: str, **kwargs) -> str:
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Invokes the given provider with given prompt and addition arguments and returns the string response
|
Invokes the given provider with given prompt and addition arguments and returns the string response
|
||||||
|
|
||||||
|
@ -47,10 +46,10 @@ class Completion:
|
||||||
return Completion.__useless_service(prompt, **kwargs)
|
return Completion.__useless_service(prompt, **kwargs)
|
||||||
else:
|
else:
|
||||||
raise Exception('Provider not exist, Please try again')
|
raise Exception('Provider not exist, Please try again')
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def __useless_service(prompt: str, **kwargs) -> str:
|
def __useless_service(prompt: str, **kwargs) -> str:
|
||||||
return usesless.Completion.create(prompt = prompt, **kwargs)
|
return usesless.Completion.create(prompt=prompt, **kwargs)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def __you_service(prompt: str, **kwargs) -> str:
|
def __you_service(prompt: str, **kwargs) -> str:
|
||||||
|
|
|
@ -5,8 +5,8 @@ from typing import Generator, Optional
|
||||||
from uuid import uuid4
|
from uuid import uuid4
|
||||||
|
|
||||||
from fake_useragent import UserAgent
|
from fake_useragent import UserAgent
|
||||||
from requests import post
|
|
||||||
from pymailtm import MailTm, Message
|
from pymailtm import MailTm, Message
|
||||||
|
from requests import post
|
||||||
from tls_client import Session
|
from tls_client import Session
|
||||||
|
|
||||||
from .typing import ForeFrontResponse
|
from .typing import ForeFrontResponse
|
||||||
|
@ -43,10 +43,7 @@ class Account:
|
||||||
|
|
||||||
response = client.post(
|
response = client.post(
|
||||||
f'https://clerk.forefront.ai/v1/client/sign_ups/{trace_token}/prepare_verification?_clerk_js_version=4.38.4',
|
f'https://clerk.forefront.ai/v1/client/sign_ups/{trace_token}/prepare_verification?_clerk_js_version=4.38.4',
|
||||||
data={
|
data={'strategy': 'email_link', 'redirect_url': 'https://accounts.forefront.ai/sign-up/verify'},
|
||||||
'strategy': 'email_link',
|
|
||||||
'redirect_url': 'https://accounts.forefront.ai/sign-up/verify'
|
|
||||||
},
|
|
||||||
)
|
)
|
||||||
|
|
||||||
if logging:
|
if logging:
|
||||||
|
@ -93,14 +90,14 @@ class StreamingCompletion:
|
||||||
action_type='new',
|
action_type='new',
|
||||||
default_persona='607e41fe-95be-497e-8e97-010a59b2e2c0', # default
|
default_persona='607e41fe-95be-497e-8e97-010a59b2e2c0', # default
|
||||||
model='gpt-4',
|
model='gpt-4',
|
||||||
proxy=None
|
proxy=None,
|
||||||
) -> Generator[ForeFrontResponse, None, None]:
|
) -> Generator[ForeFrontResponse, None, None]:
|
||||||
if not token:
|
if not token:
|
||||||
raise Exception('Token is required!')
|
raise Exception('Token is required!')
|
||||||
if not chat_id:
|
if not chat_id:
|
||||||
chat_id = str(uuid4())
|
chat_id = str(uuid4())
|
||||||
|
|
||||||
proxies = { 'http': 'http://' + proxy, 'https': 'http://' + proxy } if proxy else None
|
proxies = {'http': 'http://' + proxy, 'https': 'http://' + proxy} if proxy else None
|
||||||
|
|
||||||
headers = {
|
headers = {
|
||||||
'authority': 'chat-server.tenant-forefront-default.knative.chi.coreweave.com',
|
'authority': 'chat-server.tenant-forefront-default.knative.chi.coreweave.com',
|
||||||
|
@ -168,7 +165,7 @@ class Completion:
|
||||||
action_type='new',
|
action_type='new',
|
||||||
default_persona='607e41fe-95be-497e-8e97-010a59b2e2c0', # default
|
default_persona='607e41fe-95be-497e-8e97-010a59b2e2c0', # default
|
||||||
model='gpt-4',
|
model='gpt-4',
|
||||||
proxy=None
|
proxy=None,
|
||||||
) -> ForeFrontResponse:
|
) -> ForeFrontResponse:
|
||||||
text = ''
|
text = ''
|
||||||
final_response = None
|
final_response = None
|
||||||
|
@ -179,7 +176,7 @@ class Completion:
|
||||||
action_type=action_type,
|
action_type=action_type,
|
||||||
default_persona=default_persona,
|
default_persona=default_persona,
|
||||||
model=model,
|
model=model,
|
||||||
proxy=proxy
|
proxy=proxy,
|
||||||
):
|
):
|
||||||
if response:
|
if response:
|
||||||
final_response = response
|
final_response = response
|
||||||
|
@ -191,4 +188,3 @@ class Completion:
|
||||||
raise Exception('Unable to get the response, Please try again')
|
raise Exception('Unable to get the response, Please try again')
|
||||||
|
|
||||||
return final_response
|
return final_response
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
from typing import Any, List
|
from typing import Any, List
|
||||||
|
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
|
|
||||||
|
|
||||||
|
@ -22,4 +23,4 @@ class ForeFrontResponse(BaseModel):
|
||||||
model: str
|
model: str
|
||||||
choices: List[Choice]
|
choices: List[Choice]
|
||||||
usage: Usage
|
usage: Usage
|
||||||
text: str
|
text: str
|
||||||
|
|
|
@ -65,4 +65,13 @@ poe.chat('who won the football world cup most?')
|
||||||
# new bot creation
|
# new bot creation
|
||||||
poe.create_bot('new_bot_name', prompt='You are new test bot', base_model='gpt-3.5-turbo')
|
poe.create_bot('new_bot_name', prompt='You are new test bot', base_model='gpt-3.5-turbo')
|
||||||
|
|
||||||
|
# delete account
|
||||||
|
poe.delete_account()
|
||||||
|
```
|
||||||
|
|
||||||
|
### Deleting the Poe Account
|
||||||
|
```python
|
||||||
|
from gpt4free import quora
|
||||||
|
|
||||||
|
quora.Account.delete(token='')
|
||||||
```
|
```
|
||||||
|
|
|
@ -285,6 +285,11 @@ class Account:
|
||||||
cookies = open(Path(__file__).resolve().parent / 'cookies.txt', 'r').read().splitlines()
|
cookies = open(Path(__file__).resolve().parent / 'cookies.txt', 'r').read().splitlines()
|
||||||
return choice(cookies)
|
return choice(cookies)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def delete(token: str, proxy: Optional[str] = None):
|
||||||
|
client = PoeClient(token, proxy=proxy)
|
||||||
|
client.delete_account()
|
||||||
|
|
||||||
|
|
||||||
class StreamingCompletion:
|
class StreamingCompletion:
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
@ -293,11 +298,11 @@ class StreamingCompletion:
|
||||||
custom_model: bool = None,
|
custom_model: bool = None,
|
||||||
prompt: str = 'hello world',
|
prompt: str = 'hello world',
|
||||||
token: str = '',
|
token: str = '',
|
||||||
proxy: Optional[str] = None
|
proxy: Optional[str] = None,
|
||||||
) -> Generator[PoeResponse, None, None]:
|
) -> Generator[PoeResponse, None, None]:
|
||||||
_model = MODELS[model] if not custom_model else custom_model
|
_model = MODELS[model] if not custom_model else custom_model
|
||||||
|
|
||||||
proxies = { 'http': 'http://' + proxy, 'https': 'http://' + proxy } if proxy else False
|
proxies = {'http': 'http://' + proxy, 'https': 'http://' + proxy} if proxy else False
|
||||||
client = PoeClient(token)
|
client = PoeClient(token)
|
||||||
client.proxy = proxies
|
client.proxy = proxies
|
||||||
|
|
||||||
|
@ -333,7 +338,7 @@ class Completion:
|
||||||
custom_model: str = None,
|
custom_model: str = None,
|
||||||
prompt: str = 'hello world',
|
prompt: str = 'hello world',
|
||||||
token: str = '',
|
token: str = '',
|
||||||
proxy: Optional[str] = None
|
proxy: Optional[str] = None,
|
||||||
) -> PoeResponse:
|
) -> PoeResponse:
|
||||||
_model = MODELS[model] if not custom_model else custom_model
|
_model = MODELS[model] if not custom_model else custom_model
|
||||||
|
|
||||||
|
@ -454,14 +459,7 @@ class Poe:
|
||||||
response = chunk['text']
|
response = chunk['text']
|
||||||
return response
|
return response
|
||||||
|
|
||||||
def create_bot(
|
def create_bot(self, name: str, /, prompt: str = '', base_model: str = 'ChatGPT', description: str = '') -> None:
|
||||||
self,
|
|
||||||
name: str,
|
|
||||||
/,
|
|
||||||
prompt: str = '',
|
|
||||||
base_model: str = 'ChatGPT',
|
|
||||||
description: str = '',
|
|
||||||
) -> None:
|
|
||||||
if base_model not in MODELS:
|
if base_model not in MODELS:
|
||||||
raise RuntimeError('Sorry, the base_model you provided does not exist. Please check and try again.')
|
raise RuntimeError('Sorry, the base_model you provided does not exist. Please check and try again.')
|
||||||
|
|
||||||
|
@ -475,3 +473,6 @@ class Poe:
|
||||||
|
|
||||||
def list_bots(self) -> list:
|
def list_bots(self) -> list:
|
||||||
return list(self.client.bot_names.values())
|
return list(self.client.bot_names.values())
|
||||||
|
|
||||||
|
def delete_account(self) -> None:
|
||||||
|
self.client.delete_account()
|
||||||
|
|
|
@ -541,5 +541,11 @@ class Client:
|
||||||
self.get_bots()
|
self.get_bots()
|
||||||
return data
|
return data
|
||||||
|
|
||||||
|
def delete_account(self) -> None:
|
||||||
|
response = self.send_query('SettingsDeleteAccountButton_deleteAccountMutation_Mutation', {})
|
||||||
|
data = response['data']['deleteAccount']
|
||||||
|
if 'viewer' not in data:
|
||||||
|
raise RuntimeError(f'Error occurred while deleting the account, Please try again!')
|
||||||
|
|
||||||
|
|
||||||
load_queries()
|
load_queries()
|
||||||
|
|
|
@ -1,7 +1,10 @@
|
||||||
from requests import Session
|
|
||||||
from time import sleep
|
|
||||||
from json import loads
|
from json import loads
|
||||||
from re import findall
|
from re import findall
|
||||||
|
from time import sleep
|
||||||
|
|
||||||
|
from requests import Session
|
||||||
|
|
||||||
|
|
||||||
class Mail:
|
class Mail:
|
||||||
def __init__(self) -> None:
|
def __init__(self) -> None:
|
||||||
self.client = Session()
|
self.client = Session()
|
||||||
|
@ -9,29 +12,34 @@ class Mail:
|
||||||
self.cookies = {'acceptcookie': 'true'}
|
self.cookies = {'acceptcookie': 'true'}
|
||||||
self.cookies["ci_session"] = self.client.cookies.get_dict()["ci_session"]
|
self.cookies["ci_session"] = self.client.cookies.get_dict()["ci_session"]
|
||||||
self.email = None
|
self.email = None
|
||||||
|
|
||||||
def get_mail(self):
|
def get_mail(self):
|
||||||
respone=self.client.post("https://etempmail.com/getEmailAddress")
|
respone = self.client.post("https://etempmail.com/getEmailAddress")
|
||||||
#cookies
|
# cookies
|
||||||
self.cookies["lisansimo"] = eval(respone.text)["recover_key"]
|
self.cookies["lisansimo"] = eval(respone.text)["recover_key"]
|
||||||
self.email = eval(respone.text)["address"]
|
self.email = eval(respone.text)["address"]
|
||||||
return self.email
|
return self.email
|
||||||
|
|
||||||
def get_message(self):
|
def get_message(self):
|
||||||
print("Waiting for message...")
|
print("Waiting for message...")
|
||||||
while True:
|
while True:
|
||||||
sleep(5)
|
sleep(5)
|
||||||
respone=self.client.post("https://etempmail.com/getInbox")
|
respone = self.client.post("https://etempmail.com/getInbox")
|
||||||
mail_token=loads(respone.text)
|
mail_token = loads(respone.text)
|
||||||
print(self.client.cookies.get_dict())
|
print(self.client.cookies.get_dict())
|
||||||
if len(mail_token) == 1:
|
if len(mail_token) == 1:
|
||||||
break
|
break
|
||||||
|
|
||||||
params = {'id': '1',}
|
params = {
|
||||||
self.mail_context = self.client.post("https://etempmail.com/getInbox",params=params)
|
'id': '1',
|
||||||
|
}
|
||||||
|
self.mail_context = self.client.post("https://etempmail.com/getInbox", params=params)
|
||||||
self.mail_context = eval(self.mail_context.text)[0]["body"]
|
self.mail_context = eval(self.mail_context.text)[0]["body"]
|
||||||
return self.mail_context
|
return self.mail_context
|
||||||
#,cookies=self.cookies
|
|
||||||
|
# ,cookies=self.cookies
|
||||||
def get_verification_code(self):
|
def get_verification_code(self):
|
||||||
message = self.mail_context
|
message = self.mail_context
|
||||||
code = findall(r';">(\d{6,7})</div>', message)[0]
|
code = findall(r';">(\d{6,7})</div>', message)[0]
|
||||||
print(f"Verification code: {code}")
|
print(f"Verification code: {code}")
|
||||||
return code
|
return code
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
mutation SettingsDeleteAccountButton_deleteAccountMutation_Mutation{ deleteAccount { viewer { uid id } }}
|
|
@ -20,7 +20,7 @@ class Completion:
|
||||||
last_msg_id = None
|
last_msg_id = None
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def request(prompt: str, proxy: Optional[str]=None):
|
def request(prompt: str, proxy: Optional[str] = None):
|
||||||
headers = {
|
headers = {
|
||||||
'authority': 'chatbot.theb.ai',
|
'authority': 'chatbot.theb.ai',
|
||||||
'content-type': 'application/json',
|
'content-type': 'application/json',
|
||||||
|
@ -45,8 +45,10 @@ class Completion:
|
||||||
Completion.stream_completed = True
|
Completion.stream_completed = True
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def create(prompt: str, proxy: Optional[str]=None) -> Generator[str, None, None]:
|
|
||||||
|
def create(prompt: str, proxy: Optional[str] = None) -> Generator[str, None, None]:
|
||||||
Completion.stream_completed = False
|
Completion.stream_completed = False
|
||||||
|
|
||||||
Thread(target=Completion.request, args=[prompt, proxy]).start()
|
Thread(target=Completion.request, args=[prompt, proxy]).start()
|
||||||
|
|
||||||
while not Completion.stream_completed or not Completion.message_queue.empty():
|
while not Completion.stream_completed or not Completion.message_queue.empty():
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import requests
|
|
||||||
import json
|
import json
|
||||||
|
|
||||||
|
import requests
|
||||||
|
|
||||||
|
|
||||||
class Completion:
|
class Completion:
|
||||||
headers = {
|
headers = {
|
||||||
|
@ -24,7 +25,7 @@ class Completion:
|
||||||
model: str = "gpt-3.5-turbo",
|
model: str = "gpt-3.5-turbo",
|
||||||
):
|
):
|
||||||
print(parentMessageId, prompt)
|
print(parentMessageId, prompt)
|
||||||
|
|
||||||
json_data = {
|
json_data = {
|
||||||
"openaiKey": "",
|
"openaiKey": "",
|
||||||
"prompt": prompt,
|
"prompt": prompt,
|
||||||
|
@ -42,14 +43,14 @@ class Completion:
|
||||||
url = "https://ai.usesless.com/api/chat-process"
|
url = "https://ai.usesless.com/api/chat-process"
|
||||||
request = requests.post(url, headers=Completion.headers, json=json_data)
|
request = requests.post(url, headers=Completion.headers, json=json_data)
|
||||||
content = request.content
|
content = request.content
|
||||||
|
|
||||||
response = Completion.__response_to_json(content)
|
response = Completion.__response_to_json(content)
|
||||||
return response
|
return response
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def __response_to_json(cls, text) -> dict:
|
def __response_to_json(cls, text) -> dict:
|
||||||
text = str(text.decode("utf-8"))
|
text = str(text.decode("utf-8"))
|
||||||
|
|
||||||
split_text = text.rsplit("\n", 1)[1]
|
split_text = text.rsplit("\n", 1)[1]
|
||||||
to_json = json.loads(split_text)
|
to_json = json.loads(split_text)
|
||||||
return to_json
|
return to_json
|
||||||
|
|
|
@ -30,12 +30,12 @@ class Completion:
|
||||||
include_links: bool = False,
|
include_links: bool = False,
|
||||||
detailed: bool = False,
|
detailed: bool = False,
|
||||||
debug: bool = False,
|
debug: bool = False,
|
||||||
proxy: Optional[str] = None
|
proxy: Optional[str] = None,
|
||||||
) -> PoeResponse:
|
) -> PoeResponse:
|
||||||
if chat is None:
|
if chat is None:
|
||||||
chat = []
|
chat = []
|
||||||
|
|
||||||
proxies = { 'http': 'http://' + proxy, 'https': 'http://' + proxy } if proxy else {}
|
proxies = {'http': 'http://' + proxy, 'https': 'http://' + proxy} if proxy else {}
|
||||||
|
|
||||||
client = Session(client_identifier='chrome_108')
|
client = Session(client_identifier='chrome_108')
|
||||||
client.headers = Completion.__get_headers()
|
client.headers = Completion.__get_headers()
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
from time import sleep
|
from time import sleep
|
||||||
|
|
||||||
from gpt4free import quora
|
from gpt4free import quora
|
||||||
|
|
||||||
token = quora.Account.create(proxy=None, logging=True)
|
token = quora.Account.create(proxy=None, logging=True)
|
||||||
print('token', token)
|
print('token', token)
|
||||||
|
@ -9,3 +9,5 @@ sleep(2)
|
||||||
|
|
||||||
for response in quora.StreamingCompletion.create(model='ChatGPT', prompt='hello world', token=token):
|
for response in quora.StreamingCompletion.create(model='ChatGPT', prompt='hello world', token=token):
|
||||||
print(response.text, flush=True)
|
print(response.text, flush=True)
|
||||||
|
|
||||||
|
quora.Account.delete(token)
|
||||||
|
|
|
@ -2,4 +2,4 @@ from gpt4free import theb
|
||||||
|
|
||||||
for token in theb.Completion.create('hello world'):
|
for token in theb.Completion.create('hello world'):
|
||||||
print(token, end='', flush=True)
|
print(token, end='', flush=True)
|
||||||
print('asdsos')
|
print('asdsos')
|
||||||
|
|
|
@ -11,7 +11,6 @@ while True:
|
||||||
print(f"Answer: {req['text']}")
|
print(f"Answer: {req['text']}")
|
||||||
message_id = req["id"]
|
message_id = req["id"]
|
||||||
|
|
||||||
|
|
||||||
import gpt4free
|
import gpt4free
|
||||||
|
|
||||||
message_id = ""
|
message_id = ""
|
||||||
|
@ -20,8 +19,7 @@ while True:
|
||||||
if prompt == "!stop":
|
if prompt == "!stop":
|
||||||
break
|
break
|
||||||
|
|
||||||
req = gpt4free.Completion.create(provider = gpt4free.Provider.UseLess,
|
req = gpt4free.Completion.create(provider=gpt4free.Provider.UseLess, prompt=prompt, parentMessageId=message_id)
|
||||||
prompt=prompt, parentMessageId=message_id)
|
|
||||||
|
|
||||||
print(f"Answer: {req['text']}")
|
print(f"Answer: {req['text']}")
|
||||||
message_id = req["id"]
|
message_id = req["id"]
|
||||||
|
|
Loading…
Reference in a new issue