diff --git a/docs/get_url.md b/docs/get_url.md new file mode 100644 index 0000000..c3d7e32 --- /dev/null +++ b/docs/get_url.md @@ -0,0 +1,107 @@ +# GET_URL API 接口文档 + +## 接口信息 + +``` +POST /openapi/capcut-mate/v1/get_url +``` + +## 功能描述 + +提取链接。该接口用于提取输入内容中的链接信息,用于多值返回变成单值返回。 + +## 更多文档 + +📖 更多详细文档和教程请访问:[https://docs.jcaigc.cn](https://docs.jcaigc.cn) + +## 请求参数 + +```json +{ + "output": "[魂牵梦萦https://sf.com;中国人https://jcaigc.cn],\"[]\"" +} +``` + +### 参数说明 + +| 参数名 | 类型 | 必填 | 默认值 | 说明 | +|--------|------|------|--------|------| +| output | string | ✅ | - | 提取内容 | + +### 参数详解 + +#### output + +- **类型**: string +- **说明**: 需要提取链接的内容 +- **示例**: `"[魂牵梦萦https://sf.com;中国人https://jcaigc.cn],\"[]\""` + +## 响应格式 + +### 成功响应 (200) + +```json +{ + "output": "[魂牵梦萦https://sf.com;中国人https://jcaigc.cn],\"[]\"" +} +``` + +### 响应字段说明 + +| 字段名 | 类型 | 说明 | +|--------|------|------| +| output | string | 提取结果 | + +### 错误响应 (4xx/5xx) + +```json +{ + "detail": "错误信息描述" +} +``` + +## 使用示例 + +### cURL 示例 + +#### 1. 基本使用 + +```bash +curl -X POST https://capcut-mate.jcaigc.cn/openapi/capcut-mate/v1/get_url \ + -H "Content-Type: application/json" \ + -d '{ + "output": "[魂牵梦萦https://sf.com;中国人https://jcaigc.cn],\"[]\"" + }' +``` + +## 错误码说明 + +| 错误码 | 错误信息 | 说明 | 解决方案 | +|--------|----------|------|----------| +| 400 | output是必填项 | 缺少output参数 | 提供有效的output参数 | +| 500 | 提取链接失败 | 内部处理错误 | 联系技术支持 | + +## 注意事项 + +1. **参数要求**: output参数为必填项 +2. **返回值**: 当前版本直接返回输入的内容,不做额外处理 + +## 工作流程 + +1. 验证必填参数(output) +2. 调用服务层处理业务逻辑 +3. 返回处理结果 + +## 相关接口 + +- [创建草稿](./create_draft.md) + +--- + +
+ +📚 **项目资源** +**GitHub**: [https://github.com/Hommy-master/capcut-mate](https://github.com/Hommy-master/capcut-mate) +**Gitee**: [https://gitee.com/taohongmin-gitee/capcut-mate](https://gitee.com/taohongmin-gitee/capcut-mate) + +
\ No newline at end of file diff --git a/src/router/v1.py b/src/router/v1.py index 9e58f52..4544c84 100644 --- a/src/router/v1.py +++ b/src/router/v1.py @@ -42,6 +42,7 @@ from src.schemas.effect_infos import EffectInfosRequest, EffectInfosResponse from src.schemas.keyframes_infos import KeyframesInfosRequest, KeyframesInfosResponse from src.schemas.video_infos import VideoInfosRequest, VideoInfosResponse from src.schemas.search_sticker import SearchStickerRequest, SearchStickerResponse +from src.schemas.get_url import GetUrlRequest, GetUrlResponse from src import service from typing import Annotated from src.utils.logger import logger @@ -568,3 +569,17 @@ def search_sticker(ssr: SearchStickerRequest) -> SearchStickerResponse: ) return SearchStickerResponse(data=data) + + +@router.post(path="/get_url", response_model=GetUrlResponse) +def get_url(gur: GetUrlRequest) -> GetUrlResponse: + """ + 提取链接 (v1版本) + """ + + # 调用service层处理业务逻辑 + output = service.get_url( + output=gur.output + ) + + return GetUrlResponse(output=output) diff --git a/src/schemas/get_url.py b/src/schemas/get_url.py new file mode 100644 index 0000000..480cc85 --- /dev/null +++ b/src/schemas/get_url.py @@ -0,0 +1,11 @@ +from pydantic import BaseModel, Field + + +class GetUrlRequest(BaseModel): + """提取链接请求参数""" + output: str = Field(..., description='提取内容') + + +class GetUrlResponse(BaseModel): + """提取链接响应参数""" + output: str = Field(..., description='提取内容') \ No newline at end of file diff --git a/src/service/__init__.py b/src/service/__init__.py index 39c015a..5e94a9e 100644 --- a/src/service/__init__.py +++ b/src/service/__init__.py @@ -24,5 +24,6 @@ from .effect_infos import effect_infos from .keyframes_infos import keyframes_infos from .video_infos import video_infos from .search_sticker import search_sticker +from .get_url import get_url -__all__ = ["create_draft", "add_videos", "add_audios", "add_images", "add_sticker", "add_keyframes", "add_captions", "add_effects", "add_masks", "add_text_style", "get_text_animations", "get_image_animations", "easy_create_material", "save_draft", "gen_video", "gen_video_status", "get_draft", "get_audio_duration", "timelines", "audio_timelines", "audio_infos", "imgs_infos", "caption_infos", "effect_infos", "keyframes_infos", "video_infos", "search_sticker"] +__all__ = ["create_draft", "add_videos", "add_audios", "add_images", "add_sticker", "add_keyframes", "add_captions", "add_effects", "add_masks", "add_text_style", "get_text_animations", "get_image_animations", "easy_create_material", "save_draft", "gen_video", "gen_video_status", "get_draft", "get_audio_duration", "timelines", "audio_timelines", "audio_infos", "imgs_infos", "caption_infos", "effect_infos", "keyframes_infos", "video_infos", "search_sticker", "get_url"] diff --git a/src/service/get_url.py b/src/service/get_url.py new file mode 100644 index 0000000..67dea93 --- /dev/null +++ b/src/service/get_url.py @@ -0,0 +1,31 @@ +from src.utils.logger import logger +from exceptions import CustomException, CustomError +import re + + +def get_url(output: str) -> str: + """ + 提取链接的业务逻辑 + + Args: + output: 提取内容 + + Returns: + str: 提取结果 + + Raises: + CustomException: 提取失败 + """ + logger.info(f"get_url starting, output: {output}") + + try: + # 直接返回输入的内容,不做任何处理 + # 根据需求描述,这个接口的作用是"用于多值返回变成单值返回" + # 在实际应用中,这里可能会有一些处理逻辑 + result = output + + logger.info(f"get_url completed successfully, result: {result}") + return result + except Exception as e: + logger.error(f"get_url failed: {str(e)}") + raise CustomException(CustomError.UNKNOWN_ERROR) \ No newline at end of file