webscout 8.2.8__py3-none-any.whl → 8.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of webscout might be problematic. Click here for more details.

Files changed (197) hide show
  1. webscout/AIauto.py +34 -16
  2. webscout/AIbase.py +96 -37
  3. webscout/AIutel.py +491 -87
  4. webscout/Bard.py +441 -323
  5. webscout/Extra/GitToolkit/__init__.py +10 -10
  6. webscout/Extra/YTToolkit/ytapi/video.py +232 -232
  7. webscout/Litlogger/README.md +10 -0
  8. webscout/Litlogger/__init__.py +7 -59
  9. webscout/Litlogger/formats.py +4 -0
  10. webscout/Litlogger/handlers.py +103 -0
  11. webscout/Litlogger/levels.py +13 -0
  12. webscout/Litlogger/logger.py +92 -0
  13. webscout/Provider/AISEARCH/Perplexity.py +332 -358
  14. webscout/Provider/AISEARCH/felo_search.py +9 -35
  15. webscout/Provider/AISEARCH/genspark_search.py +30 -56
  16. webscout/Provider/AISEARCH/hika_search.py +4 -16
  17. webscout/Provider/AISEARCH/iask_search.py +410 -436
  18. webscout/Provider/AISEARCH/monica_search.py +4 -30
  19. webscout/Provider/AISEARCH/scira_search.py +6 -32
  20. webscout/Provider/AISEARCH/webpilotai_search.py +38 -64
  21. webscout/Provider/Blackboxai.py +155 -35
  22. webscout/Provider/ChatSandbox.py +2 -1
  23. webscout/Provider/Deepinfra.py +339 -339
  24. webscout/Provider/ExaChat.py +358 -358
  25. webscout/Provider/Gemini.py +169 -169
  26. webscout/Provider/GithubChat.py +1 -2
  27. webscout/Provider/Glider.py +3 -3
  28. webscout/Provider/HeckAI.py +172 -82
  29. webscout/Provider/LambdaChat.py +1 -0
  30. webscout/Provider/MCPCore.py +7 -3
  31. webscout/Provider/OPENAI/BLACKBOXAI.py +421 -139
  32. webscout/Provider/OPENAI/Cloudflare.py +38 -21
  33. webscout/Provider/OPENAI/FalconH1.py +457 -0
  34. webscout/Provider/OPENAI/FreeGemini.py +35 -18
  35. webscout/Provider/OPENAI/NEMOTRON.py +34 -34
  36. webscout/Provider/OPENAI/PI.py +427 -0
  37. webscout/Provider/OPENAI/Qwen3.py +304 -0
  38. webscout/Provider/OPENAI/README.md +952 -1253
  39. webscout/Provider/OPENAI/TwoAI.py +374 -0
  40. webscout/Provider/OPENAI/__init__.py +7 -1
  41. webscout/Provider/OPENAI/ai4chat.py +73 -63
  42. webscout/Provider/OPENAI/api.py +869 -644
  43. webscout/Provider/OPENAI/base.py +2 -0
  44. webscout/Provider/OPENAI/c4ai.py +34 -13
  45. webscout/Provider/OPENAI/chatgpt.py +575 -556
  46. webscout/Provider/OPENAI/chatgptclone.py +512 -487
  47. webscout/Provider/OPENAI/chatsandbox.py +11 -6
  48. webscout/Provider/OPENAI/copilot.py +258 -0
  49. webscout/Provider/OPENAI/deepinfra.py +327 -318
  50. webscout/Provider/OPENAI/e2b.py +140 -104
  51. webscout/Provider/OPENAI/exaai.py +420 -411
  52. webscout/Provider/OPENAI/exachat.py +448 -443
  53. webscout/Provider/OPENAI/flowith.py +7 -3
  54. webscout/Provider/OPENAI/freeaichat.py +12 -8
  55. webscout/Provider/OPENAI/glider.py +15 -8
  56. webscout/Provider/OPENAI/groq.py +5 -2
  57. webscout/Provider/OPENAI/heckai.py +311 -307
  58. webscout/Provider/OPENAI/llmchatco.py +9 -7
  59. webscout/Provider/OPENAI/mcpcore.py +18 -9
  60. webscout/Provider/OPENAI/multichat.py +7 -5
  61. webscout/Provider/OPENAI/netwrck.py +16 -11
  62. webscout/Provider/OPENAI/oivscode.py +290 -0
  63. webscout/Provider/OPENAI/opkfc.py +507 -496
  64. webscout/Provider/OPENAI/pydantic_imports.py +172 -0
  65. webscout/Provider/OPENAI/scirachat.py +29 -17
  66. webscout/Provider/OPENAI/sonus.py +308 -303
  67. webscout/Provider/OPENAI/standardinput.py +442 -433
  68. webscout/Provider/OPENAI/textpollinations.py +18 -11
  69. webscout/Provider/OPENAI/toolbaz.py +419 -413
  70. webscout/Provider/OPENAI/typefully.py +17 -10
  71. webscout/Provider/OPENAI/typegpt.py +21 -11
  72. webscout/Provider/OPENAI/uncovrAI.py +477 -462
  73. webscout/Provider/OPENAI/utils.py +90 -79
  74. webscout/Provider/OPENAI/venice.py +435 -425
  75. webscout/Provider/OPENAI/wisecat.py +387 -381
  76. webscout/Provider/OPENAI/writecream.py +166 -163
  77. webscout/Provider/OPENAI/x0gpt.py +26 -37
  78. webscout/Provider/OPENAI/yep.py +384 -356
  79. webscout/Provider/PI.py +2 -1
  80. webscout/Provider/TTI/README.md +55 -101
  81. webscout/Provider/TTI/__init__.py +4 -9
  82. webscout/Provider/TTI/aiarta.py +365 -0
  83. webscout/Provider/TTI/artbit.py +0 -0
  84. webscout/Provider/TTI/base.py +64 -0
  85. webscout/Provider/TTI/fastflux.py +200 -0
  86. webscout/Provider/TTI/magicstudio.py +201 -0
  87. webscout/Provider/TTI/piclumen.py +203 -0
  88. webscout/Provider/TTI/pixelmuse.py +225 -0
  89. webscout/Provider/TTI/pollinations.py +221 -0
  90. webscout/Provider/TTI/utils.py +11 -0
  91. webscout/Provider/TTS/__init__.py +2 -1
  92. webscout/Provider/TTS/base.py +159 -159
  93. webscout/Provider/TTS/openai_fm.py +129 -0
  94. webscout/Provider/TextPollinationsAI.py +308 -308
  95. webscout/Provider/TwoAI.py +239 -44
  96. webscout/Provider/UNFINISHED/Youchat.py +330 -330
  97. webscout/Provider/UNFINISHED/puterjs.py +635 -0
  98. webscout/Provider/UNFINISHED/test_lmarena.py +119 -119
  99. webscout/Provider/Writecream.py +246 -246
  100. webscout/Provider/__init__.py +2 -2
  101. webscout/Provider/ai4chat.py +33 -8
  102. webscout/Provider/granite.py +41 -6
  103. webscout/Provider/koala.py +169 -169
  104. webscout/Provider/oivscode.py +309 -0
  105. webscout/Provider/samurai.py +3 -2
  106. webscout/Provider/scnet.py +1 -0
  107. webscout/Provider/typegpt.py +3 -3
  108. webscout/Provider/uncovr.py +368 -368
  109. webscout/client.py +70 -0
  110. webscout/litprinter/__init__.py +58 -58
  111. webscout/optimizers.py +419 -419
  112. webscout/scout/README.md +3 -1
  113. webscout/scout/core/crawler.py +134 -64
  114. webscout/scout/core/scout.py +148 -109
  115. webscout/scout/element.py +106 -88
  116. webscout/swiftcli/Readme.md +323 -323
  117. webscout/swiftcli/plugins/manager.py +9 -2
  118. webscout/version.py +1 -1
  119. webscout/zeroart/__init__.py +134 -134
  120. webscout/zeroart/effects.py +100 -100
  121. webscout/zeroart/fonts.py +1238 -1238
  122. {webscout-8.2.8.dist-info → webscout-8.3.dist-info}/METADATA +160 -35
  123. webscout-8.3.dist-info/RECORD +290 -0
  124. {webscout-8.2.8.dist-info → webscout-8.3.dist-info}/WHEEL +1 -1
  125. {webscout-8.2.8.dist-info → webscout-8.3.dist-info}/entry_points.txt +1 -0
  126. webscout/Litlogger/Readme.md +0 -175
  127. webscout/Litlogger/core/__init__.py +0 -6
  128. webscout/Litlogger/core/level.py +0 -23
  129. webscout/Litlogger/core/logger.py +0 -165
  130. webscout/Litlogger/handlers/__init__.py +0 -12
  131. webscout/Litlogger/handlers/console.py +0 -33
  132. webscout/Litlogger/handlers/file.py +0 -143
  133. webscout/Litlogger/handlers/network.py +0 -173
  134. webscout/Litlogger/styles/__init__.py +0 -7
  135. webscout/Litlogger/styles/colors.py +0 -249
  136. webscout/Litlogger/styles/formats.py +0 -458
  137. webscout/Litlogger/styles/text.py +0 -87
  138. webscout/Litlogger/utils/__init__.py +0 -6
  139. webscout/Litlogger/utils/detectors.py +0 -153
  140. webscout/Litlogger/utils/formatters.py +0 -200
  141. webscout/Provider/ChatGPTGratis.py +0 -194
  142. webscout/Provider/TTI/AiForce/README.md +0 -159
  143. webscout/Provider/TTI/AiForce/__init__.py +0 -22
  144. webscout/Provider/TTI/AiForce/async_aiforce.py +0 -224
  145. webscout/Provider/TTI/AiForce/sync_aiforce.py +0 -245
  146. webscout/Provider/TTI/FreeAIPlayground/README.md +0 -99
  147. webscout/Provider/TTI/FreeAIPlayground/__init__.py +0 -9
  148. webscout/Provider/TTI/FreeAIPlayground/async_freeaiplayground.py +0 -181
  149. webscout/Provider/TTI/FreeAIPlayground/sync_freeaiplayground.py +0 -180
  150. webscout/Provider/TTI/ImgSys/README.md +0 -174
  151. webscout/Provider/TTI/ImgSys/__init__.py +0 -23
  152. webscout/Provider/TTI/ImgSys/async_imgsys.py +0 -202
  153. webscout/Provider/TTI/ImgSys/sync_imgsys.py +0 -195
  154. webscout/Provider/TTI/MagicStudio/README.md +0 -101
  155. webscout/Provider/TTI/MagicStudio/__init__.py +0 -2
  156. webscout/Provider/TTI/MagicStudio/async_magicstudio.py +0 -111
  157. webscout/Provider/TTI/MagicStudio/sync_magicstudio.py +0 -109
  158. webscout/Provider/TTI/Nexra/README.md +0 -155
  159. webscout/Provider/TTI/Nexra/__init__.py +0 -22
  160. webscout/Provider/TTI/Nexra/async_nexra.py +0 -286
  161. webscout/Provider/TTI/Nexra/sync_nexra.py +0 -258
  162. webscout/Provider/TTI/PollinationsAI/README.md +0 -146
  163. webscout/Provider/TTI/PollinationsAI/__init__.py +0 -23
  164. webscout/Provider/TTI/PollinationsAI/async_pollinations.py +0 -311
  165. webscout/Provider/TTI/PollinationsAI/sync_pollinations.py +0 -265
  166. webscout/Provider/TTI/aiarta/README.md +0 -134
  167. webscout/Provider/TTI/aiarta/__init__.py +0 -2
  168. webscout/Provider/TTI/aiarta/async_aiarta.py +0 -482
  169. webscout/Provider/TTI/aiarta/sync_aiarta.py +0 -440
  170. webscout/Provider/TTI/artbit/README.md +0 -100
  171. webscout/Provider/TTI/artbit/__init__.py +0 -22
  172. webscout/Provider/TTI/artbit/async_artbit.py +0 -155
  173. webscout/Provider/TTI/artbit/sync_artbit.py +0 -148
  174. webscout/Provider/TTI/fastflux/README.md +0 -129
  175. webscout/Provider/TTI/fastflux/__init__.py +0 -22
  176. webscout/Provider/TTI/fastflux/async_fastflux.py +0 -261
  177. webscout/Provider/TTI/fastflux/sync_fastflux.py +0 -252
  178. webscout/Provider/TTI/huggingface/README.md +0 -114
  179. webscout/Provider/TTI/huggingface/__init__.py +0 -22
  180. webscout/Provider/TTI/huggingface/async_huggingface.py +0 -199
  181. webscout/Provider/TTI/huggingface/sync_huggingface.py +0 -195
  182. webscout/Provider/TTI/piclumen/README.md +0 -161
  183. webscout/Provider/TTI/piclumen/__init__.py +0 -23
  184. webscout/Provider/TTI/piclumen/async_piclumen.py +0 -268
  185. webscout/Provider/TTI/piclumen/sync_piclumen.py +0 -233
  186. webscout/Provider/TTI/pixelmuse/README.md +0 -79
  187. webscout/Provider/TTI/pixelmuse/__init__.py +0 -4
  188. webscout/Provider/TTI/pixelmuse/async_pixelmuse.py +0 -249
  189. webscout/Provider/TTI/pixelmuse/sync_pixelmuse.py +0 -182
  190. webscout/Provider/TTI/talkai/README.md +0 -139
  191. webscout/Provider/TTI/talkai/__init__.py +0 -4
  192. webscout/Provider/TTI/talkai/async_talkai.py +0 -229
  193. webscout/Provider/TTI/talkai/sync_talkai.py +0 -207
  194. webscout/Provider/UNFINISHED/oivscode.py +0 -351
  195. webscout-8.2.8.dist-info/RECORD +0 -334
  196. {webscout-8.2.8.dist-info → webscout-8.3.dist-info}/licenses/LICENSE.md +0 -0
  197. {webscout-8.2.8.dist-info → webscout-8.3.dist-info}/top_level.txt +0 -0
