polyv-live-cli
Version:
CLI tool for managing PolyV live streaming services.
118 lines • 4.58 kB
JavaScript
;
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