UNPKG

polyv-live-cli

Version:

CLI tool for managing PolyV live streaming services.

118 lines 4.58 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AIVideoProduceServiceSdk = void 0; const polyv_live_api_sdk_1 = require("polyv-live-api-sdk"); class AIVideoProduceServiceSdk { constructor(authConfig, config) { this.client = new polyv_live_api_sdk_1.PolyVClient({ appId: authConfig.appId, appSecret: authConfig.appSecret, baseUrl: config?.baseUrl || 'https://api.polyv.net', }); this.v4Ai = this.client.v4Ai; } async listTtsVoices(pageNumber = 1, pageSize = 10) { this.validatePagination(pageNumber, pageSize); const result = await this.v4Ai.listTtsVoices({ pageNumber, pageSize }); return this.unwrapData(result) || []; } async listVideoProduces(params = {}) { const pageNumber = params.pageNumber || 1; const pageSize = params.pageSize || 10; this.validatePagination(pageNumber, pageSize); const request = { pageNumber, pageSize, }; if (params.videoName) request.videoName = params.videoName; if (params.status !== undefined) request.status = params.status; if (params.createTimeStart !== undefined) request.createTimeStart = params.createTimeStart; if (params.createTimeEnd !== undefined) request.createTimeEnd = params.createTimeEnd; if (params.tags && params.tags.length > 0) request.tags = params.tags; const result = await this.v4Ai.listVideoProduces(request); return this.unwrapData(result) || this.emptyPage(pageNumber, pageSize); } async getVideoProduce(id) { this.validatePositiveInteger(id, 'id'); const result = await this.v4Ai.getVideoProduce({ id }); return this.unwrapData(result); } async batchCreateVideoProduces(tasks) { if (!Array.isArray(tasks) || tasks.length === 0) { throw new Error('tasks must be a non-empty array'); } if (tasks.length > 20) { throw new Error('tasks cannot contain more than 20 items'); } const result = await this.v4Ai.batchCreateVideoProduces({ tasks }); return this.unwrapData(result) || { success: true, createdCount: tasks.length, }; } async deleteVideoProduce(id) { this.validatePositiveInteger(id, 'id'); const params = { id }; await this.v4Ai.deleteVideoProduce(params); return true; } async listVideoProducePpts(pageNumber = 1, pageSize = 10) { this.validatePagination(pageNumber, pageSize); const result = await this.v4Ai.listVideoProducePpts({ pageNumber, pageSize }); return this.unwrapData(result) || this.emptyPage(pageNumber, pageSize); } async getVideoProducePpt(fileId) { this.validateNonEmptyString(fileId, 'fileId'); const result = await this.v4Ai.getVideoProducePpt({ fileId }); return this.unwrapData(result); } async uploadVideoProducePpt(params) { this.validateNonEmptyString(params.url, 'url'); const result = await this.v4Ai.uploadVideoProducePpt(params); return this.unwrapData(result); } async asyncUploadVideoProducePpt(params) { this.validateNonEmptyString(params.url, 'url'); const result = await this.v4Ai.asyncUploadVideoProducePpt(params); return this.unwrapData(result); } validatePagination(pageNumber, pageSize) { this.validatePositiveInteger(pageNumber, 'pageNumber'); this.validatePositiveInteger(pageSize, 'pageSize'); if (pageSize > 1000) { throw new Error('pageSize must be between 1 and 1000'); } } validatePositiveInteger(value, field) { if (!Number.isInteger(value) || value < 1) { throw new Error(`${field} must be a positive integer`); } } validateNonEmptyString(value, field) { if (!value || value.trim() === '') { throw new Error(`${field} is required`); } } emptyPage(pageNumber, pageSize) { return { pageNumber, pageSize, totalPages: 0, totalItems: 0, contents: [], }; } unwrapData(value) { if (value && typeof value === 'object' && 'data' in value) { return value.data; } return value; } } exports.AIVideoProduceServiceSdk = AIVideoProduceServiceSdk; //# sourceMappingURL=ai-video-produce-service.js.map