@@ -1,155 +0,0 @@
1
- """
2
- AsyncArtbitImager - Your go-to async provider for generating fire images with Artbit! ⚡
3
-
4
- Examples:
5
- >>> from webscout import AsyncArtbitImager
6
- >>> import asyncio
7
- >>>
8
- >>> async def example():
9
- ... # Initialize provider
10
- ... provider = AsyncArtbitImager()
11
- ...
12
- ... # Generate a single image
13
- ... images = await provider.generate("Cool art")
14
- ... paths = await provider.save(images)
15
- ...
16
- ... # Generate multiple images with parameters
17
- ... images = await provider.generate(
18
- ... prompt="Epic dragon in cyberpunk city",
19
- ... amount=3,
20
- ... caption_model="sdxl",
21
- ... selected_ratio="1024",
22
- ... negative_prompt="blurry, bad quality"
23
- ... )
24
- ... paths = await provider.save(images, name="dragon", dir="outputs")
25
- >>>
26
- >>> # Run the example
27
- >>> asyncio.run(example())
28
- """
29
-
30
- import aiohttp
31
- import aiofiles
32
- import asyncio
33
- import os
34
- from typing import Union, List
35
- from webscout.AIbase import AsyncImageProvider
36
- from webscout.litagent import LitAgent
37
-
38
- agent = LitAgent()
39
-
40
- class AsyncArtbitImager(AsyncImageProvider):
41
- """Your go-to async provider for generating fire images with Artbit! ⚡"""
42
-
43
- def __init__(self, timeout: int = 60, proxies: dict = {}):
44
- """Initialize your async Artbit provider with custom settings! ⚙️
45
-
46
- Args:
47
- timeout (int): Request timeout in seconds (default: 60)
48
- proxies (dict): Proxy settings for requests (default: {})
49
- """
50
- self.url = "https://artbit.ai/api/generateImage"
51
- self.headers = {
52
- "User-Agent": agent.random(),
53
- "Content-Type": "application/json",
54
- "Accept": "application/json"
55
- }
56
- self.timeout = timeout
57
- self.proxies = proxies
58
- self.prompt: str = "AI-generated image - webscout"
59
- self.image_extension: str = "png"
60
-
61
- async def generate(
62
- self,
63
- prompt: str,
64
- amount: int = 1,
65
- caption_model: str = "sdxl",
66
- selected_ratio: str = "1024",
67
- negative_prompt: str = ""
68
- ) -> List[str]:
69
- """Generate some fire images asynchronously! ⚡
70
-
71
- Args:
72
- prompt (str): Your lit image description
73
- amount (int): How many images to generate (default: 1)
74
- caption_model (str): Which model to use (default: "sdxl")
75
- selected_ratio (str): Image size ratio (default: "1024")
76
- negative_prompt (str): What you don't want in the image (default: "")
77
-
78
- Returns:
79
- List[str]: Your generated image URLs
80
- """
81
- assert bool(prompt), "Yo fam, prompt can't be empty! 🚫"
82
- assert isinstance(amount, int), f"Amount gotta be an integer, not {type(amount)} 🤔"
83
- assert amount > 0, "Amount gotta be greater than 0! 📈"
84
-
85
- self.prompt = prompt
86
- response: List[str] = []
87
-
88
- payload = {
89
- "captionInput": prompt,
90
- "captionModel": caption_model,
91
- "selectedRatio": selected_ratio,
92
- "selectedSamples": str(amount),
93
- "negative_prompt": negative_prompt
94
- }
95
-
96
- try:
97
- async with aiohttp.ClientSession(headers=self.headers) as session:
98
- async with session.post(self.url, json=payload, timeout=self.timeout) as resp:
99
- resp.raise_for_status()
100
- response_data = await resp.json()
101
- imgs = response_data.get("imgs", [])
102
- if imgs:
103
- response.extend(imgs)
104
-
105
- except aiohttp.ClientError as e:
106
- raise
107
-
108
- return response
109
-
110
- async def save(
111
- self,
112
- response: List[str],
113
- name: str = None,
114
- dir: str = os.getcwd(),
115
- filenames_prefix: str = "",
116
- ) -> List[str]:
117
- """Save your fire images asynchronously! 💾
118
-
119
- Args:
120
- response (List[str]): Your image URLs to save
121
- name (str, optional): Custom name (default: uses prompt)
122
- dir (str, optional): Where to save (default: current directory)
123
- filenames_prefix (str, optional): Add prefix to filenames
124
-
125
- Returns:
126
- List[str]: Where your images were saved
127
- """
128
- assert isinstance(response, list), f"Response gotta be a list, not {type(response)} 🤔"
129
- name = self.prompt if name is None else name
130
-
131
- filenames = []
132
- count = 0
133
-
134
- async with aiohttp.ClientSession(headers=self.headers) as session:
135
- for img_url in response:
136
- def complete_path():
137
- count_value = "" if count == 0 else f"_{count}"
138
- return os.path.join(dir, name + count_value + "." + self.image_extension)
139
-
140
- while os.path.isfile(complete_path()):
141
- count += 1
142
-
143
- absolute_path_to_file = complete_path()
144
- filenames.append(filenames_prefix + os.path.split(absolute_path_to_file)[1])
145
-
146
- try:
147
- async with session.get(img_url, timeout=self.timeout) as resp:
148
- resp.raise_for_status()
149
- async with aiofiles.open(absolute_path_to_file, "wb") as fh:
150
- await fh.write(await resp.read())
151
-
152
- except aiohttp.ClientError as e:
153
- raise
154
-
155
- return filenames
@@ -1,148 +0,0 @@
1
- """
2
- ArtbitImager - Your go-to provider for generating fire images with Artbit! 🔥
3
-
4
- Examples:
5
- >>> from webscout import ArtbitImager
6
- >>>
7
- >>> # Initialize provider
8
- >>> provider = ArtbitImager()
9
- >>>
10
- >>> # Generate a single image
11
- >>> images = provider.generate("Cool art")
12
- >>> paths = provider.save(images)
13
- >>>
14
- >>> # Generate multiple images with parameters
15
- >>> images = provider.generate(
16
- ... prompt="Epic dragon in cyberpunk city",
17
- ... amount=3,
18
- ... caption_model="sdxl",
19
- ... selected_ratio="1024",
20
- ... negative_prompt="blurry, bad quality"
21
- ... )
22
- >>> paths = provider.save(images, name="dragon", dir="outputs")
23
- """
24
-
25
- import cloudscraper
26
- import os
27
- import requests
28
- from typing import Union, List
29
- from webscout.AIbase import ImageProvider
30
- from webscout.litagent import LitAgent
31
-
32
- agent = LitAgent()
33
-
34
- class ArtbitImager(ImageProvider):
35
- """Your go-to provider for generating fire images with Artbit! 🔥"""
36
-
37
- def __init__(self, timeout: int = 60, proxies: dict = {}):
38
- """Initialize your Artbit provider with custom settings! ⚙️
39
-
40
- Args:
41
- timeout (int): Request timeout in seconds (default: 60)
42
- proxies (dict): Proxy settings for requests (default: {})
43
- """
44
- self.url = "https://artbit.ai/api/generateImage"
45
- self.scraper = cloudscraper.create_scraper()
46
- self.scraper.headers.update({"User-Agent": agent.random()})
47
- self.scraper.proxies.update(proxies)
48
- self.timeout = timeout
49
- self.prompt: str = "AI-generated image - webscout"
50
- self.image_extension: str = "png"
51
-
52
- def generate(
53
- self,
54
- prompt: str,
55
- amount: int = 1,
56
- caption_model: str = "sdxl",
57
- selected_ratio: str = "1024",
58
- negative_prompt: str = ""
59
- ) -> List[str]:
60
- """Generate some fire images! 🎨
61
-
62
- Args:
63
- prompt (str): Your lit image description
64
- amount (int): How many images to generate (default: 1)
65
- caption_model (str): Which model to use (default: "sdxl")
66
- selected_ratio (str): Image size ratio (default: "1024")
67
- negative_prompt (str): What you don't want in the image (default: "")
68
-
69
- Returns:
70
- List[str]: Your generated image URLs
71
- """
72
- assert bool(prompt), "Yo fam, prompt can't be empty! 🚫"
73
- assert isinstance(amount, int), f"Amount gotta be an integer, not {type(amount)} 🤔"
74
- assert amount > 0, "Amount gotta be greater than 0! 📈"
75
-
76
- self.prompt = prompt
77
- response: List[str] = []
78
-
79
- payload = {
80
- "captionInput": prompt,
81
- "captionModel": caption_model,
82
- "selectedRatio": selected_ratio,
83
- "selectedSamples": str(amount),
84
- "negative_prompt": negative_prompt
85
- }
86
-
87
- try:
88
- resp = self.scraper.post(self.url, json=payload, timeout=self.timeout)
89
- resp.raise_for_status()
90
-
91
- response_data = resp.json()
92
- imgs = response_data.get("imgs", [])
93
-
94
- if imgs:
95
- response.extend(imgs)
96
-
97
- except requests.RequestException as e:
98
- raise
99
-
100
- return response
101
-
102
- def save(
103
- self,
104
- response: List[str],
105
- name: str = None,
106
- dir: str = os.getcwd(),
107
- filenames_prefix: str = "",
108
- ) -> List[str]:
109
- """Save your fire images! 💾
110
-
111
- Args:
112
- response (List[str]): Your image URLs to save
113
- name (str, optional): Custom name (default: uses prompt)
114
- dir (str, optional): Where to save (default: current directory)
115
- filenames_prefix (str, optional): Add prefix to filenames
116
-
117
- Returns:
118
- List[str]: Where your images were saved
119
- """
120
- assert isinstance(response, list), f"Response gotta be a list, not {type(response)} 🤔"
121
- name = self.prompt if name is None else name
122
-
123
- filenames = []
124
- count = 0
125
-
126
- for img_url in response:
127
- def complete_path():
128
- count_value = "" if count == 0 else f"_{count}"
129
- return os.path.join(dir, name + count_value + "." + self.image_extension)
130
-
131
- while os.path.isfile(complete_path()):
132
- count += 1
133
-
134
- absolute_path_to_file = complete_path()
135
- filenames.append(filenames_prefix + os.path.split(absolute_path_to_file)[1])
136
-
137
- try:
138
- img_response = requests.get(img_url, stream=True, timeout=self.timeout)
139
- img_response.raise_for_status()
140
-
141
- with open(absolute_path_to_file, "wb") as fh:
142
- for chunk in img_response.iter_content(chunk_size=8192):
143
- fh.write(chunk)
144
-
145
- except requests.exceptions.RequestException as e:
146
- raise
147
-
148
- return filenames
@@ -1,129 +0,0 @@
1
- # 🎨 FastFlux Image Generator
2
-
3
- Generate amazing images with FastFlux's AI art generator! 🚀
4
-
5
- ## 🌟 Features
6
-
7
- - Fast and reliable image generation
8
- - Both sync and async implementations
9
- - Smart retry mechanism
10
- - Multiple model options
11
- - Different aspect ratios
12
- - Proxy support
13
- - Custom timeouts
14
- - Easy-to-use interface
15
-
16
- ## 📦 Installation
17
-
18
- ```bash
19
- pip install webscout
20
- ```
21
-
22
- ## 🚀 Quick Start
23
-
24
- ### Sync Usage
25
-
26
- ```python
27
- from webscout import FastFluxImager
28
-
29
- # Initialize the provider
30
- provider = FastFluxImager()
31
-
32
- # Generate a single image
33
- images = provider.generate("A beautiful sunset over mountains")
34
- paths = provider.save(images)
35
-
36
- # Generate multiple images with parameters
37
- images = provider.generate(
38
- prompt="Epic dragon breathing fire",
39
- amount=3,
40
- model="flux_1_dev",
41
- size="16_9"
42
- )
43
- paths = provider.save(images, dir="dragon_pics")
44
- ```
45
-
46
- ### Async Usage
47
-
48
- ```python
49
- from webscout import AsyncFastFluxImager
50
- import asyncio
51
-
52
- async def generate_images():
53
- provider = AsyncFastFluxImager()
54
-
55
- # Generate multiple images
56
- images = await provider.generate(
57
- "Epic dragon in cyberpunk city",
58
- amount=2,
59
- model="flux_1_schnell"
60
- )
61
- paths = await provider.save(images, dir="outputs")
62
-
63
- # Run the async function
64
- asyncio.run(generate_images())
65
- ```
66
-
67
- ## 🎨 Available Models
68
-
69
- - `flux_1_schnell` - Fast generation model (default)
70
- - `flux_1_dev` - Developer model with detailed outputs
71
- - `sana_1_6b` - SANA 1.6B model for specialized images
72
-
73
- ## ⚙️ Configuration
74
-
75
- ```python
76
- # Custom settings
77
- provider = FastFluxImager(
78
- timeout=120, # Longer timeout
79
- proxies={
80
- 'http': 'http://proxy:8080',
81
- 'https': 'http://proxy:8080'
82
- },
83
- logging=True # Enable logging
84
- )
85
-
86
- # Advanced usage
87
- images = provider.generate(
88
- prompt="A shiny red sports car",
89
- amount=3,
90
- model="flux_1_dev",
91
- size="16_9",
92
- is_public=False,
93
- max_retries=5,
94
- retry_delay=3
95
- )
96
- ```
97
-
98
- ## 💾 Save Options
99
-
100
- ```python
101
- # Save with custom options
102
- paths = provider.save(
103
- images,
104
- name="sports_car", # Custom name
105
- dir="my_images", # Custom directory
106
- filenames_prefix="v1_" # Add prefix
107
- )
108
- ```
109
-
110
- ## 🛡️ Error Handling
111
-
112
- ```python
113
- try:
114
- images = provider.generate("Cool art")
115
- paths = provider.save(images)
116
- except ValueError as e:
117
- print(f"Invalid input: {e}")
118
- except Exception as e:
119
- print(f"Generation failed: {e}")
120
- ```
121
-
122
- ## 💡 Tips
123
-
124
- 1. Use clear, descriptive prompts
125
- 2. `flux_1_schnell` is faster but `flux_1_dev` gives better quality
126
- 3. Set longer timeouts for better quality models
127
- 4. Enable proxies for better reliability
128
- 5. Use retry mechanism for stability
129
- 6. Save images with meaningful names
@@ -1,22 +0,0 @@
1
- """
2
- FastFlux Image Generator - Your go-to provider for generating fire images! 🔥
3
-
4
- Examples:
5
- >>> # Sync Usage
6
- >>> from webscout import FastFluxImager
7
- >>> provider = FastFluxImager()
8
- >>> images = provider.generate("Cool art")
9
- >>> paths = provider.save(images)
10
- >>>
11
- >>> # Async Usage
12
- >>> from webscout import AsyncFastFluxImager
13
- >>> async def example():
14
- ... provider = AsyncFastFluxImager()
15
- ... images = await provider.generate("Epic dragon")
16
- ... paths = await provider.save(images)
17
- """
18
-
19
- from .sync_fastflux import FastFluxImager
20
- from .async_fastflux import AsyncFastFluxImager
21
-
22
- __all__ = ["FastFluxImager", "AsyncFastFluxImager"]