summaryrefslogtreecommitdiffstats
path: root/g4f/Provider/Feedough.py
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--g4f/Provider/Feedough.py82
1 files changed, 54 insertions, 28 deletions
diff --git a/g4f/Provider/Feedough.py b/g4f/Provider/Feedough.py
index 2ce4561e..d35e30ee 100644
--- a/g4f/Provider/Feedough.py
+++ b/g4f/Provider/Feedough.py
@@ -1,17 +1,20 @@
from __future__ import annotations
import json
-from aiohttp import ClientSession
+import asyncio
+from aiohttp import ClientSession, TCPConnector
+from urllib.parse import urlencode
from ..typing import AsyncResult, Messages
-from .base_provider import AsyncGeneratorProvider
+from .base_provider import AsyncGeneratorProvider, ProviderModelMixin
from .helper import format_prompt
-class Feedough(AsyncGeneratorProvider):
+class Feedough(AsyncGeneratorProvider, ProviderModelMixin):
url = "https://www.feedough.com"
+ api_endpoint = "/wp-admin/admin-ajax.php"
working = True
- supports_gpt_35_turbo = True
+ default_model = ''
@classmethod
async def create_async_generator(
@@ -22,31 +25,54 @@ class Feedough(AsyncGeneratorProvider):
**kwargs
) -> AsyncResult:
headers = {
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36",
- "Accept": "*/*",
- "Accept-Language": "en-US,en;q=0.5",
- "Accept-Encoding": "gzip, deflate, br",
- "Referer": "https://www.feedough.com/ai-prompt-generator/",
- "Content-Type": "application/x-www-form-urlencoded;charset=UTF-8",
- "Origin": "https://www.feedough.com",
- "DNT": "1",
- "Sec-GPC": "1",
- "Connection": "keep-alive",
- "Sec-Fetch-Dest": "empty",
- "Sec-Fetch-Mode": "cors",
- "Sec-Fetch-Site": "same-origin",
- "TE": "trailers",
+ "accept": "*/*",
+ "accept-language": "en-US,en;q=0.9",
+ "content-type": "application/x-www-form-urlencoded;charset=UTF-8",
+ "dnt": "1",
+ "origin": cls.url,
+ "referer": f"{cls.url}/ai-prompt-generator/",
+ "sec-ch-ua": '"Not/A)Brand";v="8", "Chromium";v="126"',
+ "sec-ch-ua-mobile": "?0",
+ "sec-ch-ua-platform": '"Linux"',
+ "sec-fetch-dest": "empty",
+ "sec-fetch-mode": "cors",
+ "sec-fetch-site": "same-origin",
+ "user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36"
}
- async with ClientSession(headers=headers) as session:
- prompt = format_prompt(messages)
+
+ connector = TCPConnector(ssl=False)
+
+ async with ClientSession(headers=headers, connector=connector) as session:
data = {
"action": "aixg_generate",
- "prompt": prompt,
+ "prompt": format_prompt(messages),
+ "aixg_generate_nonce": "110c021031"
}
- async with session.post(f"{cls.url}/wp-admin/admin-ajax.php", data=data, proxy=proxy) as response:
- response.raise_for_status()
- response_text = await response.text()
- response_json = json.loads(response_text)
- if response_json["success"]:
- message = response_json["data"]["message"]
- yield message
+
+ try:
+ async with session.post(
+ f"{cls.url}{cls.api_endpoint}",
+ data=urlencode(data),
+ proxy=proxy
+ ) as response:
+ response.raise_for_status()
+ response_text = await response.text()
+ try:
+ response_json = json.loads(response_text)
+ if response_json.get("success") and "data" in response_json:
+ message = response_json["data"].get("message", "")
+ yield message
+ except json.JSONDecodeError:
+ yield response_text
+ except Exception as e:
+ print(f"An error occurred: {e}")
+
+ @classmethod
+ async def run(cls, *args, **kwargs):
+ async for item in cls.create_async_generator(*args, **kwargs):
+ yield item
+
+ tasks = asyncio.all_tasks()
+ for task in tasks:
+ if not task.done():
+ await task