XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet
公开
关注 0 Fork 0 Star 0
返回提交历史

XFEstudio/gpt4free

Refactor Yupp provider to remove direct dependency on cloudscraper and streamline scraper usage

8b43b3cd
hlohaus <983577+hlohaus@users.noreply.github.com>
提交于

代码差异

1 个文件 +9 -13
Modified g4f/Provider/Yupp.py +9 -13
@@ -5,16 +5,12 @@ import os
5 5 import re
6 6 import time
7 7 import uuid
8 from typing import Type
9 8 from concurrent.futures import ThreadPoolExecutor
10 9
11 10 try:
12 import cloudscraper
13 11 from cloudscraper import CloudScraper
14 has_cloudscraper = True
15 12 except ImportError:
16 cloudscraper = CloudScraper = None
17 has_cloudscraper = False
13 CloudScraper = None
18 14
19 15 from .helper import get_last_user_message
20 16 from .yupp.models import YuppModelManager
@@ -37,7 +33,7 @@ _executor = ThreadPoolExecutor(max_workers=10)
37 33
38 34
39 35 def create_scraper():
40 scraper = cloudscraper.create_scraper(
36 scraper = create_scraper(
41 37 browser={
42 38 'browser': 'chrome',
43 39 'platform': 'windows',
@@ -212,7 +208,7 @@ def format_messages_for_yupp(messages: Messages) -> str:
212 208 class Yupp(AsyncGeneratorProvider, ProviderModelMixin):
213 209 url = "https://yupp.ai"
214 210 login_url = "https://discord.gg/qXA4Wf4Fsm"
215 working = has_cloudscraper
211 working = CloudScraper is not None
216 212 active_by_default = True
217 213 supports_stream = True
218 214 image_cache = True
@@ -237,7 +233,7 @@ class Yupp(AsyncGeneratorProvider, ProviderModelMixin):
237 233 return cls.models
238 234
239 235 @classmethod
240 def sync_prepare_files(cls, media, scraper: cloudscraper.CloudScraper, account: Dict[str, Any]) -> list:
236 def sync_prepare_files(cls, media, scraper: CloudScraper, account: Dict[str, Any]) -> list:
241 237 files = []
242 238 if not media:
243 239 return files
@@ -292,12 +288,12 @@ class Yupp(AsyncGeneratorProvider, ProviderModelMixin):
292 288 return files
293 289
294 290 @classmethod
295 async def prepare_files(cls, media, scraper: cloudscraper.CloudScraper, account: Dict[str, Any]) -> list:
291 async def prepare_files(cls, media, scraper: CloudScraper, account: Dict[str, Any]) -> list:
296 292 loop = asyncio.get_event_loop()
297 293 return await loop.run_in_executor(_executor, cls.sync_prepare_files, media, scraper, account)
298 294
299 295 @classmethod
300 def sync_get_signed_image(cls, scraper: cloudscraper.CloudScraper, image_id: str) -> str:
296 def sync_get_signed_image(cls, scraper: CloudScraper, image_id: str) -> str:
301 297 url = "https://yupp.ai/api/trpc/chat.getSignedImage"
302 298 resp = scraper.get(
303 299 url,
@@ -313,12 +309,12 @@ class Yupp(AsyncGeneratorProvider, ProviderModelMixin):
313 309 return data[0]["result"]["data"]["json"]["signed_url"]
314 310
315 311 @classmethod
316 async def get_signed_image(cls, scraper: cloudscraper.CloudScraper, image_id: str) -> str:
312 async def get_signed_image(cls, scraper: CloudScraper, image_id: str) -> str:
317 313 loop = asyncio.get_event_loop()
318 314 return await loop.run_in_executor(_executor, cls.sync_get_signed_image, scraper, image_id)
319 315
320 316 @classmethod
321 def sync_stream_request(cls, scraper: cloudscraper.CloudScraper, url: str, payload: list, headers: dict,
317 def sync_stream_request(cls, scraper: CloudScraper, url: str, payload: list, headers: dict,
322 318 timeout: int):
323 319 response = scraper.post(url, json=payload, headers=headers, stream=True, timeout=timeout)
324 320 response.raise_for_status()
@@ -477,7 +473,7 @@ class Yupp(AsyncGeneratorProvider, ProviderModelMixin):
477 473 cls,
478 474 response,
479 475 account: Dict[str, Any],
480 scraper: cloudscraper.CloudScraper,
476 scraper: CloudScraper,
481 477 prompt: str,
482 478 model_id: str
483 479 ) -> AsyncResult: