From f66cd9f8a322edd9cda4551b2a041559c4c82b2a Mon Sep 17 00:00:00 2001 From: Heiner Lohaus Date: Sun, 21 Apr 2024 07:38:36 +0200 Subject: [PATCH] Add MissingRequirementsError to You --- MANIFEST.in | 3 ++- g4f/Provider/You.py | 6 +++++- g4f/Provider/you/har_file.py | 14 ++++---------- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/MANIFEST.in b/MANIFEST.in index 5559110f..19847cec 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,4 +1,5 @@ recursive-include g4f/gui/server * recursive-include g4f/gui/client * recursive-include g4f/Provider/npm * -recursive-include g4f/Provider/gigachat_crt * \ No newline at end of file +recursive-include g4f/Provider/gigachat_crt * +recursive-include g4f/Provider/you * \ No newline at end of file diff --git a/g4f/Provider/You.py b/g4f/Provider/You.py index 36e2d161..e90365ce 100644 --- a/g4f/Provider/You.py +++ b/g4f/Provider/You.py @@ -11,6 +11,7 @@ from .helper import format_prompt from ..image import ImageResponse, to_bytes, is_accepted_format from ..requests import StreamSession, FormData, raise_for_status from .you.har_file import get_telemetry_ids +from .. import debug class You(AsyncGeneratorProvider, ProviderModelMixin): url = "https://you.com" @@ -163,6 +164,9 @@ class You(AsyncGeneratorProvider, ProviderModelMixin): if not cls._telemetry_ids: cls._telemetry_ids = await get_telemetry_ids() user_uuid = str(uuid.uuid4()) + telemetry_id = cls._telemetry_ids.pop() + if debug.logging: + print(f"Use telemetry_id: {telemetry_id}") async with client.post( "https://web.stytch.com/sdk/v1/passwords", headers={ @@ -173,7 +177,7 @@ class You(AsyncGeneratorProvider, ProviderModelMixin): "Referer": "https://you.com/" }, json={ - "dfp_telemetry_id": cls._telemetry_ids.pop(), + "dfp_telemetry_id": telemetry_id, "email": f"{user_uuid}@gmail.com", "password": f"{user_uuid}#{user_uuid}", "session_duration_minutes": 129600 diff --git a/g4f/Provider/you/har_file.py b/g4f/Provider/you/har_file.py index 9d841352..18a7144b 100644 --- a/g4f/Provider/you/har_file.py +++ b/g4f/Provider/you/har_file.py @@ -2,10 +2,12 @@ from __future__ import annotations import json import os +import os.path import random import requests from ...requests import StreamSession, raise_for_status +from ...errors import MissingRequirementsError from ... import debug class NoValidHarFileError(Exception): @@ -71,21 +73,13 @@ async def get_dfp_telemetry_id(proxy: str = None): chatArks = readHAR() return await sendRequest(random.choice(chatArks), proxy) -def read_telemetry_file() -> list: - with open("hardir/you.com_telemetry_ids.txt", "r") as f: - ids = f.readlines() - random.shuffle(ids) - return ids - async def get_telemetry_ids(proxy: str = None) -> list: if debug.logging: print('Getting telemetry_id for you.com with nodriver') try: from nodriver import start except ImportError: - if debug.logging: - print('Install "nodriver" package | pip install -U nodriver') - return read_telemetry_file() + raise MissingRequirementsError('Install "nodriver" package | pip install -U nodriver') try: browser = await start() tab = browser.main_tab @@ -103,7 +97,7 @@ async def get_telemetry_ids(proxy: str = None) -> list: # with open("hardir/you.com_telemetry_ids.txt", "a") as f: # f.write((await get_telemetry_id()) + "\n") - return [await get_telemetry_id() for _ in range(10)] + return [await get_telemetry_id() for _ in range(4)] finally: try: await tab.close()