mirror of
https://github.com/xtekky/gpt4free.git
synced 2025-12-06 02:30:41 -08:00
Remove all not working provider (#1679)
Fix many providers Add selenium-wire to requierments
This commit is contained in:
parent
843f6db564
commit
6ef282de3a
57 changed files with 696 additions and 542 deletions
|
|
@ -4,13 +4,14 @@ import re
|
|||
import json
|
||||
import base64
|
||||
import uuid
|
||||
from aiohttp import ClientSession, FormData, BaseConnector
|
||||
from asyncio import get_running_loop
|
||||
from aiohttp import ClientSession, FormData, BaseConnector, CookieJar
|
||||
|
||||
from ..typing import AsyncResult, Messages, ImageType, Cookies
|
||||
from .base_provider import AsyncGeneratorProvider, ProviderModelMixin
|
||||
from ..providers.helper import get_connector, format_prompt
|
||||
from .helper import format_prompt, get_connector
|
||||
from ..image import to_bytes, ImageResponse
|
||||
from ..requests.defaults import DEFAULT_HEADERS
|
||||
from ..requests import WebDriver, raise_for_status, get_args_from_browser
|
||||
|
||||
class You(AsyncGeneratorProvider, ProviderModelMixin):
|
||||
url = "https://you.com"
|
||||
|
|
@ -32,6 +33,8 @@ class You(AsyncGeneratorProvider, ProviderModelMixin):
|
|||
model_aliases = {
|
||||
"claude-v2": "claude-2"
|
||||
}
|
||||
_args: dict = None
|
||||
_cookie_jar: CookieJar = None
|
||||
_cookies = None
|
||||
_cookies_used = 0
|
||||
|
||||
|
|
@ -43,25 +46,34 @@ class You(AsyncGeneratorProvider, ProviderModelMixin):
|
|||
image: ImageType = None,
|
||||
image_name: str = None,
|
||||
connector: BaseConnector = None,
|
||||
webdriver: WebDriver = None,
|
||||
proxy: str = None,
|
||||
chat_mode: str = "default",
|
||||
**kwargs,
|
||||
) -> AsyncResult:
|
||||
if cls._args is None:
|
||||
cls._args = get_args_from_browser(cls.url, webdriver, proxy)
|
||||
cls._cookie_jar = CookieJar(loop=get_running_loop())
|
||||
else:
|
||||
if "cookies" in cls._args:
|
||||
del cls._args["cookies"]
|
||||
cls._cookie_jar._loop = get_running_loop()
|
||||
if image is not None:
|
||||
chat_mode = "agent"
|
||||
elif not model or model == cls.default_model:
|
||||
chat_mode = "default"
|
||||
elif model.startswith("dall-e"):
|
||||
chat_mode = "create"
|
||||
else:
|
||||
chat_mode = "custom"
|
||||
model = cls.get_model(model)
|
||||
async with ClientSession(
|
||||
connector=get_connector(connector, proxy),
|
||||
headers=DEFAULT_HEADERS
|
||||
) as client:
|
||||
if image is not None:
|
||||
chat_mode = "agent"
|
||||
elif not model or model == cls.default_model:
|
||||
chat_mode = "default"
|
||||
elif model.startswith("dall-e"):
|
||||
chat_mode = "create"
|
||||
else:
|
||||
chat_mode = "custom"
|
||||
model = cls.get_model(model)
|
||||
cookies = await cls.get_cookies(client) if chat_mode != "default" else None
|
||||
upload = json.dumps([await cls.upload_file(client, cookies, to_bytes(image), image_name)]) if image else ""
|
||||
cookie_jar=cls._cookie_jar,
|
||||
**cls._args
|
||||
) as session:
|
||||
cookies = await cls.get_cookies(session) if chat_mode != "default" else None
|
||||
upload = json.dumps([await cls.upload_file(session, cookies, to_bytes(image), image_name)]) if image else ""
|
||||
#questions = [message["content"] for message in messages if message["role"] == "user"]
|
||||
# chat = [
|
||||
# {"question": questions[idx-1], "answer": message["content"]}
|
||||
|
|
@ -70,8 +82,8 @@ class You(AsyncGeneratorProvider, ProviderModelMixin):
|
|||
# and idx < len(questions)
|
||||
# ]
|
||||
headers = {
|
||||
"Accept": "text/event-stream",
|
||||
"Referer": f"{cls.url}/search?fromSearchBar=true&tbm=youchat",
|
||||
"accept": "text/event-stream",
|
||||
"referer": f"{cls.url}/search?fromSearchBar=true&tbm=youchat",
|
||||
}
|
||||
data = {
|
||||
"userFiles": upload,
|
||||
|
|
@ -86,14 +98,14 @@ class You(AsyncGeneratorProvider, ProviderModelMixin):
|
|||
}
|
||||
if chat_mode == "custom":
|
||||
params["selectedAIModel"] = model.replace("-", "_")
|
||||
async with (client.post if chat_mode == "default" else client.get)(
|
||||
async with (session.post if chat_mode == "default" else session.get)(
|
||||
f"{cls.url}/api/streamingSearch",
|
||||
data=data,
|
||||
params=params,
|
||||
headers=headers,
|
||||
cookies=cookies
|
||||
) as response:
|
||||
response.raise_for_status()
|
||||
await raise_for_status(response)
|
||||
async for line in response.content:
|
||||
if line.startswith(b'event: '):
|
||||
event = line[7:-1].decode()
|
||||
|
|
@ -115,7 +127,7 @@ class You(AsyncGeneratorProvider, ProviderModelMixin):
|
|||
f"{cls.url}/api/get_nonce",
|
||||
cookies=cookies,
|
||||
) as response:
|
||||
response.raise_for_status()
|
||||
await raise_for_status(response)
|
||||
upload_nonce = await response.text()
|
||||
data = FormData()
|
||||
data.add_field('file', file, filename=filename)
|
||||
|
|
@ -127,8 +139,7 @@ class You(AsyncGeneratorProvider, ProviderModelMixin):
|
|||
},
|
||||
cookies=cookies
|
||||
) as response:
|
||||
if not response.ok:
|
||||
raise RuntimeError(f"Response: {await response.text()}")
|
||||
await raise_for_status(response)
|
||||
result = await response.json()
|
||||
result["user_filename"] = filename
|
||||
result["size"] = len(file)
|
||||
|
|
@ -177,8 +188,7 @@ class You(AsyncGeneratorProvider, ProviderModelMixin):
|
|||
"session_duration_minutes": 129600
|
||||
}
|
||||
) as response:
|
||||
if not response.ok:
|
||||
raise RuntimeError(f"Response: {await response.text()}")
|
||||
await raise_for_status(response)
|
||||
session = (await response.json())["data"]
|
||||
return {
|
||||
"stytch_session": session["session_token"],
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue