videorecog-20200320/Sources/AlibabacloudVideorecog20200320/Client.swift (679 lines of code) (raw):

import Foundation import Tea import TeaUtils import AlibabaCloudOssSdk import AlibabacloudOpenPlatform20191219 import AlibabaCloudOSSUtil import TeaFileForm import AlibabacloudOpenApi import AlibabaCloudOpenApiUtil import AlibabacloudEndpointUtil open class Client : AlibabacloudOpenApi.Client { public override init(_ config: AlibabacloudOpenApi.Config) throws { try super.init(config) self._endpointRule = "regional" try checkConfig(config as! AlibabacloudOpenApi.Config) self._endpoint = try getEndpoint("videorecog", self._regionId ?? "", self._endpointRule ?? "", self._network ?? "", self._suffix ?? "", self._endpointMap ?? [:], self._endpoint ?? "") } public func getEndpoint(_ productId: String, _ regionId: String, _ endpointRule: String, _ network: String, _ suffix: String, _ endpointMap: [String: String], _ endpoint: String) throws -> String { if (!TeaUtils.Client.empty(endpoint)) { return endpoint as! String } if (!TeaUtils.Client.isUnset(endpointMap) && !TeaUtils.Client.empty(endpointMap[regionId as! String])) { return endpointMap[regionId as! String] ?? "" } return try AlibabacloudEndpointUtil.Client.getEndpointRules(productId, regionId, endpointRule, network, suffix) } @available(macOS 10.15, iOS 13, tvOS 13, watchOS 6, *) public func detectVideoShotWithOptions(_ request: DetectVideoShotRequest, _ runtime: TeaUtils.RuntimeOptions) async throws -> DetectVideoShotResponse { try TeaUtils.Client.validateModel(request) var body: [String: Any] = [:] if (!TeaUtils.Client.isUnset(request.videoUrl)) { body["VideoUrl"] = request.videoUrl ?? ""; } var req: AlibabacloudOpenApi.OpenApiRequest = AlibabacloudOpenApi.OpenApiRequest([ "body": AlibabaCloudOpenApiUtil.Client.parseToMap(body) ]) var params: AlibabacloudOpenApi.Params = AlibabacloudOpenApi.Params([ "action": "DetectVideoShot", "version": "2020-03-20", "protocol": "HTTPS", "pathname": "/", "method": "POST", "authType": "AK", "style": "RPC", "reqBodyType": "formData", "bodyType": "json" ]) var tmp: [String: Any] = try await callApi(params as! AlibabacloudOpenApi.Params, req as! AlibabacloudOpenApi.OpenApiRequest, runtime as! TeaUtils.RuntimeOptions) return Tea.TeaConverter.fromMap(DetectVideoShotResponse(), tmp) } @available(macOS 10.15, iOS 13, tvOS 13, watchOS 6, *) public func detectVideoShot(_ request: DetectVideoShotRequest) async throws -> DetectVideoShotResponse { var runtime: TeaUtils.RuntimeOptions = TeaUtils.RuntimeOptions([:]) return try await detectVideoShotWithOptions(request as! DetectVideoShotRequest, runtime as! TeaUtils.RuntimeOptions) } @available(macOS 10.15, iOS 13, tvOS 13, watchOS 6, *) public func detectVideoShotAdvance(_ request: DetectVideoShotAdvanceRequest, _ runtime: TeaUtils.RuntimeOptions) async throws -> DetectVideoShotResponse { var accessKeyId: String = try await self._credential!.getAccessKeyId() var accessKeySecret: String = try await self._credential!.getAccessKeySecret() var securityToken: String = try await self._credential!.getSecurityToken() var credentialType: String = self._credential!.getType() var openPlatformEndpoint: String = self._openPlatformEndpoint ?? "" if (TeaUtils.Client.empty(openPlatformEndpoint)) { openPlatformEndpoint = "openplatform.aliyuncs.com" } if (TeaUtils.Client.isUnset(credentialType)) { credentialType = "access_key" } var authConfig: AlibabacloudOpenApi.Config = AlibabacloudOpenApi.Config([ "accessKeyId": accessKeyId as! String, "accessKeySecret": accessKeySecret as! String, "securityToken": securityToken as! String, "type": credentialType as! String, "endpoint": openPlatformEndpoint as! String, "protocol": self._protocol ?? "", "regionId": self._regionId ?? "" ]) var authClient: AlibabacloudOpenPlatform20191219.Client = try AlibabacloudOpenPlatform20191219.Client(authConfig) var authRequest: AlibabacloudOpenPlatform20191219.AuthorizeFileUploadRequest = AlibabacloudOpenPlatform20191219.AuthorizeFileUploadRequest([ "product": "videorecog", "regionId": self._regionId ?? "" ]) var authResponse: AlibabacloudOpenPlatform20191219.AuthorizeFileUploadResponse = AlibabacloudOpenPlatform20191219.AuthorizeFileUploadResponse([:]) var ossConfig: AlibabaCloudOssSdk.Config = AlibabaCloudOssSdk.Config([ "accessKeyId": accessKeyId as! String, "accessKeySecret": accessKeySecret as! String, "type": "access_key", "protocol": self._protocol ?? "", "regionId": self._regionId ?? "" ]) var ossClient: AlibabaCloudOssSdk.Client = try AlibabaCloudOssSdk.Client(ossConfig) var fileObj: TeaFileForm.FileField = TeaFileForm.FileField([:]) var ossHeader: AlibabaCloudOssSdk.PostObjectRequest.Header = AlibabaCloudOssSdk.PostObjectRequest.Header([:]) var uploadRequest: AlibabaCloudOssSdk.PostObjectRequest = AlibabaCloudOssSdk.PostObjectRequest([:]) var ossRuntime: AlibabaCloudOSSUtil.RuntimeOptions = AlibabaCloudOSSUtil.RuntimeOptions([:]) AlibabaCloudOpenApiUtil.Client.convert(runtime, ossRuntime) var detectVideoShotReq: DetectVideoShotRequest = DetectVideoShotRequest([:]) AlibabaCloudOpenApiUtil.Client.convert(request, detectVideoShotReq) if (!TeaUtils.Client.isUnset(request.videoUrlObject)) { authResponse = try await authClient.authorizeFileUploadWithOptions(authRequest as! AlibabacloudOpenPlatform20191219.AuthorizeFileUploadRequest, runtime as! TeaUtils.RuntimeOptions) ossConfig.accessKeyId = authResponse.body!.accessKeyId ossConfig.endpoint = AlibabaCloudOpenApiUtil.Client.getEndpoint(authResponse.body!.endpoint, authResponse.body!.useAccelerate, self._endpointType) ossClient = try AlibabaCloudOssSdk.Client(ossConfig) fileObj = TeaFileForm.FileField([ "filename": authResponse.body!.objectKey ?? "", "content": request.videoUrlObject!, "contentType": "" ]) ossHeader = AlibabaCloudOssSdk.PostObjectRequest.Header([ "accessKeyId": authResponse.body!.accessKeyId ?? "", "policy": authResponse.body!.encodedPolicy ?? "", "signature": authResponse.body!.signature ?? "", "key": authResponse.body!.objectKey ?? "", "file": fileObj as! TeaFileForm.FileField, "successActionStatus": "201" ]) uploadRequest = AlibabaCloudOssSdk.PostObjectRequest([ "bucketName": authResponse.body!.bucket ?? "", "header": ossHeader as! AlibabaCloudOssSdk.PostObjectRequest.Header ]) try await ossClient.postObject(uploadRequest as! AlibabaCloudOssSdk.PostObjectRequest, ossRuntime as! AlibabaCloudOSSUtil.RuntimeOptions) detectVideoShotReq.videoUrl = "http://" + (authResponse.body!.bucket ?? "") + "." + (authResponse.body!.endpoint ?? "") + "/" + (authResponse.body!.objectKey ?? "") } var detectVideoShotResp: DetectVideoShotResponse = try await detectVideoShotWithOptions(detectVideoShotReq as! DetectVideoShotRequest, runtime as! TeaUtils.RuntimeOptions) return detectVideoShotResp as! DetectVideoShotResponse } @available(macOS 10.15, iOS 13, tvOS 13, watchOS 6, *) public func evaluateVideoQualityWithOptions(_ request: EvaluateVideoQualityRequest, _ runtime: TeaUtils.RuntimeOptions) async throws -> EvaluateVideoQualityResponse { try TeaUtils.Client.validateModel(request) var body: [String: Any] = [:] if (!TeaUtils.Client.isUnset(request.mode)) { body["Mode"] = request.mode ?? ""; } if (!TeaUtils.Client.isUnset(request.videoUrl)) { body["VideoUrl"] = request.videoUrl ?? ""; } var req: AlibabacloudOpenApi.OpenApiRequest = AlibabacloudOpenApi.OpenApiRequest([ "body": AlibabaCloudOpenApiUtil.Client.parseToMap(body) ]) var params: AlibabacloudOpenApi.Params = AlibabacloudOpenApi.Params([ "action": "EvaluateVideoQuality", "version": "2020-03-20", "protocol": "HTTPS", "pathname": "/", "method": "POST", "authType": "AK", "style": "RPC", "reqBodyType": "formData", "bodyType": "json" ]) var tmp: [String: Any] = try await callApi(params as! AlibabacloudOpenApi.Params, req as! AlibabacloudOpenApi.OpenApiRequest, runtime as! TeaUtils.RuntimeOptions) return Tea.TeaConverter.fromMap(EvaluateVideoQualityResponse(), tmp) } @available(macOS 10.15, iOS 13, tvOS 13, watchOS 6, *) public func evaluateVideoQuality(_ request: EvaluateVideoQualityRequest) async throws -> EvaluateVideoQualityResponse { var runtime: TeaUtils.RuntimeOptions = TeaUtils.RuntimeOptions([:]) return try await evaluateVideoQualityWithOptions(request as! EvaluateVideoQualityRequest, runtime as! TeaUtils.RuntimeOptions) } @available(macOS 10.15, iOS 13, tvOS 13, watchOS 6, *) public func evaluateVideoQualityAdvance(_ request: EvaluateVideoQualityAdvanceRequest, _ runtime: TeaUtils.RuntimeOptions) async throws -> EvaluateVideoQualityResponse { var accessKeyId: String = try await self._credential!.getAccessKeyId() var accessKeySecret: String = try await self._credential!.getAccessKeySecret() var securityToken: String = try await self._credential!.getSecurityToken() var credentialType: String = self._credential!.getType() var openPlatformEndpoint: String = self._openPlatformEndpoint ?? "" if (TeaUtils.Client.empty(openPlatformEndpoint)) { openPlatformEndpoint = "openplatform.aliyuncs.com" } if (TeaUtils.Client.isUnset(credentialType)) { credentialType = "access_key" } var authConfig: AlibabacloudOpenApi.Config = AlibabacloudOpenApi.Config([ "accessKeyId": accessKeyId as! String, "accessKeySecret": accessKeySecret as! String, "securityToken": securityToken as! String, "type": credentialType as! String, "endpoint": openPlatformEndpoint as! String, "protocol": self._protocol ?? "", "regionId": self._regionId ?? "" ]) var authClient: AlibabacloudOpenPlatform20191219.Client = try AlibabacloudOpenPlatform20191219.Client(authConfig) var authRequest: AlibabacloudOpenPlatform20191219.AuthorizeFileUploadRequest = AlibabacloudOpenPlatform20191219.AuthorizeFileUploadRequest([ "product": "videorecog", "regionId": self._regionId ?? "" ]) var authResponse: AlibabacloudOpenPlatform20191219.AuthorizeFileUploadResponse = AlibabacloudOpenPlatform20191219.AuthorizeFileUploadResponse([:]) var ossConfig: AlibabaCloudOssSdk.Config = AlibabaCloudOssSdk.Config([ "accessKeyId": accessKeyId as! String, "accessKeySecret": accessKeySecret as! String, "type": "access_key", "protocol": self._protocol ?? "", "regionId": self._regionId ?? "" ]) var ossClient: AlibabaCloudOssSdk.Client = try AlibabaCloudOssSdk.Client(ossConfig) var fileObj: TeaFileForm.FileField = TeaFileForm.FileField([:]) var ossHeader: AlibabaCloudOssSdk.PostObjectRequest.Header = AlibabaCloudOssSdk.PostObjectRequest.Header([:]) var uploadRequest: AlibabaCloudOssSdk.PostObjectRequest = AlibabaCloudOssSdk.PostObjectRequest([:]) var ossRuntime: AlibabaCloudOSSUtil.RuntimeOptions = AlibabaCloudOSSUtil.RuntimeOptions([:]) AlibabaCloudOpenApiUtil.Client.convert(runtime, ossRuntime) var evaluateVideoQualityReq: EvaluateVideoQualityRequest = EvaluateVideoQualityRequest([:]) AlibabaCloudOpenApiUtil.Client.convert(request, evaluateVideoQualityReq) if (!TeaUtils.Client.isUnset(request.videoUrlObject)) { authResponse = try await authClient.authorizeFileUploadWithOptions(authRequest as! AlibabacloudOpenPlatform20191219.AuthorizeFileUploadRequest, runtime as! TeaUtils.RuntimeOptions) ossConfig.accessKeyId = authResponse.body!.accessKeyId ossConfig.endpoint = AlibabaCloudOpenApiUtil.Client.getEndpoint(authResponse.body!.endpoint, authResponse.body!.useAccelerate, self._endpointType) ossClient = try AlibabaCloudOssSdk.Client(ossConfig) fileObj = TeaFileForm.FileField([ "filename": authResponse.body!.objectKey ?? "", "content": request.videoUrlObject!, "contentType": "" ]) ossHeader = AlibabaCloudOssSdk.PostObjectRequest.Header([ "accessKeyId": authResponse.body!.accessKeyId ?? "", "policy": authResponse.body!.encodedPolicy ?? "", "signature": authResponse.body!.signature ?? "", "key": authResponse.body!.objectKey ?? "", "file": fileObj as! TeaFileForm.FileField, "successActionStatus": "201" ]) uploadRequest = AlibabaCloudOssSdk.PostObjectRequest([ "bucketName": authResponse.body!.bucket ?? "", "header": ossHeader as! AlibabaCloudOssSdk.PostObjectRequest.Header ]) try await ossClient.postObject(uploadRequest as! AlibabaCloudOssSdk.PostObjectRequest, ossRuntime as! AlibabaCloudOSSUtil.RuntimeOptions) evaluateVideoQualityReq.videoUrl = "http://" + (authResponse.body!.bucket ?? "") + "." + (authResponse.body!.endpoint ?? "") + "/" + (authResponse.body!.objectKey ?? "") } var evaluateVideoQualityResp: EvaluateVideoQualityResponse = try await evaluateVideoQualityWithOptions(evaluateVideoQualityReq as! EvaluateVideoQualityRequest, runtime as! TeaUtils.RuntimeOptions) return evaluateVideoQualityResp as! EvaluateVideoQualityResponse } @available(macOS 10.15, iOS 13, tvOS 13, watchOS 6, *) public func generateVideoCoverWithOptions(_ request: GenerateVideoCoverRequest, _ runtime: TeaUtils.RuntimeOptions) async throws -> GenerateVideoCoverResponse { try TeaUtils.Client.validateModel(request) var body: [String: Any] = [:] if (!TeaUtils.Client.isUnset(request.isGif)) { body["IsGif"] = request.isGif!; } if (!TeaUtils.Client.isUnset(request.videoUrl)) { body["VideoUrl"] = request.videoUrl ?? ""; } var req: AlibabacloudOpenApi.OpenApiRequest = AlibabacloudOpenApi.OpenApiRequest([ "body": AlibabaCloudOpenApiUtil.Client.parseToMap(body) ]) var params: AlibabacloudOpenApi.Params = AlibabacloudOpenApi.Params([ "action": "GenerateVideoCover", "version": "2020-03-20", "protocol": "HTTPS", "pathname": "/", "method": "POST", "authType": "AK", "style": "RPC", "reqBodyType": "formData", "bodyType": "json" ]) var tmp: [String: Any] = try await callApi(params as! AlibabacloudOpenApi.Params, req as! AlibabacloudOpenApi.OpenApiRequest, runtime as! TeaUtils.RuntimeOptions) return Tea.TeaConverter.fromMap(GenerateVideoCoverResponse(), tmp) } @available(macOS 10.15, iOS 13, tvOS 13, watchOS 6, *) public func generateVideoCover(_ request: GenerateVideoCoverRequest) async throws -> GenerateVideoCoverResponse { var runtime: TeaUtils.RuntimeOptions = TeaUtils.RuntimeOptions([:]) return try await generateVideoCoverWithOptions(request as! GenerateVideoCoverRequest, runtime as! TeaUtils.RuntimeOptions) } @available(macOS 10.15, iOS 13, tvOS 13, watchOS 6, *) public func generateVideoCoverAdvance(_ request: GenerateVideoCoverAdvanceRequest, _ runtime: TeaUtils.RuntimeOptions) async throws -> GenerateVideoCoverResponse { var accessKeyId: String = try await self._credential!.getAccessKeyId() var accessKeySecret: String = try await self._credential!.getAccessKeySecret() var securityToken: String = try await self._credential!.getSecurityToken() var credentialType: String = self._credential!.getType() var openPlatformEndpoint: String = self._openPlatformEndpoint ?? "" if (TeaUtils.Client.empty(openPlatformEndpoint)) { openPlatformEndpoint = "openplatform.aliyuncs.com" } if (TeaUtils.Client.isUnset(credentialType)) { credentialType = "access_key" } var authConfig: AlibabacloudOpenApi.Config = AlibabacloudOpenApi.Config([ "accessKeyId": accessKeyId as! String, "accessKeySecret": accessKeySecret as! String, "securityToken": securityToken as! String, "type": credentialType as! String, "endpoint": openPlatformEndpoint as! String, "protocol": self._protocol ?? "", "regionId": self._regionId ?? "" ]) var authClient: AlibabacloudOpenPlatform20191219.Client = try AlibabacloudOpenPlatform20191219.Client(authConfig) var authRequest: AlibabacloudOpenPlatform20191219.AuthorizeFileUploadRequest = AlibabacloudOpenPlatform20191219.AuthorizeFileUploadRequest([ "product": "videorecog", "regionId": self._regionId ?? "" ]) var authResponse: AlibabacloudOpenPlatform20191219.AuthorizeFileUploadResponse = AlibabacloudOpenPlatform20191219.AuthorizeFileUploadResponse([:]) var ossConfig: AlibabaCloudOssSdk.Config = AlibabaCloudOssSdk.Config([ "accessKeyId": accessKeyId as! String, "accessKeySecret": accessKeySecret as! String, "type": "access_key", "protocol": self._protocol ?? "", "regionId": self._regionId ?? "" ]) var ossClient: AlibabaCloudOssSdk.Client = try AlibabaCloudOssSdk.Client(ossConfig) var fileObj: TeaFileForm.FileField = TeaFileForm.FileField([:]) var ossHeader: AlibabaCloudOssSdk.PostObjectRequest.Header = AlibabaCloudOssSdk.PostObjectRequest.Header([:]) var uploadRequest: AlibabaCloudOssSdk.PostObjectRequest = AlibabaCloudOssSdk.PostObjectRequest([:]) var ossRuntime: AlibabaCloudOSSUtil.RuntimeOptions = AlibabaCloudOSSUtil.RuntimeOptions([:]) AlibabaCloudOpenApiUtil.Client.convert(runtime, ossRuntime) var generateVideoCoverReq: GenerateVideoCoverRequest = GenerateVideoCoverRequest([:]) AlibabaCloudOpenApiUtil.Client.convert(request, generateVideoCoverReq) if (!TeaUtils.Client.isUnset(request.videoUrlObject)) { authResponse = try await authClient.authorizeFileUploadWithOptions(authRequest as! AlibabacloudOpenPlatform20191219.AuthorizeFileUploadRequest, runtime as! TeaUtils.RuntimeOptions) ossConfig.accessKeyId = authResponse.body!.accessKeyId ossConfig.endpoint = AlibabaCloudOpenApiUtil.Client.getEndpoint(authResponse.body!.endpoint, authResponse.body!.useAccelerate, self._endpointType) ossClient = try AlibabaCloudOssSdk.Client(ossConfig) fileObj = TeaFileForm.FileField([ "filename": authResponse.body!.objectKey ?? "", "content": request.videoUrlObject!, "contentType": "" ]) ossHeader = AlibabaCloudOssSdk.PostObjectRequest.Header([ "accessKeyId": authResponse.body!.accessKeyId ?? "", "policy": authResponse.body!.encodedPolicy ?? "", "signature": authResponse.body!.signature ?? "", "key": authResponse.body!.objectKey ?? "", "file": fileObj as! TeaFileForm.FileField, "successActionStatus": "201" ]) uploadRequest = AlibabaCloudOssSdk.PostObjectRequest([ "bucketName": authResponse.body!.bucket ?? "", "header": ossHeader as! AlibabaCloudOssSdk.PostObjectRequest.Header ]) try await ossClient.postObject(uploadRequest as! AlibabaCloudOssSdk.PostObjectRequest, ossRuntime as! AlibabaCloudOSSUtil.RuntimeOptions) generateVideoCoverReq.videoUrl = "http://" + (authResponse.body!.bucket ?? "") + "." + (authResponse.body!.endpoint ?? "") + "/" + (authResponse.body!.objectKey ?? "") } var generateVideoCoverResp: GenerateVideoCoverResponse = try await generateVideoCoverWithOptions(generateVideoCoverReq as! GenerateVideoCoverRequest, runtime as! TeaUtils.RuntimeOptions) return generateVideoCoverResp as! GenerateVideoCoverResponse } @available(macOS 10.15, iOS 13, tvOS 13, watchOS 6, *) public func getAsyncJobResultWithOptions(_ request: GetAsyncJobResultRequest, _ runtime: TeaUtils.RuntimeOptions) async throws -> GetAsyncJobResultResponse { try TeaUtils.Client.validateModel(request) var body: [String: Any] = [:] if (!TeaUtils.Client.isUnset(request.jobId)) { body["JobId"] = request.jobId ?? ""; } var req: AlibabacloudOpenApi.OpenApiRequest = AlibabacloudOpenApi.OpenApiRequest([ "body": AlibabaCloudOpenApiUtil.Client.parseToMap(body) ]) var params: AlibabacloudOpenApi.Params = AlibabacloudOpenApi.Params([ "action": "GetAsyncJobResult", "version": "2020-03-20", "protocol": "HTTPS", "pathname": "/", "method": "POST", "authType": "AK", "style": "RPC", "reqBodyType": "formData", "bodyType": "json" ]) var tmp: [String: Any] = try await callApi(params as! AlibabacloudOpenApi.Params, req as! AlibabacloudOpenApi.OpenApiRequest, runtime as! TeaUtils.RuntimeOptions) return Tea.TeaConverter.fromMap(GetAsyncJobResultResponse(), tmp) } @available(macOS 10.15, iOS 13, tvOS 13, watchOS 6, *) public func getAsyncJobResult(_ request: GetAsyncJobResultRequest) async throws -> GetAsyncJobResultResponse { var runtime: TeaUtils.RuntimeOptions = TeaUtils.RuntimeOptions([:]) return try await getAsyncJobResultWithOptions(request as! GetAsyncJobResultRequest, runtime as! TeaUtils.RuntimeOptions) } @available(macOS 10.15, iOS 13, tvOS 13, watchOS 6, *) public func recognizeVideoCastCrewListWithOptions(_ tmpReq: RecognizeVideoCastCrewListRequest, _ runtime: TeaUtils.RuntimeOptions) async throws -> RecognizeVideoCastCrewListResponse { try TeaUtils.Client.validateModel(tmpReq) var request: RecognizeVideoCastCrewListShrinkRequest = RecognizeVideoCastCrewListShrinkRequest([:]) AlibabaCloudOpenApiUtil.Client.convert(tmpReq, request) if (!TeaUtils.Client.isUnset(tmpReq.params)) { request.paramsShrink = AlibabaCloudOpenApiUtil.Client.arrayToStringWithSpecifiedStyle(tmpReq.params, "Params", "json") } var body: [String: Any] = [:] if (!TeaUtils.Client.isUnset(request.paramsShrink)) { body["Params"] = request.paramsShrink ?? ""; } if (!TeaUtils.Client.isUnset(request.videoUrl)) { body["VideoUrl"] = request.videoUrl ?? ""; } var req: AlibabacloudOpenApi.OpenApiRequest = AlibabacloudOpenApi.OpenApiRequest([ "body": AlibabaCloudOpenApiUtil.Client.parseToMap(body) ]) var params: AlibabacloudOpenApi.Params = AlibabacloudOpenApi.Params([ "action": "RecognizeVideoCastCrewList", "version": "2020-03-20", "protocol": "HTTPS", "pathname": "/", "method": "POST", "authType": "AK", "style": "RPC", "reqBodyType": "formData", "bodyType": "json" ]) var tmp: [String: Any] = try await callApi(params as! AlibabacloudOpenApi.Params, req as! AlibabacloudOpenApi.OpenApiRequest, runtime as! TeaUtils.RuntimeOptions) return Tea.TeaConverter.fromMap(RecognizeVideoCastCrewListResponse(), tmp) } @available(macOS 10.15, iOS 13, tvOS 13, watchOS 6, *) public func recognizeVideoCastCrewList(_ request: RecognizeVideoCastCrewListRequest) async throws -> RecognizeVideoCastCrewListResponse { var runtime: TeaUtils.RuntimeOptions = TeaUtils.RuntimeOptions([:]) return try await recognizeVideoCastCrewListWithOptions(request as! RecognizeVideoCastCrewListRequest, runtime as! TeaUtils.RuntimeOptions) } @available(macOS 10.15, iOS 13, tvOS 13, watchOS 6, *) public func recognizeVideoCastCrewListAdvance(_ request: RecognizeVideoCastCrewListAdvanceRequest, _ runtime: TeaUtils.RuntimeOptions) async throws -> RecognizeVideoCastCrewListResponse { var accessKeyId: String = try await self._credential!.getAccessKeyId() var accessKeySecret: String = try await self._credential!.getAccessKeySecret() var securityToken: String = try await self._credential!.getSecurityToken() var credentialType: String = self._credential!.getType() var openPlatformEndpoint: String = self._openPlatformEndpoint ?? "" if (TeaUtils.Client.empty(openPlatformEndpoint)) { openPlatformEndpoint = "openplatform.aliyuncs.com" } if (TeaUtils.Client.isUnset(credentialType)) { credentialType = "access_key" } var authConfig: AlibabacloudOpenApi.Config = AlibabacloudOpenApi.Config([ "accessKeyId": accessKeyId as! String, "accessKeySecret": accessKeySecret as! String, "securityToken": securityToken as! String, "type": credentialType as! String, "endpoint": openPlatformEndpoint as! String, "protocol": self._protocol ?? "", "regionId": self._regionId ?? "" ]) var authClient: AlibabacloudOpenPlatform20191219.Client = try AlibabacloudOpenPlatform20191219.Client(authConfig) var authRequest: AlibabacloudOpenPlatform20191219.AuthorizeFileUploadRequest = AlibabacloudOpenPlatform20191219.AuthorizeFileUploadRequest([ "product": "videorecog", "regionId": self._regionId ?? "" ]) var authResponse: AlibabacloudOpenPlatform20191219.AuthorizeFileUploadResponse = AlibabacloudOpenPlatform20191219.AuthorizeFileUploadResponse([:]) var ossConfig: AlibabaCloudOssSdk.Config = AlibabaCloudOssSdk.Config([ "accessKeyId": accessKeyId as! String, "accessKeySecret": accessKeySecret as! String, "type": "access_key", "protocol": self._protocol ?? "", "regionId": self._regionId ?? "" ]) var ossClient: AlibabaCloudOssSdk.Client = try AlibabaCloudOssSdk.Client(ossConfig) var fileObj: TeaFileForm.FileField = TeaFileForm.FileField([:]) var ossHeader: AlibabaCloudOssSdk.PostObjectRequest.Header = AlibabaCloudOssSdk.PostObjectRequest.Header([:]) var uploadRequest: AlibabaCloudOssSdk.PostObjectRequest = AlibabaCloudOssSdk.PostObjectRequest([:]) var ossRuntime: AlibabaCloudOSSUtil.RuntimeOptions = AlibabaCloudOSSUtil.RuntimeOptions([:]) AlibabaCloudOpenApiUtil.Client.convert(runtime, ossRuntime) var recognizeVideoCastCrewListReq: RecognizeVideoCastCrewListRequest = RecognizeVideoCastCrewListRequest([:]) AlibabaCloudOpenApiUtil.Client.convert(request, recognizeVideoCastCrewListReq) if (!TeaUtils.Client.isUnset(request.videoUrlObject)) { authResponse = try await authClient.authorizeFileUploadWithOptions(authRequest as! AlibabacloudOpenPlatform20191219.AuthorizeFileUploadRequest, runtime as! TeaUtils.RuntimeOptions) ossConfig.accessKeyId = authResponse.body!.accessKeyId ossConfig.endpoint = AlibabaCloudOpenApiUtil.Client.getEndpoint(authResponse.body!.endpoint, authResponse.body!.useAccelerate, self._endpointType) ossClient = try AlibabaCloudOssSdk.Client(ossConfig) fileObj = TeaFileForm.FileField([ "filename": authResponse.body!.objectKey ?? "", "content": request.videoUrlObject!, "contentType": "" ]) ossHeader = AlibabaCloudOssSdk.PostObjectRequest.Header([ "accessKeyId": authResponse.body!.accessKeyId ?? "", "policy": authResponse.body!.encodedPolicy ?? "", "signature": authResponse.body!.signature ?? "", "key": authResponse.body!.objectKey ?? "", "file": fileObj as! TeaFileForm.FileField, "successActionStatus": "201" ]) uploadRequest = AlibabaCloudOssSdk.PostObjectRequest([ "bucketName": authResponse.body!.bucket ?? "", "header": ossHeader as! AlibabaCloudOssSdk.PostObjectRequest.Header ]) try await ossClient.postObject(uploadRequest as! AlibabaCloudOssSdk.PostObjectRequest, ossRuntime as! AlibabaCloudOSSUtil.RuntimeOptions) recognizeVideoCastCrewListReq.videoUrl = "http://" + (authResponse.body!.bucket ?? "") + "." + (authResponse.body!.endpoint ?? "") + "/" + (authResponse.body!.objectKey ?? "") } var recognizeVideoCastCrewListResp: RecognizeVideoCastCrewListResponse = try await recognizeVideoCastCrewListWithOptions(recognizeVideoCastCrewListReq as! RecognizeVideoCastCrewListRequest, runtime as! TeaUtils.RuntimeOptions) return recognizeVideoCastCrewListResp as! RecognizeVideoCastCrewListResponse } @available(macOS 10.15, iOS 13, tvOS 13, watchOS 6, *) public func splitVideoPartsWithOptions(_ request: SplitVideoPartsRequest, _ runtime: TeaUtils.RuntimeOptions) async throws -> SplitVideoPartsResponse { try TeaUtils.Client.validateModel(request) var body: [String: Any] = [:] if (!TeaUtils.Client.isUnset(request.maxTime)) { body["MaxTime"] = request.maxTime!; } if (!TeaUtils.Client.isUnset(request.minTime)) { body["MinTime"] = request.minTime!; } if (!TeaUtils.Client.isUnset(request.template)) { body["Template"] = request.template ?? ""; } if (!TeaUtils.Client.isUnset(request.videoUrl)) { body["VideoUrl"] = request.videoUrl ?? ""; } var req: AlibabacloudOpenApi.OpenApiRequest = AlibabacloudOpenApi.OpenApiRequest([ "body": AlibabaCloudOpenApiUtil.Client.parseToMap(body) ]) var params: AlibabacloudOpenApi.Params = AlibabacloudOpenApi.Params([ "action": "SplitVideoParts", "version": "2020-03-20", "protocol": "HTTPS", "pathname": "/", "method": "POST", "authType": "AK", "style": "RPC", "reqBodyType": "formData", "bodyType": "json" ]) var tmp: [String: Any] = try await callApi(params as! AlibabacloudOpenApi.Params, req as! AlibabacloudOpenApi.OpenApiRequest, runtime as! TeaUtils.RuntimeOptions) return Tea.TeaConverter.fromMap(SplitVideoPartsResponse(), tmp) } @available(macOS 10.15, iOS 13, tvOS 13, watchOS 6, *) public func splitVideoParts(_ request: SplitVideoPartsRequest) async throws -> SplitVideoPartsResponse { var runtime: TeaUtils.RuntimeOptions = TeaUtils.RuntimeOptions([:]) return try await splitVideoPartsWithOptions(request as! SplitVideoPartsRequest, runtime as! TeaUtils.RuntimeOptions) } @available(macOS 10.15, iOS 13, tvOS 13, watchOS 6, *) public func splitVideoPartsAdvance(_ request: SplitVideoPartsAdvanceRequest, _ runtime: TeaUtils.RuntimeOptions) async throws -> SplitVideoPartsResponse { var accessKeyId: String = try await self._credential!.getAccessKeyId() var accessKeySecret: String = try await self._credential!.getAccessKeySecret() var securityToken: String = try await self._credential!.getSecurityToken() var credentialType: String = self._credential!.getType() var openPlatformEndpoint: String = self._openPlatformEndpoint ?? "" if (TeaUtils.Client.empty(openPlatformEndpoint)) { openPlatformEndpoint = "openplatform.aliyuncs.com" } if (TeaUtils.Client.isUnset(credentialType)) { credentialType = "access_key" } var authConfig: AlibabacloudOpenApi.Config = AlibabacloudOpenApi.Config([ "accessKeyId": accessKeyId as! String, "accessKeySecret": accessKeySecret as! String, "securityToken": securityToken as! String, "type": credentialType as! String, "endpoint": openPlatformEndpoint as! String, "protocol": self._protocol ?? "", "regionId": self._regionId ?? "" ]) var authClient: AlibabacloudOpenPlatform20191219.Client = try AlibabacloudOpenPlatform20191219.Client(authConfig) var authRequest: AlibabacloudOpenPlatform20191219.AuthorizeFileUploadRequest = AlibabacloudOpenPlatform20191219.AuthorizeFileUploadRequest([ "product": "videorecog", "regionId": self._regionId ?? "" ]) var authResponse: AlibabacloudOpenPlatform20191219.AuthorizeFileUploadResponse = AlibabacloudOpenPlatform20191219.AuthorizeFileUploadResponse([:]) var ossConfig: AlibabaCloudOssSdk.Config = AlibabaCloudOssSdk.Config([ "accessKeyId": accessKeyId as! String, "accessKeySecret": accessKeySecret as! String, "type": "access_key", "protocol": self._protocol ?? "", "regionId": self._regionId ?? "" ]) var ossClient: AlibabaCloudOssSdk.Client = try AlibabaCloudOssSdk.Client(ossConfig) var fileObj: TeaFileForm.FileField = TeaFileForm.FileField([:]) var ossHeader: AlibabaCloudOssSdk.PostObjectRequest.Header = AlibabaCloudOssSdk.PostObjectRequest.Header([:]) var uploadRequest: AlibabaCloudOssSdk.PostObjectRequest = AlibabaCloudOssSdk.PostObjectRequest([:]) var ossRuntime: AlibabaCloudOSSUtil.RuntimeOptions = AlibabaCloudOSSUtil.RuntimeOptions([:]) AlibabaCloudOpenApiUtil.Client.convert(runtime, ossRuntime) var splitVideoPartsReq: SplitVideoPartsRequest = SplitVideoPartsRequest([:]) AlibabaCloudOpenApiUtil.Client.convert(request, splitVideoPartsReq) if (!TeaUtils.Client.isUnset(request.videoUrlObject)) { authResponse = try await authClient.authorizeFileUploadWithOptions(authRequest as! AlibabacloudOpenPlatform20191219.AuthorizeFileUploadRequest, runtime as! TeaUtils.RuntimeOptions) ossConfig.accessKeyId = authResponse.body!.accessKeyId ossConfig.endpoint = AlibabaCloudOpenApiUtil.Client.getEndpoint(authResponse.body!.endpoint, authResponse.body!.useAccelerate, self._endpointType) ossClient = try AlibabaCloudOssSdk.Client(ossConfig) fileObj = TeaFileForm.FileField([ "filename": authResponse.body!.objectKey ?? "", "content": request.videoUrlObject!, "contentType": "" ]) ossHeader = AlibabaCloudOssSdk.PostObjectRequest.Header([ "accessKeyId": authResponse.body!.accessKeyId ?? "", "policy": authResponse.body!.encodedPolicy ?? "", "signature": authResponse.body!.signature ?? "", "key": authResponse.body!.objectKey ?? "", "file": fileObj as! TeaFileForm.FileField, "successActionStatus": "201" ]) uploadRequest = AlibabaCloudOssSdk.PostObjectRequest([ "bucketName": authResponse.body!.bucket ?? "", "header": ossHeader as! AlibabaCloudOssSdk.PostObjectRequest.Header ]) try await ossClient.postObject(uploadRequest as! AlibabaCloudOssSdk.PostObjectRequest, ossRuntime as! AlibabaCloudOSSUtil.RuntimeOptions) splitVideoPartsReq.videoUrl = "http://" + (authResponse.body!.bucket ?? "") + "." + (authResponse.body!.endpoint ?? "") + "/" + (authResponse.body!.objectKey ?? "") } var splitVideoPartsResp: SplitVideoPartsResponse = try await splitVideoPartsWithOptions(splitVideoPartsReq as! SplitVideoPartsRequest, runtime as! TeaUtils.RuntimeOptions) return splitVideoPartsResp as! SplitVideoPartsResponse } @available(macOS 10.15, iOS 13, tvOS 13, watchOS 6, *) public func understandVideoContentWithOptions(_ request: UnderstandVideoContentRequest, _ runtime: TeaUtils.RuntimeOptions) async throws -> UnderstandVideoContentResponse { try TeaUtils.Client.validateModel(request) var body: [String: Any] = [:] if (!TeaUtils.Client.isUnset(request.videoURL)) { body["VideoURL"] = request.videoURL ?? ""; } var req: AlibabacloudOpenApi.OpenApiRequest = AlibabacloudOpenApi.OpenApiRequest([ "body": AlibabaCloudOpenApiUtil.Client.parseToMap(body) ]) var params: AlibabacloudOpenApi.Params = AlibabacloudOpenApi.Params([ "action": "UnderstandVideoContent", "version": "2020-03-20", "protocol": "HTTPS", "pathname": "/", "method": "POST", "authType": "AK", "style": "RPC", "reqBodyType": "formData", "bodyType": "json" ]) var tmp: [String: Any] = try await callApi(params as! AlibabacloudOpenApi.Params, req as! AlibabacloudOpenApi.OpenApiRequest, runtime as! TeaUtils.RuntimeOptions) return Tea.TeaConverter.fromMap(UnderstandVideoContentResponse(), tmp) } @available(macOS 10.15, iOS 13, tvOS 13, watchOS 6, *) public func understandVideoContent(_ request: UnderstandVideoContentRequest) async throws -> UnderstandVideoContentResponse { var runtime: TeaUtils.RuntimeOptions = TeaUtils.RuntimeOptions([:]) return try await understandVideoContentWithOptions(request as! UnderstandVideoContentRequest, runtime as! TeaUtils.RuntimeOptions) } @available(macOS 10.15, iOS 13, tvOS 13, watchOS 6, *) public func understandVideoContentAdvance(_ request: UnderstandVideoContentAdvanceRequest, _ runtime: TeaUtils.RuntimeOptions) async throws -> UnderstandVideoContentResponse { var accessKeyId: String = try await self._credential!.getAccessKeyId() var accessKeySecret: String = try await self._credential!.getAccessKeySecret() var securityToken: String = try await self._credential!.getSecurityToken() var credentialType: String = self._credential!.getType() var openPlatformEndpoint: String = self._openPlatformEndpoint ?? "" if (TeaUtils.Client.empty(openPlatformEndpoint)) { openPlatformEndpoint = "openplatform.aliyuncs.com" } if (TeaUtils.Client.isUnset(credentialType)) { credentialType = "access_key" } var authConfig: AlibabacloudOpenApi.Config = AlibabacloudOpenApi.Config([ "accessKeyId": accessKeyId as! String, "accessKeySecret": accessKeySecret as! String, "securityToken": securityToken as! String, "type": credentialType as! String, "endpoint": openPlatformEndpoint as! String, "protocol": self._protocol ?? "", "regionId": self._regionId ?? "" ]) var authClient: AlibabacloudOpenPlatform20191219.Client = try AlibabacloudOpenPlatform20191219.Client(authConfig) var authRequest: AlibabacloudOpenPlatform20191219.AuthorizeFileUploadRequest = AlibabacloudOpenPlatform20191219.AuthorizeFileUploadRequest([ "product": "videorecog", "regionId": self._regionId ?? "" ]) var authResponse: AlibabacloudOpenPlatform20191219.AuthorizeFileUploadResponse = AlibabacloudOpenPlatform20191219.AuthorizeFileUploadResponse([:]) var ossConfig: AlibabaCloudOssSdk.Config = AlibabaCloudOssSdk.Config([ "accessKeyId": accessKeyId as! String, "accessKeySecret": accessKeySecret as! String, "type": "access_key", "protocol": self._protocol ?? "", "regionId": self._regionId ?? "" ]) var ossClient: AlibabaCloudOssSdk.Client = try AlibabaCloudOssSdk.Client(ossConfig) var fileObj: TeaFileForm.FileField = TeaFileForm.FileField([:]) var ossHeader: AlibabaCloudOssSdk.PostObjectRequest.Header = AlibabaCloudOssSdk.PostObjectRequest.Header([:]) var uploadRequest: AlibabaCloudOssSdk.PostObjectRequest = AlibabaCloudOssSdk.PostObjectRequest([:]) var ossRuntime: AlibabaCloudOSSUtil.RuntimeOptions = AlibabaCloudOSSUtil.RuntimeOptions([:]) AlibabaCloudOpenApiUtil.Client.convert(runtime, ossRuntime) var understandVideoContentReq: UnderstandVideoContentRequest = UnderstandVideoContentRequest([:]) AlibabaCloudOpenApiUtil.Client.convert(request, understandVideoContentReq) if (!TeaUtils.Client.isUnset(request.videoURLObject)) { authResponse = try await authClient.authorizeFileUploadWithOptions(authRequest as! AlibabacloudOpenPlatform20191219.AuthorizeFileUploadRequest, runtime as! TeaUtils.RuntimeOptions) ossConfig.accessKeyId = authResponse.body!.accessKeyId ossConfig.endpoint = AlibabaCloudOpenApiUtil.Client.getEndpoint(authResponse.body!.endpoint, authResponse.body!.useAccelerate, self._endpointType) ossClient = try AlibabaCloudOssSdk.Client(ossConfig) fileObj = TeaFileForm.FileField([ "filename": authResponse.body!.objectKey ?? "", "content": request.videoURLObject!, "contentType": "" ]) ossHeader = AlibabaCloudOssSdk.PostObjectRequest.Header([ "accessKeyId": authResponse.body!.accessKeyId ?? "", "policy": authResponse.body!.encodedPolicy ?? "", "signature": authResponse.body!.signature ?? "", "key": authResponse.body!.objectKey ?? "", "file": fileObj as! TeaFileForm.FileField, "successActionStatus": "201" ]) uploadRequest = AlibabaCloudOssSdk.PostObjectRequest([ "bucketName": authResponse.body!.bucket ?? "", "header": ossHeader as! AlibabaCloudOssSdk.PostObjectRequest.Header ]) try await ossClient.postObject(uploadRequest as! AlibabaCloudOssSdk.PostObjectRequest, ossRuntime as! AlibabaCloudOSSUtil.RuntimeOptions) understandVideoContentReq.videoURL = "http://" + (authResponse.body!.bucket ?? "") + "." + (authResponse.body!.endpoint ?? "") + "/" + (authResponse.body!.objectKey ?? "") } var understandVideoContentResp: UnderstandVideoContentResponse = try await understandVideoContentWithOptions(understandVideoContentReq as! UnderstandVideoContentRequest, runtime as! TeaUtils.RuntimeOptions) return understandVideoContentResp as! UnderstandVideoContentResponse } }