summaryrefslogtreecommitdiffstats
path: root/g4f/.v1/gpt4free/usesless/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'g4f/.v1/gpt4free/usesless/__init__.py')
-rw-r--r--g4f/.v1/gpt4free/usesless/__init__.py158
1 files changed, 158 insertions, 0 deletions
diff --git a/g4f/.v1/gpt4free/usesless/__init__.py b/g4f/.v1/gpt4free/usesless/__init__.py
new file mode 100644
index 00000000..00f7f75d
--- /dev/null
+++ b/g4f/.v1/gpt4free/usesless/__init__.py
@@ -0,0 +1,158 @@
+import string
+import time
+import re
+import json
+import requests
+import fake_useragent
+import random
+from password_generator import PasswordGenerator
+
+from .utils import create_email, check_email
+
+
+class Account:
+ @staticmethod
+ def create(logging: bool = False):
+ is_custom_domain = input(
+ "Do you want to use your custom domain name for temporary email? [Y/n]: "
+ ).upper()
+
+ if is_custom_domain == "Y":
+ mail_address = create_email(custom_domain=True, logging=logging)
+ elif is_custom_domain == "N":
+ mail_address = create_email(custom_domain=False, logging=logging)
+ else:
+ print("Please, enter either Y or N")
+ return
+
+ name = string.ascii_lowercase + string.digits
+ username = "".join(random.choice(name) for i in range(20))
+
+ pwo = PasswordGenerator()
+ pwo.minlen = 8
+ password = pwo.generate()
+
+ session = requests.Session()
+
+ register_url = "https://ai.usesless.com/api/cms/auth/local/register"
+ register_json = {
+ "username": username,
+ "password": password,
+ "email": mail_address,
+ }
+ headers = {
+ "authority": "ai.usesless.com",
+ "accept": "application/json, text/plain, */*",
+ "accept-language": "en-US,en;q=0.5",
+ "cache-control": "no-cache",
+ "sec-fetch-dest": "empty",
+ "sec-fetch-mode": "cors",
+ "sec-fetch-site": "same-origin",
+ "user-agent": fake_useragent.UserAgent().random,
+ }
+ register = session.post(register_url, json=register_json, headers=headers)
+ if logging:
+ if register.status_code == 200:
+ print("Registered successfully")
+ else:
+ print(register.status_code)
+ print(register.json())
+ print("There was a problem with account registration, try again")
+
+ if register.status_code != 200:
+ quit()
+
+ while True:
+ time.sleep(5)
+ messages = check_email(mail=mail_address, logging=logging)
+
+ # Check if method `message_list()` didn't return None or empty list.
+ if not messages or len(messages) == 0:
+ # If it returned None or empty list sleep for 5 seconds to wait for new message.
+ continue
+
+ message_text = messages[0]["content"]
+ verification_url = re.findall(
+ r"http:\/\/ai\.usesless\.com\/api\/cms\/auth\/email-confirmation\?confirmation=\w.+\w\w",
+ message_text,
+ )[0]
+ if verification_url:
+ break
+
+ session.get(verification_url)
+ login_json = {"identifier": mail_address, "password": password}
+ login_request = session.post(
+ url="https://ai.usesless.com/api/cms/auth/local", json=login_json
+ )
+
+ token = login_request.json()["jwt"]
+ if logging and token:
+ print(f"Token: {token}")
+
+ with open("account.json", "w") as file:
+ json.dump({"email": mail_address, "token": token}, file)
+ if logging:
+ print(
+ "\nNew account credentials has been successfully saved in 'account.json' file"
+ )
+
+ return token
+
+
+class Completion:
+ @staticmethod
+ def create(
+ token: str,
+ systemMessage: str = "You are a helpful assistant",
+ prompt: str = "",
+ parentMessageId: str = "",
+ presence_penalty: float = 1,
+ temperature: float = 1,
+ model: str = "gpt-3.5-turbo",
+ ):
+ headers = {
+ "authority": "ai.usesless.com",
+ "accept": "application/json, text/plain, */*",
+ "accept-language": "en-US,en;q=0.5",
+ "cache-control": "no-cache",
+ "sec-fetch-dest": "empty",
+ "sec-fetch-mode": "cors",
+ "sec-fetch-site": "same-origin",
+ "user-agent": fake_useragent.UserAgent().random,
+ "Authorization": f"Bearer {token}",
+ }
+
+ json_data = {
+ "openaiKey": "",
+ "prompt": prompt,
+ "options": {
+ "parentMessageId": parentMessageId,
+ "systemMessage": systemMessage,
+ "completionParams": {
+ "presence_penalty": presence_penalty,
+ "temperature": temperature,
+ "model": model,
+ },
+ },
+ }
+
+ url = "https://ai.usesless.com/api/chat-process"
+ request = requests.post(url, headers=headers, json=json_data)
+ request.encoding = request.apparent_encoding
+ content = request.content
+
+ response = Completion.__response_to_json(content)
+ return response
+
+
+ @classmethod
+ def __response_to_json(cls, text) -> str:
+ text = str(text.decode("utf-8"))
+
+ split_text = text.rsplit("\n", 1)
+ if len(split_text) > 1:
+ to_json = json.loads(split_text[1])
+ return to_json
+ else:
+ return None
+