Track bundled vendor runtime sources
This commit is contained in:
34
vendor/Agent-Reach/agent_reach/channels/web.py
vendored
Normal file
34
vendor/Agent-Reach/agent_reach/channels/web.py
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""Web — any URL via Jina Reader. Always available."""
|
||||
|
||||
import urllib.request
|
||||
from .base import Channel
|
||||
|
||||
_UA = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36"
|
||||
|
||||
|
||||
class WebChannel(Channel):
|
||||
name = "web"
|
||||
description = "任意网页"
|
||||
backends = ["Jina Reader"]
|
||||
tier = 0
|
||||
|
||||
def can_handle(self, url: str) -> bool:
|
||||
return True # Fallback — handles any URL
|
||||
|
||||
def check(self, config=None):
|
||||
# 恒可用兜底渠道:无本地命令、不做网络探测(doctor 已有多个渠道触网),保持零开销
|
||||
self.active_backend = self.backends[0]
|
||||
return "ok", "通过 Jina Reader 读取任意网页(curl https://r.jina.ai/URL)"
|
||||
|
||||
def read(self, url: str) -> str:
|
||||
"""通过 Jina Reader 读取网页,返回 Markdown 全文。"""
|
||||
if not url.startswith(("http://", "https://")):
|
||||
url = "https://" + url
|
||||
jina_url = f"https://r.jina.ai/{url}"
|
||||
req = urllib.request.Request(
|
||||
jina_url,
|
||||
headers={"User-Agent": _UA, "Accept": "text/plain"},
|
||||
)
|
||||
with urllib.request.urlopen(req, timeout=30) as resp:
|
||||
return resp.read().decode("utf-8")
|
||||
Reference in New Issue
Block a user