From d795d20dca35ef730c8b58ba8a1e7e27fd9810d3 Mon Sep 17 00:00:00 2001 From: wanjiewu Date: Thu, 4 Mar 2021 11:41:25 +0800 Subject: [PATCH] =?UTF-8?q?add:redeme=E9=87=8C=E5=A2=9E=E5=8A=A0=E9=93=BE?= =?UTF-8?q?=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 11 ++ example/content_auditing/ci_video_auditing_job.go | 71 ++++++++++++ example/doc_process/ci_doc_process.go | 132 ++++++++++++++++++++++ 3 files changed, 214 insertions(+) create mode 100644 example/content_auditing/ci_video_auditing_job.go create mode 100644 example/doc_process/ci_doc_process.go diff --git a/README.md b/README.md index 0316a13..5210f36 100644 --- a/README.md +++ b/README.md @@ -93,3 +93,14 @@ Object API: * [x] Complete Multipart Upload(使用示例:[object/completeMultipartUpload.go](./example/object/completeMultipartUpload.go)) * [x] Abort Multipart Upload(使用示例:[object/abortMultipartUpload.go](./example/object/abortMultipartUpload.go)) * [x] Mutipart Upload(使用示例:[object/MutiUpload.go](./example/object/MutiUpload.go)) + + +数据处理 API: + +* [x] 媒体处理(使用示例:[ci_media.go](./example/media_process/media_process.go)) +* [x] 文档处理(使用示例:[ci_doc.go](./example/doc_process/ci_doc_process.go)) + + +内容审核 API: + +* [x] 视频审核(使用示例:[ci_doc.go](./example/content_auditing/ci_video_auditing_job.go)) \ No newline at end of file diff --git a/example/content_auditing/ci_video_auditing_job.go b/example/content_auditing/ci_video_auditing_job.go new file mode 100644 index 0000000..9a5cbb7 --- /dev/null +++ b/example/content_auditing/ci_video_auditing_job.go @@ -0,0 +1,71 @@ +package main + +import ( + "context" + "fmt" + "net/http" + "net/url" + "os" + "time" + + "github.com/tencentyun/cos-go-sdk-v5" + "github.com/tencentyun/cos-go-sdk-v5/debug" +) + +func log_status(err error) { + if err == nil { + return + } + if cos.IsNotFoundError(err) { + // WARN + fmt.Println("WARN: Resource is not existed") + } else if e, ok := cos.IsCOSError(err); ok { + fmt.Printf("ERROR: Code: %v\n", e.Code) + fmt.Printf("ERROR: Message: %v\n", e.Message) + fmt.Printf("ERROR: Resource: %v\n", e.Resource) + fmt.Printf("ERROR: RequestId: %v\n", e.RequestID) + // ERROR + } else { + fmt.Printf("ERROR: %v\n", err) + // ERROR + } +} + +func main() { + bu, _ := url.Parse("https://test-1259654469.cos.ap-guangzhou.myqcloud.com") + cu, _ := url.Parse("https://test-1259654469.ci.ap-guangzhou.myqcloud.com") + b := &cos.BaseURL{BucketURL: bu, CIURL: cu} + c := cos.NewClient(b, &http.Client{ + Transport: &cos.AuthorizationTransport{ + SecretID: os.Getenv("COS_SECRETID"), + SecretKey: os.Getenv("COS_SECRETKEY"), + Transport: &debug.DebugRequestTransport{ + RequestHeader: true, + RequestBody: true, + ResponseHeader: true, + ResponseBody: true, + }, + }, + }) + opt := &cos.PutVideoAuditingJobOptions{ + InputObject: "demo.mp4", + Conf: &cos.VideoAuditingJobConf{ + DetectType: "Porn,Terrorism,Politics,Ads", + Snapshot: &cos.PutVideoAuditingJobSnapshot{ + Mode: "Interval", + Start: 0.5, + TimeInterval: 50.5, + Count: 100, + }, + }, + } + + res, _, err := c.CI.PutVideoAuditingJob(context.Background(), opt) + log_status(err) + fmt.Printf("%+v\n", res) + + time.Sleep(3 * time.Second) + res2, _, err := c.CI.GetVideoAuditingJob(context.Background(), res.JobsDetail.JobId) + log_status(err) + fmt.Printf("%+v\n", res2) +} diff --git a/example/doc_process/ci_doc_process.go b/example/doc_process/ci_doc_process.go new file mode 100644 index 0000000..c743d64 --- /dev/null +++ b/example/doc_process/ci_doc_process.go @@ -0,0 +1,132 @@ +package main + +import ( + "context" + "fmt" + "io" + "net/http" + "net/url" + "os" + + "github.com/tencentyun/cos-go-sdk-v5" + "github.com/tencentyun/cos-go-sdk-v5/debug" +) + +func log_status(err error) { + if err == nil { + return + } + if cos.IsNotFoundError(err) { + // WARN + fmt.Println("WARN: Resource is not existed") + } else if e, ok := cos.IsCOSError(err); ok { + fmt.Printf("ERROR: Code: %v\n", e.Code) + fmt.Printf("ERROR: Message: %v\n", e.Message) + fmt.Printf("ERROR: Resource: %v\n", e.Resource) + fmt.Printf("ERROR: RequestId: %v\n", e.RequestID) + // ERROR + } else { + fmt.Printf("ERROR: %v\n", err) + // ERROR + } +} + +func main() { + u, _ := url.Parse("https://test-1259654469.cos.ap-guangzhou.myqcloud.com") + cu, _ := url.Parse("https://test-1259654469.ci.ap-guangzhou.myqcloud.com") + b := &cos.BaseURL{BucketURL: u, CIURL: cu} + c := cos.NewClient(b, &http.Client{ + Transport: &cos.AuthorizationTransport{ + SecretID: os.Getenv("COS_SECRETID"), + SecretKey: os.Getenv("COS_SECRETKEY"), + Transport: &debug.DebugRequestTransport{ + RequestHeader: true, + // Notice when put a large file and set need the request body, might happend out of memory error. + RequestBody: true, + ResponseHeader: true, + ResponseBody: true, + }, + }, + }) + + // 1、UpdateDocProcessQueue + updateQueueOpt := &cos.UpdateDocProcessQueueOptions{ + Name: "queue-doc-process-1", + QueueID: "p111a8dd208104ce3b11c78398f658ca8", + State: "Active", + NotifyConfig: &cos.DocProcessQueueNotifyConfig{ + State: "Off", + }, + } + updateQueueRes, _, err := c.CI.UpdateDocProcessQueue(context.Background(), updateQueueOpt) + log_status(err) + fmt.Printf("%+v\n", updateQueueRes) + + // 2、DescribeDocProcessQueues + DescribeQueueOpt := &cos.DescribeDocProcessQueuesOptions{ + QueueIds: "p111a8dd208104ce3b11c78398f658ca8,p4318f85d2aa14c43b1dba6f9b78be9b3,aacb2bb066e9c4478834d4196e76c49d3", + PageNumber: 1, + PageSize: 2, + } + DescribeQueueRes, _, err := c.CI.DescribeDocProcessQueues(context.Background(), DescribeQueueOpt) + log_status(err) + fmt.Printf("%+v\n", DescribeQueueRes) + + // 3、DescribeDocProcessBuckets + BucketsOpt := &cos.DescribeDocProcessBucketsOptions{ + Regions: "All", + } + BucketsRes, _, err := c.CI.DescribeDocProcessBuckets(context.Background(), BucketsOpt) + log_status(err) + fmt.Printf("%+v\n", BucketsRes) + + // 4、CreateDocProcessJobs + createJobOpt := &cos.CreateDocProcessJobsOptions{ + Tag: "DocProcess", + Input: &cos.DocProcessJobInput{ + Object: "form.pdf", + }, + Operation: &cos.DocProcessJobOperation{ + Output: &cos.DocProcessJobOutput{ + Region: "ap-guangzhou", + Object: "test-doc${Number}", + Bucket: "test-1259654469", + }, + DocProcess: &cos.DocProcessJobDocProcess{ + TgtType: "png", + StartPage: 1, + EndPage: -1, + ImageParams: "watermark/1/image/aHR0cDovL3Rlc3QwMDUtMTI1MTcwNDcwOC5jb3MuYXAtY2hvbmdxaW5nLm15cWNsb3VkLmNvbS8xLmpwZw==/gravity/southeast", + }, + }, + QueueId: "p111a8dd208104ce3b11c78398f658ca8", + } + createJobRes, _, err := c.CI.CreateDocProcessJobs(context.Background(), createJobOpt) + log_status(err) + fmt.Printf("%+v\n", createJobRes.JobsDetail) + + // 5、DescribeDocProcessJob + DescribeJobRes, _, err := c.CI.DescribeDocProcessJob(context.Background(), createJobRes.JobsDetail.JobId) + log_status(err) + fmt.Printf("%+v\n", DescribeJobRes.JobsDetail) + + // 6、DescribeDocProcessJobs + DescribeJobsOpt := &cos.DescribeDocProcessJobsOptions{ + QueueId: "p111a8dd208104ce3b11c78398f658ca8", + Tag: "DocProcess", + } + DescribeJobsRes, _, err := c.CI.DescribeDocProcessJobs(context.Background(), DescribeJobsOpt) + log_status(err) + fmt.Printf("%+v\n", DescribeJobsRes) + + // 7、doc-preview + opt := &cos.DocPreviewOptions{ + Page: 1, + } + resp, err := c.CI.DocPreview(context.Background(), "form.pdf", opt) + log_status(err) + fd, _ := os.OpenFile("form.pdf", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0660) + io.Copy(fd, resp.Body) + fd.Close() + +}