Skip to content

服务接口

@mbjia/services

服务接口

服务接口来自 @mbjia/services,主要封装素材、上传、权益、AI 搜索、淘宝/轻应用和模板作品相关请求。

快速索引

模块典型接口说明
统一返回HttpDTO<T>服务端通用响应结构。
素材查询reqAssetItems查询素材列表。
创建素材reqAssetCreate上传完成后创建素材记录。
OSS TokenreqOSSKey获取上传凭证。
用户权益reqUserInforeqRights会员、点数和权益判断。
AI 搜索createAiSearchTasksubmitAiSearchTask创建、提交、轮询 AI 搜索任务。
OSS 上传工具uploadOSS获取 token、分片上传、可选创建素材。
视频拆分splittingMediaCostcreateSplittingJob查询扣费、创建拆分任务、提交和轮询。
视频抓取videoFetchergetVideoFetchercreateDownloadVideoJobId抖音/视频链接抓取、下载和结果轮询。
混剪作品reqCreateMixClipProduct创建混剪作品。
HTTP 客户端HttpCancelTokenisCancel底层请求封装和取消请求能力。

接口速查

函数入参返回值用途
reqAssetItemsIAssetSearchAssetListResponse查询素材列表。
reqAssetCreateIAssetCreateHttpDTO创建素材记录。
reqOSSKey{ upload_type; file_num }StsTokenResponse获取 OSS 上传凭证。
reqUserInfo业务用户参数用户信息获取当前用户信息。
reqRights-权益信息查询会员/点数权益。
reqVipBenefitDetail{ type }会员权益详情查询会员套餐权益。
reqRenderCharge{ record_ids }扣费/渲染信息下载或渲染前权益判断。
createAiSearchTaskAI 搜索任务参数任务信息创建 AI 搜索任务。
submitAiSearchTask{ task_id_list }提交结果提交 AI 搜索任务。
pollingAiSearchListByTaskId任务 id 和分页搜索结果轮询 AI 搜索结果。
uploadOSSFile[] | FileList、上传选项上传结果OSS 上传,可选创建素材。
splittingMediaCost拆分参数扣费信息查询镜头拆分所需点数。
createSplittingJob拆分任务参数任务信息创建拆分任务并扣费。
submitSplittingJob任务参数提交结果提交拆分任务。
getSplittingDetail任务参数拆分详情轮询拆分结果。
videoFetcher视频链接参数抓取任务提交视频抓取。
getVideoFetcher任务参数抓取详情轮询视频抓取结果。
getFetcherPoints{ user_asset_id; task_type? }点数信息查询视频抓取/下载所需点数。
createDownloadVideoJobId下载任务参数任务信息提交视频下载任务。
getVideoDownloadResult任务参数下载结果查询视频下载结果。

统一返回

服务端原始响应:

ts
type HttpDTO<T> = {
  errno: number
  errormsg: string
  data: T
}

HTTP 客户端

@mbjia/services 默认通过 Http() 获取单例 RequestClient

ts
import { Http, CancelToken, isCancel } from '@mbjia/services'

const data = await Http().post('/path/to/api', { id: 1 })

导出:

名称类型说明
Http() => RequestClient获取请求客户端单例。
CancelTokenaxios.CancelTokenAxios 取消请求 token。
isCancelaxios.isCancel判断是否取消请求。
RequestClientclass内部请求客户端,主要提供 post
formify(data: object) => FormData对象转 FormData。
errorHandler(error) => void | false统一错误处理函数。

RequestClient.post

ts
post<T>(
  url: string,
  data?: any,
  config?: AxiosRequestConfig,
  options?: { cancelRequest: () => void }
): Promise<T>

说明:

行为说明
baseURL来自 @mbjia/utils 导出的 env.host
timeout2 分钟。
客户端桥接存在 window.bridge.call 时使用客户端代理请求。
取消请求未传 cancelToken 时内部会创建一个。

素材查询

ts
reqAssetItems(params: IAssetSearch, cancelToken?: CancelToken)

入参:

ts
interface IAssetSearch {
  asset_cate: number
  asset_group?: string
  asset_type: number | number[]
  asset_style?: number
  dir_id?: string
  name?: string
  order_field?: string
  order_type?: number
  page: number
  page_size: number
  cid?: string[] | string
  industry_id?: string
  scale?: number[]
  replaceable_elements_number?: number
  searchType?: string
  searchRange?: string
  aiSearchCount?: number
  tag_id_list?: string[]
}

示例:

ts
const data = await reqAssetItems({
  asset_cate: 1,
  asset_type: [50, 51],
  page: 1,
  page_size: 20,
  order_field: 'create_time',
  order_type: 3,
})

创建素材

ts
reqAssetCreate(params: IAssetCreate)
ts
interface IAssetCreate {
  asset_style: number
  asset_type: number
  dir_id?: number
  name: string
  status?: number
  url: string
  rotate?: number
  from: 1 | 2
  is_need_rotate?: boolean
}

获取 OSS Token

ts
reqOSSKey({
  upload_type: 'mbjia_user_file',
  file_num: 1,
})

返回:

ts
{
  token: {
    access_key_id: string
    access_key_secret: string
    bucket: string
    domain: string
    expiration: string
    file_names: string[]
    path_prefix: string
    region: string
    security_token: string
  }
}

用户权益

ts
reqUserInfo(params)
reqRights()
reqVipBenefitDetail({ type })
reqRenderCharge({ record_ids })

这些接口用于会员、下载次数、点数扣费和权益判断。

AI 搜索

AI 搜索一般由 MbjiaApiManager 内部组合调用。

ts
createAiSearchTask({
  content: '商品近景',
  type: 0,
  dir_id: '123',
  organize_type: 1,
  organize_id: 10,
  search_range: 'current',
})
ts
submitAiSearchTask({
  task_id_list: ['task-id'],
})
ts
pollingAiSearchListByTaskId({
  task_id: 'task-id',
  page: 1,
  page_size: 20,
})

注意:源码类型里 pollingAiSearchListByTaskId 标注为 { task_id_list: string[] },但实际调用传的是 task_id。文档按实际使用提示。

淘宝/轻应用接口

ts
reqTaobaoStoreProductDetail({ goods_id })
reqTaobaoSearchFolder({ parent_id })
reqTaobaoSearchMaterial(params)
reqLightApplicationFolder({ parent_id })
reqLightApplicationMaterial(params)

素材搜索入参继承 IAssetSearch,并要求:

ts
interface TaobaoSearchMaterialReq extends IAssetSearch {
  asset_type: number
  page: number
  page_size: number
  parent_id?: number
  name: string
}

视频拆分接口

这些接口被 MediaSplittingFlowMediaSplittingModal 使用。

ts
splittingMediaCost(params)
createSplittingJob(params)
submitSplittingJob(params)
getSplittingDetail(params)
函数请求路径说明
splittingMediaCost/veasset/video-split/get-cost查询拆分扣费。
createSplittingJob/veasset/video-split/create-job创建拆分任务并扣费。
submitSplittingJob/veasset/video-split/submit提交拆分任务。
getSplittingDetail/veasset/video-split/detail查询拆分详情。

视频抓取接口

这些接口被 VideoCaptureFlowVideoCaptureModal 使用。

ts
videoFetcher(params)
getVideoFetcher(params)
getFetcherPoints({ user_asset_id, task_type })
createDownloadVideoJobId(params)
getVideoDownloadResult(params)
函数请求路径说明
videoFetcher/workbench/asset/video-fetcher提交视频抓取。
getVideoFetcher/workbench/asset/get-video-fetcher查询抓取结果。
getFetcherPoints/workbench/asset/get-video-fetcher-need-point查询抓取或下载所需点数。
getBatchCost/veasset/video-split/get-batch-cost批量拆分扣费。
getAssetIds/veasset/video-split/batch-filter批量拆分前过滤素材 id。
createDownloadVideoJobId/workbench/asset/download-video提交视频下载任务。
getVideoDownloadResult/workbench/asset/get-video-download-result查询视频下载结果。
getBatchCostDetail/veasset/video-split/get-cost-log查询批量拆分扣费明细。
batchCreateJob/veasset/video-split/batch-create-job创建批量拆分任务。

下载任务参数:

ts
interface CreateDownloadVideoParams {
  user_asset_id: string
  retry?: boolean
  task_source: string
  record_id?: string
}

混剪接口

ts
reqCreateMixClipProduct(params)
函数请求路径说明
reqCreateMixClipProduct/mix_clip/products/create创建混剪作品。

模块路径说明:

模块说明
mixed混剪接口模块。
captrueVideo视频抓取接口模块;源码目录名为 captrueVideo

模板与作品

创建作品:

ts
interface CreateProductParams {
  art_name: string
  cover_image?: string
  music_url?: string
  replaceable_json: string
  source?: number
  sticker_canvas_data?: string
  template_type?: number
  watermark_list: string
  template_id: string
  is_taobao: number
}

返回:

ts
interface CreateProductResponse {
  product: {
    art_name: string
    cover_image: string
    create_time: number
    id: number
    music_url: string
    replaceable_json: string
    template_id: number
    uid: string
    update_time: number
  }
}

OSS 上传工具

uploadOSS 会完成获取 STS Token、OSS 分片上传、断点续传和可选创建业务素材。

ts
await uploadOSS(files, {
  createAssetOptions: {
    assetType: 50,
    dirId: '0',
    rotate: false,
  },
  uploadType: 'mbjia_user_file',
  onProgress(percent, status, abort) {
    console.log(percent)
  },
})

返回值依上传路径而不同;底层 VeUploader.OssMultipartUpload_ 返回:

ts
interface VeAssetUploadRet {
  status: boolean
  file_name: string
  result?: unknown
  name?: unknown
  errInfo?: unknown
}

MBJIA Tools 文档