wet-mcp 1.2.0__tar.gz → 1.3.0__tar.gz
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.
- {wet_mcp-1.2.0 → wet_mcp-1.3.0}/PKG-INFO +1 -1
- {wet_mcp-1.2.0 → wet_mcp-1.3.0}/pyproject.toml +1 -1
- {wet_mcp-1.2.0 → wet_mcp-1.3.0}/src/wet_mcp/sources/crawler.py +25 -12
- {wet_mcp-1.2.0 → wet_mcp-1.3.0}/.gitignore +0 -0
- {wet_mcp-1.2.0 → wet_mcp-1.3.0}/LICENSE +0 -0
- {wet_mcp-1.2.0 → wet_mcp-1.3.0}/README.md +0 -0
- {wet_mcp-1.2.0 → wet_mcp-1.3.0}/src/wet_mcp/__init__.py +0 -0
- {wet_mcp-1.2.0 → wet_mcp-1.3.0}/src/wet_mcp/__main__.py +0 -0
- {wet_mcp-1.2.0 → wet_mcp-1.3.0}/src/wet_mcp/config.py +0 -0
- {wet_mcp-1.2.0 → wet_mcp-1.3.0}/src/wet_mcp/docker_manager.py +0 -0
- {wet_mcp-1.2.0 → wet_mcp-1.3.0}/src/wet_mcp/docs/__init__.py +0 -0
- {wet_mcp-1.2.0 → wet_mcp-1.3.0}/src/wet_mcp/docs/help.md +0 -0
- {wet_mcp-1.2.0 → wet_mcp-1.3.0}/src/wet_mcp/docs/media.md +0 -0
- {wet_mcp-1.2.0 → wet_mcp-1.3.0}/src/wet_mcp/docs/web.md +0 -0
- {wet_mcp-1.2.0 → wet_mcp-1.3.0}/src/wet_mcp/llm.py +0 -0
- {wet_mcp-1.2.0 → wet_mcp-1.3.0}/src/wet_mcp/searxng_settings.yml +0 -0
- {wet_mcp-1.2.0 → wet_mcp-1.3.0}/src/wet_mcp/server.py +0 -0
- {wet_mcp-1.2.0 → wet_mcp-1.3.0}/src/wet_mcp/setup.py +0 -0
- {wet_mcp-1.2.0 → wet_mcp-1.3.0}/src/wet_mcp/sources/__init__.py +0 -0
- {wet_mcp-1.2.0 → wet_mcp-1.3.0}/src/wet_mcp/sources/searxng.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: wet-mcp
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.3.0
|
|
4
4
|
Summary: Open-source MCP Server thay thế Tavily - Web search, extract, crawl với SearXNG
|
|
5
5
|
Project-URL: Homepage, https://github.com/n24q02m/wet-mcp
|
|
6
6
|
Project-URL: Repository, https://github.com/n24q02m/wet-mcp.git
|
|
@@ -28,16 +28,17 @@ async def extract(
|
|
|
28
28
|
browser_config = BrowserConfig(
|
|
29
29
|
headless=True,
|
|
30
30
|
enable_stealth=stealth,
|
|
31
|
+
verbose=False,
|
|
31
32
|
)
|
|
32
33
|
|
|
33
34
|
results = []
|
|
34
35
|
|
|
35
|
-
async with AsyncWebCrawler(config=browser_config) as crawler:
|
|
36
|
+
async with AsyncWebCrawler(verbose=False, config=browser_config) as crawler:
|
|
36
37
|
for url in urls:
|
|
37
38
|
try:
|
|
38
39
|
result = await crawler.arun(
|
|
39
40
|
url,
|
|
40
|
-
config=CrawlerRunConfig(),
|
|
41
|
+
config=CrawlerRunConfig(verbose=False),
|
|
41
42
|
)
|
|
42
43
|
|
|
43
44
|
if result.success:
|
|
@@ -102,12 +103,13 @@ async def crawl(
|
|
|
102
103
|
browser_config = BrowserConfig(
|
|
103
104
|
headless=True,
|
|
104
105
|
enable_stealth=stealth,
|
|
106
|
+
verbose=False,
|
|
105
107
|
)
|
|
106
108
|
|
|
107
109
|
all_results = []
|
|
108
110
|
visited = set()
|
|
109
111
|
|
|
110
|
-
async with AsyncWebCrawler(config=browser_config) as crawler:
|
|
112
|
+
async with AsyncWebCrawler(verbose=False, config=browser_config) as crawler:
|
|
111
113
|
for root_url in urls:
|
|
112
114
|
to_crawl = [(root_url, 0)]
|
|
113
115
|
|
|
@@ -122,7 +124,7 @@ async def crawl(
|
|
|
122
124
|
try:
|
|
123
125
|
result = await crawler.arun(
|
|
124
126
|
url,
|
|
125
|
-
config=CrawlerRunConfig(),
|
|
127
|
+
config=CrawlerRunConfig(verbose=False),
|
|
126
128
|
)
|
|
127
129
|
|
|
128
130
|
if result.success:
|
|
@@ -179,12 +181,12 @@ async def sitemap(
|
|
|
179
181
|
|
|
180
182
|
logger.info(f"Mapping {len(urls)} URLs")
|
|
181
183
|
|
|
182
|
-
browser_config = BrowserConfig(headless=True)
|
|
184
|
+
browser_config = BrowserConfig(headless=True, verbose=False)
|
|
183
185
|
|
|
184
186
|
all_urls = []
|
|
185
187
|
visited = set()
|
|
186
188
|
|
|
187
|
-
async with AsyncWebCrawler(config=browser_config) as crawler:
|
|
189
|
+
async with AsyncWebCrawler(verbose=False, config=browser_config) as crawler:
|
|
188
190
|
for root_url in urls:
|
|
189
191
|
to_visit = [(root_url, 0)]
|
|
190
192
|
site_urls = []
|
|
@@ -201,7 +203,7 @@ async def sitemap(
|
|
|
201
203
|
try:
|
|
202
204
|
result = await crawler.arun(
|
|
203
205
|
url,
|
|
204
|
-
config=CrawlerRunConfig(),
|
|
206
|
+
config=CrawlerRunConfig(verbose=False),
|
|
205
207
|
)
|
|
206
208
|
|
|
207
209
|
if result.success and current_depth < depth:
|
|
@@ -237,12 +239,12 @@ async def list_media(
|
|
|
237
239
|
|
|
238
240
|
logger.info(f"Listing media from: {url}")
|
|
239
241
|
|
|
240
|
-
browser_config = BrowserConfig(headless=True)
|
|
242
|
+
browser_config = BrowserConfig(headless=True, verbose=False)
|
|
241
243
|
|
|
242
|
-
async with AsyncWebCrawler(config=browser_config) as crawler:
|
|
244
|
+
async with AsyncWebCrawler(verbose=False, config=browser_config) as crawler:
|
|
243
245
|
result = await crawler.arun(
|
|
244
246
|
url,
|
|
245
|
-
config=CrawlerRunConfig(),
|
|
247
|
+
config=CrawlerRunConfig(verbose=False),
|
|
246
248
|
)
|
|
247
249
|
|
|
248
250
|
if not result.success:
|
|
@@ -286,10 +288,21 @@ async def download_media(
|
|
|
286
288
|
|
|
287
289
|
results = []
|
|
288
290
|
|
|
289
|
-
|
|
291
|
+
transport = httpx.AsyncHTTPTransport(retries=3)
|
|
292
|
+
headers = {
|
|
293
|
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
async with httpx.AsyncClient(
|
|
297
|
+
timeout=60, transport=transport, headers=headers
|
|
298
|
+
) as client:
|
|
290
299
|
for url in media_urls:
|
|
291
300
|
try:
|
|
292
|
-
|
|
301
|
+
# Handle protocol-relative URLs
|
|
302
|
+
if url.startswith("//"):
|
|
303
|
+
url = f"https:{url}"
|
|
304
|
+
|
|
305
|
+
response = await client.get(url, follow_redirects=True)
|
|
293
306
|
response.raise_for_status()
|
|
294
307
|
|
|
295
308
|
filename = url.split("/")[-1].split("?")[0] or "download"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|