From d6382a2145e7e1c90b3795e3116e3c574e787868 Mon Sep 17 00:00:00 2001 From: Heiner Lohaus Date: Tue, 12 Sep 2023 00:47:03 +0200 Subject: Add new providers: Aivvm, Vitalentum and Ylokh --- g4f/Provider/You.py | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) (limited to 'g4f/Provider/You.py') diff --git a/g4f/Provider/You.py b/g4f/Provider/You.py index 121d1dbd..4f49f15e 100644 --- a/g4f/Provider/You.py +++ b/g4f/Provider/You.py @@ -2,39 +2,39 @@ from __future__ import annotations import json -from aiohttp import ClientSession +from curl_cffi.requests import AsyncSession from ..typing import AsyncGenerator -from .base_provider import AsyncGeneratorProvider, format_prompt, get_cookies +from .base_provider import AsyncGeneratorProvider, format_prompt class You(AsyncGeneratorProvider): url = "https://you.com" working = True supports_gpt_35_turbo = True - supports_stream = True + supports_stream = False - @staticmethod + + @classmethod async def create_async_generator( + cls, model: str, messages: list[dict[str, str]], - cookies: dict = None, + proxy: str = None, **kwargs, ) -> AsyncGenerator: - if not cookies: - cookies = get_cookies("you.com") - headers = { - "Accept": "text/event-stream", - "Referer": "https://you.com/search?fromSearchBar=true&tbm=youchat", - "User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0" - } - async with ClientSession(headers=headers, cookies=cookies) as session: - async with session.get( + async with AsyncSession(proxies={"https": proxy}, impersonate="chrome107") as session: + headers = { + "Accept": "text/event-stream", + "Referer": "https://you.com/search?fromSearchBar=true&tbm=youchat", + } + response = await session.get( "https://you.com/api/streamingSearch", params={"q": format_prompt(messages), "domain": "youchat", "chat": ""}, - ) as response: - start = 'data: {"youChatToken": ' - async for line in response.content: - line = line.decode('utf-8') - if line.startswith(start): - yield json.loads(line[len(start): -2]) \ No newline at end of file + headers=headers + ) + response.raise_for_status() + start = 'data: {"youChatToken": ' + for line in response.text.splitlines(): + if line.startswith(start): + yield json.loads(line[len(start): -1]) \ No newline at end of file -- cgit v1.2.3