Skip to main content
Glama
README.md5.24 kB
# ShowDoc 数据获取核心模块 该模块提供了从 ShowDoc 自动获取接口文档数据的功能。 ## 安装依赖 ```bash # 推荐:从项目根目录安装 python -m pip install -r ../requirements.txt # 或在 core 目录内安装(兼容旧流程) python -m pip install -r requirements.txt ``` ### 验证码识别 项目使用 **ddddocr** 进行验证码识别,这是一个基于深度学习的通用验证码识别库: - 识别准确率高 - 支持多种验证码类型(数字、字母、混合等) - 无需额外安装 OCR 程序,纯 Python 实现 - 项目地址:https://github.com/sml2h3/ddddocr 安装依赖后即可使用,无需额外配置。 ## 使用方法 ### 基本使用 ```python from core import ShowDocClient # 初始化客户端(方式1:使用密码自动登录,默认密码 123456) base_url = "https://doc.cqfengli.com/web/#/90/" client = ShowDocClient(base_url, password="123456") # 或方式2:使用 Cookie cookie = "think_language=zh-CN; PHPSESSID=tg7ja3au64div38p58abmomtt6" client = ShowDocClient(base_url, cookie=cookie) # 获取所有接口数据 api_tree = client.get_all_apis() # 或者只获取指定节点的数据 api_tree = client.get_all_apis(node_name="订单") # 转换为字典格式 data = api_tree.to_dict() # 或者直接访问结构化的数据 for category in api_tree.categories: print(f"分类: {category.cat_name}") for page in category.pages: if page.api_info: print(f" - {page.page_title}: {page.api_info.method} {page.api_info.url}") ``` ### 获取指定节点的数据 ```python # 获取所有节点 api_tree = client.get_all_apis() # 或 client.get_all_apis("全部") 或 client.get_all_apis("all") # 获取指定节点(如"订单") api_tree = client.get_all_apis("订单") ``` ### 数据结构 返回的 `ApiTree` 对象包含: - `item_info`: 项目信息(ItemInfo) - `categories`: 分类列表(List[Category]) - 每个 `Category` 包含: - `cat_id`, `cat_name`, `level`, `parent_cat_id` - `pages`: 页面列表(List[Page]) - `children`: 子分类列表(List[Category]) - 每个 `Page` 包含: - `page_id`, `page_title` - `api_info`: API 定义(ApiDefinition,如果不是 API 页面则为 None) - `method`: HTTP 方法(GET, POST 等) - `url`: 接口 URL - `request`: 请求参数信息 - `response`: 响应信息 ## API 方法 ### ShowDocClient #### `__init__(base_url: str, cookie: Optional[str] = None, password: Optional[str] = "123456")` 初始化客户端。 - `base_url`: ShowDoc 文档页面 URL,支持多种格式: - 标准格式:`"https://doc.cqfengli.com/web/#/90/"` - 登录页面格式:`"https://doc.cqfengli.com/web/#/item/password/88?page_id=4091"` - `cookie`: 认证 Cookie(可选),例如 `"think_language=zh-CN; PHPSESSID=xxx"` - `password`: 项目访问密码(可选,默认: "123456"),如果提供且 cookie 为空,将自动进行验证码登录 **Cookie 自动管理**: - 登录成功后的 Cookie 会自动保存到本地文件 `output/.showdoc_cookies.json` - 下次运行时,如果 Cookie 有效且未过期,会自动复用,无需重新登录 - Cookie 优先级:传入的 Cookie > 保存的 Cookie > 密码登录 - Cookie 默认过期时间:24 小时 #### `get_all_apis(node_name: Optional[str] = None) -> ApiTree` 获取所有接口数据(主入口方法)。 - `node_name`: 节点名称(分类名称) - `None` / `"全部"` / `"all"`: 获取所有节点 - 具体名称(如 `"订单"`): 只获取该节点及其子节点的数据 - 返回: `ApiTree` 对象 #### `fetch_homepage() -> Dict[str, Any]` 访问主页面获取配置信息。 #### `fetch_item_info(item_id: Optional[str] = None) -> Dict[str, Any]` 获取文档目录结构。 #### `fetch_page_info(page_id: str) -> Dict[str, Any]` 获取单个页面的详细信息。 ## 异常处理 模块定义了以下自定义异常: - `ShowDocError`: 基础异常类 - `ShowDocAuthError`: 认证错误(Cookie 无效等) - `ShowDocNotFoundError`: 资源未找到(节点、页面不存在等) - `ShowDocParseError`: 数据解析错误 - `ShowDocNetworkError`: 网络请求错误 使用示例: ```python from core import ShowDocClient, ShowDocNotFoundError, ShowDocAuthError try: client = ShowDocClient(base_url, password="123456") api_tree = client.get_all_apis("订单") except ShowDocNotFoundError as e: print(f"节点不存在: {e}") except ShowDocAuthError as e: print(f"认证失败: {e}") except Exception as e: print(f"其他错误: {e}") ``` ## 验证码调试 - 使用 ddddocr 进行验证码识别,支持多种验证码类型 - 登录失败(验证码错误或识别异常)时,会自动重试并将失败的验证码图片保存到 `output/captcha_debug/` 目录,便于人工排查 - 每次运行程序时会自动清理旧的调试目录,只保留当前会话的调试信息 - 可通过环境变量修改保存目录: ```bash # PowerShell $env:SHOWDOC_CAPTCHA_DEBUG_DIR="D:\tmp\captcha_debug" ``` - 如果验证码持续无法识别,可在 `core/test.py` 中直接配置 COOKIE,或手动输入验证码

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/yfcyfc123234/showdoc_mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server