diff options
author | t.me/xtekky <98614666+xtekky@users.noreply.github.com> | 2023-05-04 20:13:08 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-04 20:13:08 +0200 |
commit | 4a26913b6ed6a8106ed6560903a5f70e860e8c2f (patch) | |
tree | 0f97c8f5e3fb8bf5930c4a5e7bc2af36b4d36382 | |
parent | Merge pull request #439 from mishalhossin/patch-1 (diff) | |
parent | Fixed imports (diff) | |
download | gpt4free-4a26913b6ed6a8106ed6560903a5f70e860e8c2f.tar gpt4free-4a26913b6ed6a8106ed6560903a5f70e860e8c2f.tar.gz gpt4free-4a26913b6ed6a8106ed6560903a5f70e860e8c2f.tar.bz2 gpt4free-4a26913b6ed6a8106ed6560903a5f70e860e8c2f.tar.lz gpt4free-4a26913b6ed6a8106ed6560903a5f70e860e8c2f.tar.xz gpt4free-4a26913b6ed6a8106ed6560903a5f70e860e8c2f.tar.zst gpt4free-4a26913b6ed6a8106ed6560903a5f70e860e8c2f.zip |
-rw-r--r-- | .vscode/settings.json | 4 | ||||
-rw-r--r-- | gpt4free/forefront/__init__.py | 79 | ||||
-rw-r--r-- | gpt4free/test.py | 4 |
3 files changed, 32 insertions, 55 deletions
diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..5af1e3ee --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,4 @@ +{ + "editor.tabCompletion": "on", + "diffEditor.codeLens": true +}
\ No newline at end of file diff --git a/gpt4free/forefront/__init__.py b/gpt4free/forefront/__init__.py index 23978501..dbf1730b 100644 --- a/gpt4free/forefront/__init__.py +++ b/gpt4free/forefront/__init__.py @@ -1,49 +1,27 @@ -import os -import pickle from json import loads +from xtempmail import Email from re import findall +from typing import Optional, Generator +from faker import Faker from time import time, sleep -from typing import Generator, Optional from uuid import uuid4 - from fake_useragent import UserAgent -from pymailtm import MailTm, Message from requests import post from tls_client import Session - from .typing import ForeFrontResponse class Account: - COOKIES_FILE_NAME = 'cookies.pickle' - @staticmethod - def login(proxy: Optional[str] = None, logging: bool = False) -> str: - if not os.path.isfile(Account.COOKIES_FILE_NAME): - return Account.create(proxy, logging) - - with open(Account.COOKIES_FILE_NAME, 'rb') as f: - cookies = pickle.load(f) - proxies = {'http': 'http://' + proxy, 'https': 'http://' + proxy} if proxy else False - - client = Session(client_identifier='chrome110') - client.proxies = proxies - client.cookies.update(cookies) - - if Account.is_cookie_enabled(client): - response = client.get('https://clerk.forefront.ai/v1/client?_clerk_js_version=4.38.4') - return response.json()['response']['sessions'][0]['last_active_token']['jwt'] - else: - return Account.create(proxy, logging) - - @staticmethod - def create(proxy: Optional[str] = None, logging: bool = False, save_cookies: bool = False) -> str: + def create(proxy: Optional[str] = None, logging: bool = False): proxies = {'http': 'http://' + proxy, 'https': 'http://' + proxy} if proxy else False + faker = Faker() + name = (faker.name().replace(' ', '_')).lower() start = time() - mail_client = MailTm().get_account() - mail_address = mail_client.address + mail_client = Email(name=name) + mail_address = mail_client.email client = Session(client_identifier='chrome110') client.proxies = proxies @@ -66,7 +44,10 @@ class Account: response = client.post( f'https://clerk.forefront.ai/v1/client/sign_ups/{trace_token}/prepare_verification?_clerk_js_version=4.38.4', - data={'strategy': 'email_link', 'redirect_url': 'https://accounts.forefront.ai/sign-up/verify'}, + data={ + 'strategy': 'email_link', + 'redirect_url': 'https://accounts.forefront.ai/sign-up/verify' + }, ) if logging: @@ -74,31 +55,23 @@ class Account: if 'sign_up_attempt' not in response.text: return 'Failed to create account!' - - while True: - sleep(1) - new_message: Message = mail_client.wait_for_message() - if logging: - print(new_message.data['id']) - - verification_url = findall(r'https:\/\/clerk\.forefront\.ai\/v1\/verify\?token=\w.+', new_message.text)[0] - + verification_url = None + new_message = mail_client.get_new_message(5) + for msg in new_message: + verification_url = findall(r'https:\/\/clerk\.forefront\.ai\/v1\/verify\?token=\w.+', msg.text)[0] if verification_url: break - + + if verification_url is None or not verification_url: + raise RuntimeError('Error while obtaining verfication URL!') if logging: print(verification_url) - response = client.get(verification_url) response = client.get('https://clerk.forefront.ai/v1/client?_clerk_js_version=4.38.4') token = response.json()['response']['sessions'][0]['last_active_token']['jwt'] - if save_cookies: - with open(Account.COOKIES_FILE_NAME, 'wb') as f: - pickle.dump(client.cookies, f) - with open('accounts.txt', 'a') as f: f.write(f'{mail_address}:{token}\n') @@ -107,11 +80,6 @@ class Account: return token - @staticmethod - def is_cookie_enabled(client: Session) -> bool: - response = client.get('https://chat.forefront.ai/') - return 'window.startClerk' in response.text - class StreamingCompletion: @staticmethod @@ -122,14 +90,14 @@ class StreamingCompletion: action_type='new', default_persona='607e41fe-95be-497e-8e97-010a59b2e2c0', # default model='gpt-4', - proxy=None, + proxy=None ) -> Generator[ForeFrontResponse, None, None]: if not token: raise Exception('Token is required!') if not chat_id: 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 = { 'authority': 'chat-server.tenant-forefront-default.knative.chi.coreweave.com', @@ -197,7 +165,7 @@ class Completion: action_type='new', default_persona='607e41fe-95be-497e-8e97-010a59b2e2c0', # default model='gpt-4', - proxy=None, + proxy=None ) -> ForeFrontResponse: text = '' final_response = None @@ -208,7 +176,7 @@ class Completion: action_type=action_type, default_persona=default_persona, model=model, - proxy=proxy, + proxy=proxy ): if response: final_response = response @@ -220,3 +188,4 @@ class Completion: raise Exception('Unable to get the response, Please try again') return final_response +
\ No newline at end of file diff --git a/gpt4free/test.py b/gpt4free/test.py new file mode 100644 index 00000000..b2516748 --- /dev/null +++ b/gpt4free/test.py @@ -0,0 +1,4 @@ +import forefront +token = forefront.Account.create() +response = forefront.Completion.create(token=token, prompt='Hello!') +print(response)
\ No newline at end of file |