瀏覽代碼

IMM SDK Auto Released By zhengrui.lj,Version:1.48.3

Signed-off-by: haowei.yao <haowei.yao@alibaba-inc.com>
haowei.yao 7 年之前
父節點
當前提交
db915f1f81
共有 100 個文件被更改,包括 4599 次插入43 次删除
  1. 4 0
      ChangeLog.txt
  2. 112 0
      services/imm/compare_image_faces.go
  3. 113 0
      services/imm/create_set.go
  4. 114 0
      services/imm/create_video_analyse_task.go
  5. 107 0
      services/imm/delete_image.go
  6. 105 0
      services/imm/delete_set.go
  7. 108 0
      services/imm/delete_video.go
  8. 105 0
      services/imm/delete_video_task.go
  9. 107 0
      services/imm/detect_image_celebrity.go
  10. 106 0
      services/imm/detect_image_faces.go
  11. 106 0
      services/imm/detect_image_tags.go
  12. 106 0
      services/imm/detect_image_texts.go
  13. 138 0
      services/imm/get_image.go
  14. 112 0
      services/imm/get_set.go
  15. 132 0
      services/imm/get_video.go
  16. 116 0
      services/imm/get_video_task.go
  17. 116 0
      services/imm/index_image.go
  18. 125 0
      services/imm/index_video.go
  19. 109 0
      services/imm/list_images.go
  20. 106 0
      services/imm/list_set_tags.go
  21. 106 0
      services/imm/list_sets.go
  22. 4 2
      services/imm/list_tag_names.go
  23. 110 0
      services/imm/list_video_audios.go
  24. 110 0
      services/imm/list_video_frames.go
  25. 108 0
      services/imm/list_video_tasks.go
  26. 109 0
      services/imm/list_videos.go
  27. 124 0
      services/imm/search_images.go
  28. 109 0
      services/imm/search_images_by_tag_names.go
  29. 21 0
      services/imm/struct_audio_texts.go
  30. 30 0
      services/imm/struct_audio_texts_item.go
  31. 21 0
      services/imm/struct_audios.go
  32. 39 0
      services/imm/struct_audios_item.go
  33. 24 0
      services/imm/struct_celebrity_boundary.go
  34. 21 0
      services/imm/struct_celebrity_in_detect_image_celebrity.go
  35. 21 0
      services/imm/struct_celebrity_in_get_image.go
  36. 21 0
      services/imm/struct_celebrity_in_get_video.go
  37. 21 0
      services/imm/struct_celebrity_in_list_images.go
  38. 21 0
      services/imm/struct_celebrity_in_list_video_frames.go
  39. 21 0
      services/imm/struct_celebrity_in_list_videos.go
  40. 21 0
      services/imm/struct_celebrity_in_search_images.go
  41. 21 0
      services/imm/struct_celebrity_in_search_images_by_tag_names.go
  42. 26 0
      services/imm/struct_celebrity_item.go
  43. 27 0
      services/imm/struct_emotion_details.go
  44. 4 2
      services/imm/struct_face_a.go
  45. 29 0
      services/imm/struct_face_attributes.go
  46. 4 2
      services/imm/struct_face_b.go
  47. 24 0
      services/imm/struct_face_boundary.go
  48. 21 0
      services/imm/struct_faces_in_detect_image_faces.go
  49. 21 0
      services/imm/struct_faces_in_get_image.go
  50. 21 0
      services/imm/struct_faces_in_list_images.go
  51. 21 0
      services/imm/struct_faces_in_list_video_frames.go
  52. 21 0
      services/imm/struct_faces_in_search_images.go
  53. 21 0
      services/imm/struct_faces_in_search_images_by_tag_names.go
  54. 16 5
      services/imm/struct_faces_item.go
  55. 30 0
      services/imm/struct_faces_item_in_list_images.go
  56. 30 0
      services/imm/struct_faces_item_in_list_video_frames.go
  57. 30 0
      services/imm/struct_faces_item_in_search_images.go
  58. 30 0
      services/imm/struct_faces_item_in_search_images_by_tag_names.go
  59. 52 0
      services/imm/struct_frames.go
  60. 21 0
      services/imm/struct_frames_in_list_video_frames.go
  61. 52 0
      services/imm/struct_frames_item.go
  62. 21 0
      services/imm/struct_images_in_list_face_search_group_images.go
  63. 2 2
      services/imm/struct_images_in_list_images.go
  64. 21 0
      services/imm/struct_images_in_search_images.go
  65. 21 0
      services/imm/struct_images_in_search_images_by_tag_names.go
  66. 45 14
      services/imm/struct_images_item.go
  67. 24 0
      services/imm/struct_ocr_boundary.go
  68. 21 0
      services/imm/struct_ocr_in_detect_image_texts.go
  69. 21 0
      services/imm/struct_ocr_in_get_image.go
  70. 21 0
      services/imm/struct_ocr_in_list_images.go
  71. 21 0
      services/imm/struct_ocr_in_list_video_frames.go
  72. 21 0
      services/imm/struct_ocr_in_search_images.go
  73. 21 0
      services/imm/struct_ocr_in_search_images_by_tag_names.go
  74. 23 0
      services/imm/struct_ocr_item.go
  75. 21 0
      services/imm/struct_persons_in_get_video.go
  76. 21 0
      services/imm/struct_persons_in_list_videos.go
  77. 25 0
      services/imm/struct_persons_item.go
  78. 21 0
      services/imm/struct_sets_in_list_sets.go
  79. 11 6
      services/imm/struct_sets_item.go
  80. 1 1
      services/imm/struct_success_details_item.go
  81. 21 0
      services/imm/struct_tags_in_detect_image_tags.go
  82. 1 1
      services/imm/struct_tags_in_detect_tag.go
  83. 21 0
      services/imm/struct_tags_in_get_image.go
  84. 1 1
      services/imm/struct_tags_in_index_tag.go
  85. 21 0
      services/imm/struct_tags_in_list_images.go
  86. 21 0
      services/imm/struct_tags_in_list_set_tags.go
  87. 21 0
      services/imm/struct_tags_in_list_video_frames.go
  88. 21 0
      services/imm/struct_tags_in_search_images.go
  89. 21 0
      services/imm/struct_tags_in_search_images_by_tag_names.go
  90. 8 7
      services/imm/struct_tags_item.go
  91. 26 0
      services/imm/struct_tags_item_in_detect_tag.go
  92. 26 0
      services/imm/struct_tags_item_in_index_tag.go
  93. 21 0
      services/imm/struct_tasks_in_list_video_tasks.go
  94. 7 0
      services/imm/struct_tasks_item.go
  95. 21 0
      services/imm/struct_video_tags_in_get_video.go
  96. 21 0
      services/imm/struct_video_tags_in_list_videos.go
  97. 23 0
      services/imm/struct_video_tags_item.go
  98. 21 0
      services/imm/struct_videos.go
  99. 46 0
      services/imm/struct_videos_item.go
  100. 116 0
      services/imm/update_image.go

+ 4 - 0
ChangeLog.txt

@@ -1,3 +1,7 @@
+2018-12-28 Version: 1.48.3
+1, Add new set image video api.
+2, Add video async task api.
+
 2018-12-27 Version: 1.48.2
 1, fix php sdk
 

+ 112 - 0
services/imm/compare_image_faces.go

@@ -0,0 +1,112 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// CompareImageFaces invokes the imm.CompareImageFaces API synchronously
+// api document: https://help.aliyun.com/api/imm/compareimagefaces.html
+func (client *Client) CompareImageFaces(request *CompareImageFacesRequest) (response *CompareImageFacesResponse, err error) {
+	response = CreateCompareImageFacesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CompareImageFacesWithChan invokes the imm.CompareImageFaces API asynchronously
+// api document: https://help.aliyun.com/api/imm/compareimagefaces.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CompareImageFacesWithChan(request *CompareImageFacesRequest) (<-chan *CompareImageFacesResponse, <-chan error) {
+	responseChan := make(chan *CompareImageFacesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CompareImageFaces(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CompareImageFacesWithCallback invokes the imm.CompareImageFaces API asynchronously
+// api document: https://help.aliyun.com/api/imm/compareimagefaces.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CompareImageFacesWithCallback(request *CompareImageFacesRequest, callback func(response *CompareImageFacesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CompareImageFacesResponse
+		var err error
+		defer close(result)
+		response, err = client.CompareImageFaces(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CompareImageFacesRequest is the request struct for api CompareImageFaces
+type CompareImageFacesRequest struct {
+	*requests.RpcRequest
+	ImageUriB string `position:"Query" name:"ImageUriB"`
+	ImageUriA string `position:"Query" name:"ImageUriA"`
+	Project   string `position:"Query" name:"Project"`
+	SetId     string `position:"Query" name:"SetId"`
+	FaceIdA   string `position:"Query" name:"FaceIdA"`
+	FaceIdB   string `position:"Query" name:"FaceIdB"`
+}
+
+// CompareImageFacesResponse is the response struct for api CompareImageFaces
+type CompareImageFacesResponse struct {
+	*responses.BaseResponse
+	RequestId  string  `json:"RequestId" xml:"RequestId"`
+	SetId      string  `json:"SetId" xml:"SetId"`
+	Similarity float64 `json:"Similarity" xml:"Similarity"`
+	FaceA      FaceA   `json:"FaceA" xml:"FaceA"`
+	FaceB      FaceB   `json:"FaceB" xml:"FaceB"`
+}
+
+// CreateCompareImageFacesRequest creates a request to invoke CompareImageFaces API
+func CreateCompareImageFacesRequest() (request *CompareImageFacesRequest) {
+	request = &CompareImageFacesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "CompareImageFaces", "imm", "openAPI")
+	return
+}
+
+// CreateCompareImageFacesResponse creates a response to parse from CompareImageFaces response
+func CreateCompareImageFacesResponse() (response *CompareImageFacesResponse) {
+	response = &CompareImageFacesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 113 - 0
services/imm/create_set.go

@@ -0,0 +1,113 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// CreateSet invokes the imm.CreateSet API synchronously
+// api document: https://help.aliyun.com/api/imm/createset.html
+func (client *Client) CreateSet(request *CreateSetRequest) (response *CreateSetResponse, err error) {
+	response = CreateCreateSetResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateSetWithChan invokes the imm.CreateSet API asynchronously
+// api document: https://help.aliyun.com/api/imm/createset.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateSetWithChan(request *CreateSetRequest) (<-chan *CreateSetResponse, <-chan error) {
+	responseChan := make(chan *CreateSetResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateSet(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateSetWithCallback invokes the imm.CreateSet API asynchronously
+// api document: https://help.aliyun.com/api/imm/createset.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateSetWithCallback(request *CreateSetRequest, callback func(response *CreateSetResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateSetResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateSet(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateSetRequest is the request struct for api CreateSet
+type CreateSetRequest struct {
+	*requests.RpcRequest
+	SetName string `position:"Query" name:"SetName"`
+	Project string `position:"Query" name:"Project"`
+	SetId   string `position:"Query" name:"SetId"`
+}
+
+// CreateSetResponse is the response struct for api CreateSet
+type CreateSetResponse struct {
+	*responses.BaseResponse
+	RequestId   string `json:"RequestId" xml:"RequestId"`
+	SetId       string `json:"SetId" xml:"SetId"`
+	SetName     string `json:"SetName" xml:"SetName"`
+	CreateTime  string `json:"CreateTime" xml:"CreateTime"`
+	ModifyTime  string `json:"ModifyTime" xml:"ModifyTime"`
+	FaceCount   int    `json:"FaceCount" xml:"FaceCount"`
+	ImageCount  int    `json:"ImageCount" xml:"ImageCount"`
+	VideoCount  int    `json:"VideoCount" xml:"VideoCount"`
+	VideoLength int    `json:"VideoLength" xml:"VideoLength"`
+}
+
+// CreateCreateSetRequest creates a request to invoke CreateSet API
+func CreateCreateSetRequest() (request *CreateSetRequest) {
+	request = &CreateSetRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "CreateSet", "imm", "openAPI")
+	return
+}
+
+// CreateCreateSetResponse creates a response to parse from CreateSet response
+func CreateCreateSetResponse() (response *CreateSetResponse) {
+	response = &CreateSetResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 114 - 0
services/imm/create_video_analyse_task.go

@@ -0,0 +1,114 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// CreateVideoAnalyseTask invokes the imm.CreateVideoAnalyseTask API synchronously
+// api document: https://help.aliyun.com/api/imm/createvideoanalysetask.html
+func (client *Client) CreateVideoAnalyseTask(request *CreateVideoAnalyseTaskRequest) (response *CreateVideoAnalyseTaskResponse, err error) {
+	response = CreateCreateVideoAnalyseTaskResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// CreateVideoAnalyseTaskWithChan invokes the imm.CreateVideoAnalyseTask API asynchronously
+// api document: https://help.aliyun.com/api/imm/createvideoanalysetask.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateVideoAnalyseTaskWithChan(request *CreateVideoAnalyseTaskRequest) (<-chan *CreateVideoAnalyseTaskResponse, <-chan error) {
+	responseChan := make(chan *CreateVideoAnalyseTaskResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.CreateVideoAnalyseTask(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// CreateVideoAnalyseTaskWithCallback invokes the imm.CreateVideoAnalyseTask API asynchronously
+// api document: https://help.aliyun.com/api/imm/createvideoanalysetask.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) CreateVideoAnalyseTaskWithCallback(request *CreateVideoAnalyseTaskRequest, callback func(response *CreateVideoAnalyseTaskResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *CreateVideoAnalyseTaskResponse
+		var err error
+		defer close(result)
+		response, err = client.CreateVideoAnalyseTask(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// CreateVideoAnalyseTaskRequest is the request struct for api CreateVideoAnalyseTask
+type CreateVideoAnalyseTaskRequest struct {
+	*requests.RpcRequest
+	NotifyTopicName string           `position:"Query" name:"NotifyTopicName"`
+	GrabType        string           `position:"Query" name:"GrabType"`
+	Project         string           `position:"Query" name:"Project"`
+	EndTime         string           `position:"Query" name:"EndTime"`
+	StartTime       string           `position:"Query" name:"StartTime"`
+	VideoUri        string           `position:"Query" name:"VideoUri"`
+	SaveType        requests.Boolean `position:"Query" name:"SaveType"`
+	NotifyEndpoint  string           `position:"Query" name:"NotifyEndpoint"`
+	Interval        string           `position:"Query" name:"Interval"`
+	TgtUri          string           `position:"Query" name:"TgtUri"`
+}
+
+// CreateVideoAnalyseTaskResponse is the response struct for api CreateVideoAnalyseTask
+type CreateVideoAnalyseTaskResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	TaskId    string `json:"TaskId" xml:"TaskId"`
+	TaskType  string `json:"TaskType" xml:"TaskType"`
+}
+
+// CreateCreateVideoAnalyseTaskRequest creates a request to invoke CreateVideoAnalyseTask API
+func CreateCreateVideoAnalyseTaskRequest() (request *CreateVideoAnalyseTaskRequest) {
+	request = &CreateVideoAnalyseTaskRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "CreateVideoAnalyseTask", "imm", "openAPI")
+	return
+}
+
+// CreateCreateVideoAnalyseTaskResponse creates a response to parse from CreateVideoAnalyseTask response
+func CreateCreateVideoAnalyseTaskResponse() (response *CreateVideoAnalyseTaskResponse) {
+	response = &CreateVideoAnalyseTaskResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/imm/delete_image.go

@@ -0,0 +1,107 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DeleteImage invokes the imm.DeleteImage API synchronously
+// api document: https://help.aliyun.com/api/imm/deleteimage.html
+func (client *Client) DeleteImage(request *DeleteImageRequest) (response *DeleteImageResponse, err error) {
+	response = CreateDeleteImageResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteImageWithChan invokes the imm.DeleteImage API asynchronously
+// api document: https://help.aliyun.com/api/imm/deleteimage.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteImageWithChan(request *DeleteImageRequest) (<-chan *DeleteImageResponse, <-chan error) {
+	responseChan := make(chan *DeleteImageResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteImage(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteImageWithCallback invokes the imm.DeleteImage API asynchronously
+// api document: https://help.aliyun.com/api/imm/deleteimage.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteImageWithCallback(request *DeleteImageRequest, callback func(response *DeleteImageResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteImageResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteImage(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteImageRequest is the request struct for api DeleteImage
+type DeleteImageRequest struct {
+	*requests.RpcRequest
+	ImageUri string `position:"Query" name:"ImageUri"`
+	Project  string `position:"Query" name:"Project"`
+	SetId    string `position:"Query" name:"SetId"`
+}
+
+// DeleteImageResponse is the response struct for api DeleteImage
+type DeleteImageResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	SetId     string `json:"SetId" xml:"SetId"`
+	ImageUri  string `json:"ImageUri" xml:"ImageUri"`
+}
+
+// CreateDeleteImageRequest creates a request to invoke DeleteImage API
+func CreateDeleteImageRequest() (request *DeleteImageRequest) {
+	request = &DeleteImageRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "DeleteImage", "imm", "openAPI")
+	return
+}
+
+// CreateDeleteImageResponse creates a response to parse from DeleteImage response
+func CreateDeleteImageResponse() (response *DeleteImageResponse) {
+	response = &DeleteImageResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/imm/delete_set.go

@@ -0,0 +1,105 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DeleteSet invokes the imm.DeleteSet API synchronously
+// api document: https://help.aliyun.com/api/imm/deleteset.html
+func (client *Client) DeleteSet(request *DeleteSetRequest) (response *DeleteSetResponse, err error) {
+	response = CreateDeleteSetResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteSetWithChan invokes the imm.DeleteSet API asynchronously
+// api document: https://help.aliyun.com/api/imm/deleteset.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteSetWithChan(request *DeleteSetRequest) (<-chan *DeleteSetResponse, <-chan error) {
+	responseChan := make(chan *DeleteSetResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteSet(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteSetWithCallback invokes the imm.DeleteSet API asynchronously
+// api document: https://help.aliyun.com/api/imm/deleteset.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteSetWithCallback(request *DeleteSetRequest, callback func(response *DeleteSetResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteSetResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteSet(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteSetRequest is the request struct for api DeleteSet
+type DeleteSetRequest struct {
+	*requests.RpcRequest
+	Project string `position:"Query" name:"Project"`
+	SetId   string `position:"Query" name:"SetId"`
+}
+
+// DeleteSetResponse is the response struct for api DeleteSet
+type DeleteSetResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	SetId     string `json:"SetId" xml:"SetId"`
+}
+
+// CreateDeleteSetRequest creates a request to invoke DeleteSet API
+func CreateDeleteSetRequest() (request *DeleteSetRequest) {
+	request = &DeleteSetRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "DeleteSet", "imm", "openAPI")
+	return
+}
+
+// CreateDeleteSetResponse creates a response to parse from DeleteSet response
+func CreateDeleteSetResponse() (response *DeleteSetResponse) {
+	response = &DeleteSetResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/imm/delete_video.go

@@ -0,0 +1,108 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DeleteVideo invokes the imm.DeleteVideo API synchronously
+// api document: https://help.aliyun.com/api/imm/deletevideo.html
+func (client *Client) DeleteVideo(request *DeleteVideoRequest) (response *DeleteVideoResponse, err error) {
+	response = CreateDeleteVideoResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteVideoWithChan invokes the imm.DeleteVideo API asynchronously
+// api document: https://help.aliyun.com/api/imm/deletevideo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteVideoWithChan(request *DeleteVideoRequest) (<-chan *DeleteVideoResponse, <-chan error) {
+	responseChan := make(chan *DeleteVideoResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteVideo(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteVideoWithCallback invokes the imm.DeleteVideo API asynchronously
+// api document: https://help.aliyun.com/api/imm/deletevideo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteVideoWithCallback(request *DeleteVideoRequest, callback func(response *DeleteVideoResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteVideoResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteVideo(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteVideoRequest is the request struct for api DeleteVideo
+type DeleteVideoRequest struct {
+	*requests.RpcRequest
+	VideoUri  string           `position:"Query" name:"VideoUri"`
+	Project   string           `position:"Query" name:"Project"`
+	SetId     string           `position:"Query" name:"SetId"`
+	Resources requests.Boolean `position:"Query" name:"Resources"`
+}
+
+// DeleteVideoResponse is the response struct for api DeleteVideo
+type DeleteVideoResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+	SetId     string `json:"SetId" xml:"SetId"`
+	VideoUri  string `json:"VideoUri" xml:"VideoUri"`
+}
+
+// CreateDeleteVideoRequest creates a request to invoke DeleteVideo API
+func CreateDeleteVideoRequest() (request *DeleteVideoRequest) {
+	request = &DeleteVideoRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "DeleteVideo", "imm", "openAPI")
+	return
+}
+
+// CreateDeleteVideoResponse creates a response to parse from DeleteVideo response
+func CreateDeleteVideoResponse() (response *DeleteVideoResponse) {
+	response = &DeleteVideoResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 105 - 0
services/imm/delete_video_task.go

@@ -0,0 +1,105 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DeleteVideoTask invokes the imm.DeleteVideoTask API synchronously
+// api document: https://help.aliyun.com/api/imm/deletevideotask.html
+func (client *Client) DeleteVideoTask(request *DeleteVideoTaskRequest) (response *DeleteVideoTaskResponse, err error) {
+	response = CreateDeleteVideoTaskResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DeleteVideoTaskWithChan invokes the imm.DeleteVideoTask API asynchronously
+// api document: https://help.aliyun.com/api/imm/deletevideotask.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteVideoTaskWithChan(request *DeleteVideoTaskRequest) (<-chan *DeleteVideoTaskResponse, <-chan error) {
+	responseChan := make(chan *DeleteVideoTaskResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DeleteVideoTask(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DeleteVideoTaskWithCallback invokes the imm.DeleteVideoTask API asynchronously
+// api document: https://help.aliyun.com/api/imm/deletevideotask.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DeleteVideoTaskWithCallback(request *DeleteVideoTaskRequest, callback func(response *DeleteVideoTaskResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DeleteVideoTaskResponse
+		var err error
+		defer close(result)
+		response, err = client.DeleteVideoTask(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DeleteVideoTaskRequest is the request struct for api DeleteVideoTask
+type DeleteVideoTaskRequest struct {
+	*requests.RpcRequest
+	TaskType string `position:"Query" name:"TaskType"`
+	Project  string `position:"Query" name:"Project"`
+	TaskId   string `position:"Query" name:"TaskId"`
+}
+
+// DeleteVideoTaskResponse is the response struct for api DeleteVideoTask
+type DeleteVideoTaskResponse struct {
+	*responses.BaseResponse
+	RequestId string `json:"RequestId" xml:"RequestId"`
+}
+
+// CreateDeleteVideoTaskRequest creates a request to invoke DeleteVideoTask API
+func CreateDeleteVideoTaskRequest() (request *DeleteVideoTaskRequest) {
+	request = &DeleteVideoTaskRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "DeleteVideoTask", "imm", "openAPI")
+	return
+}
+
+// CreateDeleteVideoTaskResponse creates a response to parse from DeleteVideoTask response
+func CreateDeleteVideoTaskResponse() (response *DeleteVideoTaskResponse) {
+	response = &DeleteVideoTaskResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 107 - 0
services/imm/detect_image_celebrity.go

@@ -0,0 +1,107 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DetectImageCelebrity invokes the imm.DetectImageCelebrity API synchronously
+// api document: https://help.aliyun.com/api/imm/detectimagecelebrity.html
+func (client *Client) DetectImageCelebrity(request *DetectImageCelebrityRequest) (response *DetectImageCelebrityResponse, err error) {
+	response = CreateDetectImageCelebrityResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DetectImageCelebrityWithChan invokes the imm.DetectImageCelebrity API asynchronously
+// api document: https://help.aliyun.com/api/imm/detectimagecelebrity.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DetectImageCelebrityWithChan(request *DetectImageCelebrityRequest) (<-chan *DetectImageCelebrityResponse, <-chan error) {
+	responseChan := make(chan *DetectImageCelebrityResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DetectImageCelebrity(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DetectImageCelebrityWithCallback invokes the imm.DetectImageCelebrity API asynchronously
+// api document: https://help.aliyun.com/api/imm/detectimagecelebrity.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DetectImageCelebrityWithCallback(request *DetectImageCelebrityRequest, callback func(response *DetectImageCelebrityResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DetectImageCelebrityResponse
+		var err error
+		defer close(result)
+		response, err = client.DetectImageCelebrity(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DetectImageCelebrityRequest is the request struct for api DetectImageCelebrity
+type DetectImageCelebrityRequest struct {
+	*requests.RpcRequest
+	ImageUri string `position:"Query" name:"ImageUri"`
+	Library  string `position:"Query" name:"Library"`
+	Project  string `position:"Query" name:"Project"`
+}
+
+// DetectImageCelebrityResponse is the response struct for api DetectImageCelebrity
+type DetectImageCelebrityResponse struct {
+	*responses.BaseResponse
+	RequestId string          `json:"RequestId" xml:"RequestId"`
+	ImageUri  string          `json:"ImageUri" xml:"ImageUri"`
+	Celebrity []CelebrityItem `json:"Celebrity" xml:"Celebrity"`
+}
+
+// CreateDetectImageCelebrityRequest creates a request to invoke DetectImageCelebrity API
+func CreateDetectImageCelebrityRequest() (request *DetectImageCelebrityRequest) {
+	request = &DetectImageCelebrityRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "DetectImageCelebrity", "imm", "openAPI")
+	return
+}
+
+// CreateDetectImageCelebrityResponse creates a response to parse from DetectImageCelebrity response
+func CreateDetectImageCelebrityResponse() (response *DetectImageCelebrityResponse) {
+	response = &DetectImageCelebrityResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/imm/detect_image_faces.go

@@ -0,0 +1,106 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DetectImageFaces invokes the imm.DetectImageFaces API synchronously
+// api document: https://help.aliyun.com/api/imm/detectimagefaces.html
+func (client *Client) DetectImageFaces(request *DetectImageFacesRequest) (response *DetectImageFacesResponse, err error) {
+	response = CreateDetectImageFacesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DetectImageFacesWithChan invokes the imm.DetectImageFaces API asynchronously
+// api document: https://help.aliyun.com/api/imm/detectimagefaces.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DetectImageFacesWithChan(request *DetectImageFacesRequest) (<-chan *DetectImageFacesResponse, <-chan error) {
+	responseChan := make(chan *DetectImageFacesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DetectImageFaces(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DetectImageFacesWithCallback invokes the imm.DetectImageFaces API asynchronously
+// api document: https://help.aliyun.com/api/imm/detectimagefaces.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DetectImageFacesWithCallback(request *DetectImageFacesRequest, callback func(response *DetectImageFacesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DetectImageFacesResponse
+		var err error
+		defer close(result)
+		response, err = client.DetectImageFaces(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DetectImageFacesRequest is the request struct for api DetectImageFaces
+type DetectImageFacesRequest struct {
+	*requests.RpcRequest
+	ImageUri string `position:"Query" name:"ImageUri"`
+	Project  string `position:"Query" name:"Project"`
+}
+
+// DetectImageFacesResponse is the response struct for api DetectImageFaces
+type DetectImageFacesResponse struct {
+	*responses.BaseResponse
+	RequestId string      `json:"RequestId" xml:"RequestId"`
+	ImageUri  string      `json:"ImageUri" xml:"ImageUri"`
+	Faces     []FacesItem `json:"Faces" xml:"Faces"`
+}
+
+// CreateDetectImageFacesRequest creates a request to invoke DetectImageFaces API
+func CreateDetectImageFacesRequest() (request *DetectImageFacesRequest) {
+	request = &DetectImageFacesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "DetectImageFaces", "imm", "openAPI")
+	return
+}
+
+// CreateDetectImageFacesResponse creates a response to parse from DetectImageFaces response
+func CreateDetectImageFacesResponse() (response *DetectImageFacesResponse) {
+	response = &DetectImageFacesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/imm/detect_image_tags.go

@@ -0,0 +1,106 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DetectImageTags invokes the imm.DetectImageTags API synchronously
+// api document: https://help.aliyun.com/api/imm/detectimagetags.html
+func (client *Client) DetectImageTags(request *DetectImageTagsRequest) (response *DetectImageTagsResponse, err error) {
+	response = CreateDetectImageTagsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DetectImageTagsWithChan invokes the imm.DetectImageTags API asynchronously
+// api document: https://help.aliyun.com/api/imm/detectimagetags.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DetectImageTagsWithChan(request *DetectImageTagsRequest) (<-chan *DetectImageTagsResponse, <-chan error) {
+	responseChan := make(chan *DetectImageTagsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DetectImageTags(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DetectImageTagsWithCallback invokes the imm.DetectImageTags API asynchronously
+// api document: https://help.aliyun.com/api/imm/detectimagetags.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DetectImageTagsWithCallback(request *DetectImageTagsRequest, callback func(response *DetectImageTagsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DetectImageTagsResponse
+		var err error
+		defer close(result)
+		response, err = client.DetectImageTags(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DetectImageTagsRequest is the request struct for api DetectImageTags
+type DetectImageTagsRequest struct {
+	*requests.RpcRequest
+	ImageUri string `position:"Query" name:"ImageUri"`
+	Project  string `position:"Query" name:"Project"`
+}
+
+// DetectImageTagsResponse is the response struct for api DetectImageTags
+type DetectImageTagsResponse struct {
+	*responses.BaseResponse
+	RequestId string     `json:"RequestId" xml:"RequestId"`
+	ImageUri  string     `json:"ImageUri" xml:"ImageUri"`
+	Tags      []TagsItem `json:"Tags" xml:"Tags"`
+}
+
+// CreateDetectImageTagsRequest creates a request to invoke DetectImageTags API
+func CreateDetectImageTagsRequest() (request *DetectImageTagsRequest) {
+	request = &DetectImageTagsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "DetectImageTags", "imm", "openAPI")
+	return
+}
+
+// CreateDetectImageTagsResponse creates a response to parse from DetectImageTags response
+func CreateDetectImageTagsResponse() (response *DetectImageTagsResponse) {
+	response = &DetectImageTagsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/imm/detect_image_texts.go

@@ -0,0 +1,106 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// DetectImageTexts invokes the imm.DetectImageTexts API synchronously
+// api document: https://help.aliyun.com/api/imm/detectimagetexts.html
+func (client *Client) DetectImageTexts(request *DetectImageTextsRequest) (response *DetectImageTextsResponse, err error) {
+	response = CreateDetectImageTextsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// DetectImageTextsWithChan invokes the imm.DetectImageTexts API asynchronously
+// api document: https://help.aliyun.com/api/imm/detectimagetexts.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DetectImageTextsWithChan(request *DetectImageTextsRequest) (<-chan *DetectImageTextsResponse, <-chan error) {
+	responseChan := make(chan *DetectImageTextsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.DetectImageTexts(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// DetectImageTextsWithCallback invokes the imm.DetectImageTexts API asynchronously
+// api document: https://help.aliyun.com/api/imm/detectimagetexts.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) DetectImageTextsWithCallback(request *DetectImageTextsRequest, callback func(response *DetectImageTextsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *DetectImageTextsResponse
+		var err error
+		defer close(result)
+		response, err = client.DetectImageTexts(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// DetectImageTextsRequest is the request struct for api DetectImageTexts
+type DetectImageTextsRequest struct {
+	*requests.RpcRequest
+	ImageUri string `position:"Query" name:"ImageUri"`
+	Project  string `position:"Query" name:"Project"`
+}
+
+// DetectImageTextsResponse is the response struct for api DetectImageTexts
+type DetectImageTextsResponse struct {
+	*responses.BaseResponse
+	RequestId string    `json:"RequestId" xml:"RequestId"`
+	ImageUri  string    `json:"ImageUri" xml:"ImageUri"`
+	OCR       []OCRItem `json:"OCR" xml:"OCR"`
+}
+
+// CreateDetectImageTextsRequest creates a request to invoke DetectImageTexts API
+func CreateDetectImageTextsRequest() (request *DetectImageTextsRequest) {
+	request = &DetectImageTextsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "DetectImageTexts", "imm", "openAPI")
+	return
+}
+
+// CreateDetectImageTextsResponse creates a response to parse from DetectImageTexts response
+func CreateDetectImageTextsResponse() (response *DetectImageTextsResponse) {
+	response = &DetectImageTextsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 138 - 0
services/imm/get_image.go

@@ -0,0 +1,138 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// GetImage invokes the imm.GetImage API synchronously
+// api document: https://help.aliyun.com/api/imm/getimage.html
+func (client *Client) GetImage(request *GetImageRequest) (response *GetImageResponse, err error) {
+	response = CreateGetImageResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// GetImageWithChan invokes the imm.GetImage API asynchronously
+// api document: https://help.aliyun.com/api/imm/getimage.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetImageWithChan(request *GetImageRequest) (<-chan *GetImageResponse, <-chan error) {
+	responseChan := make(chan *GetImageResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetImage(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// GetImageWithCallback invokes the imm.GetImage API asynchronously
+// api document: https://help.aliyun.com/api/imm/getimage.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetImageWithCallback(request *GetImageRequest, callback func(response *GetImageResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetImageResponse
+		var err error
+		defer close(result)
+		response, err = client.GetImage(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// GetImageRequest is the request struct for api GetImage
+type GetImageRequest struct {
+	*requests.RpcRequest
+	ImageUri string `position:"Query" name:"ImageUri"`
+	Project  string `position:"Query" name:"Project"`
+	SetId    string `position:"Query" name:"SetId"`
+}
+
+// GetImageResponse is the response struct for api GetImage
+type GetImageResponse struct {
+	*responses.BaseResponse
+	RequestId           string          `json:"RequestId" xml:"RequestId"`
+	SetId               string          `json:"SetId" xml:"SetId"`
+	ImageUri            string          `json:"ImageUri" xml:"ImageUri"`
+	RemarksA            string          `json:"RemarksA" xml:"RemarksA"`
+	RemarksB            string          `json:"RemarksB" xml:"RemarksB"`
+	CreateTime          string          `json:"CreateTime" xml:"CreateTime"`
+	ModifyTime          string          `json:"ModifyTime" xml:"ModifyTime"`
+	ImageWidth          int             `json:"ImageWidth" xml:"ImageWidth"`
+	ImageHeight         int             `json:"ImageHeight" xml:"ImageHeight"`
+	ImageFormat         string          `json:"ImageFormat" xml:"ImageFormat"`
+	Exif                string          `json:"Exif" xml:"Exif"`
+	FileSize            int             `json:"FileSize" xml:"FileSize"`
+	ImageTime           string          `json:"ImageTime" xml:"ImageTime"`
+	Orientation         string          `json:"Orientation" xml:"Orientation"`
+	SourceType          string          `json:"SourceType" xml:"SourceType"`
+	SourceUri           string          `json:"SourceUri" xml:"SourceUri"`
+	SourcePosition      string          `json:"SourcePosition" xml:"SourcePosition"`
+	FacesStatus         string          `json:"FacesStatus" xml:"FacesStatus"`
+	FacesModifyTime     string          `json:"FacesModifyTime" xml:"FacesModifyTime"`
+	Location            string          `json:"Location" xml:"Location"`
+	OCRStatus           string          `json:"OCRStatus" xml:"OCRStatus"`
+	OCRModifyTime       string          `json:"OCRModifyTime" xml:"OCRModifyTime"`
+	OCRFailReason       string          `json:"OCRFailReason" xml:"OCRFailReason"`
+	FacesFailReason     string          `json:"FacesFailReason" xml:"FacesFailReason"`
+	TagsFailReason      string          `json:"TagsFailReason" xml:"TagsFailReason"`
+	TagsModifyTime      string          `json:"TagsModifyTime" xml:"TagsModifyTime"`
+	CelebrityStatus     string          `json:"CelebrityStatus" xml:"CelebrityStatus"`
+	CelebrityModifyTime string          `json:"CelebrityModifyTime" xml:"CelebrityModifyTime"`
+	CelebrityFailReason string          `json:"CelebrityFailReason" xml:"CelebrityFailReason"`
+	TagsStatus          string          `json:"TagsStatus" xml:"TagsStatus"`
+	Faces               []FacesItem     `json:"Faces" xml:"Faces"`
+	OCR                 []OCRItem       `json:"OCR" xml:"OCR"`
+	Tags                []TagsItem      `json:"Tags" xml:"Tags"`
+	Celebrity           []CelebrityItem `json:"Celebrity" xml:"Celebrity"`
+}
+
+// CreateGetImageRequest creates a request to invoke GetImage API
+func CreateGetImageRequest() (request *GetImageRequest) {
+	request = &GetImageRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "GetImage", "imm", "openAPI")
+	return
+}
+
+// CreateGetImageResponse creates a response to parse from GetImage response
+func CreateGetImageResponse() (response *GetImageResponse) {
+	response = &GetImageResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 112 - 0
services/imm/get_set.go

@@ -0,0 +1,112 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// GetSet invokes the imm.GetSet API synchronously
+// api document: https://help.aliyun.com/api/imm/getset.html
+func (client *Client) GetSet(request *GetSetRequest) (response *GetSetResponse, err error) {
+	response = CreateGetSetResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// GetSetWithChan invokes the imm.GetSet API asynchronously
+// api document: https://help.aliyun.com/api/imm/getset.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetSetWithChan(request *GetSetRequest) (<-chan *GetSetResponse, <-chan error) {
+	responseChan := make(chan *GetSetResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetSet(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// GetSetWithCallback invokes the imm.GetSet API asynchronously
+// api document: https://help.aliyun.com/api/imm/getset.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetSetWithCallback(request *GetSetRequest, callback func(response *GetSetResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetSetResponse
+		var err error
+		defer close(result)
+		response, err = client.GetSet(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// GetSetRequest is the request struct for api GetSet
+type GetSetRequest struct {
+	*requests.RpcRequest
+	Project string `position:"Query" name:"Project"`
+	SetId   string `position:"Query" name:"SetId"`
+}
+
+// GetSetResponse is the response struct for api GetSet
+type GetSetResponse struct {
+	*responses.BaseResponse
+	RequestId   string `json:"RequestId" xml:"RequestId"`
+	SetId       string `json:"SetId" xml:"SetId"`
+	SetName     string `json:"SetName" xml:"SetName"`
+	CreateTime  int    `json:"CreateTime" xml:"CreateTime"`
+	ModifyTime  int    `json:"ModifyTime" xml:"ModifyTime"`
+	FaceCount   int    `json:"FaceCount" xml:"FaceCount"`
+	ImageCount  int    `json:"ImageCount" xml:"ImageCount"`
+	VideoCount  int    `json:"VideoCount" xml:"VideoCount"`
+	VideoLength int    `json:"VideoLength" xml:"VideoLength"`
+}
+
+// CreateGetSetRequest creates a request to invoke GetSet API
+func CreateGetSetRequest() (request *GetSetRequest) {
+	request = &GetSetRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "GetSet", "imm", "openAPI")
+	return
+}
+
+// CreateGetSetResponse creates a response to parse from GetSet response
+func CreateGetSetResponse() (response *GetSetResponse) {
+	response = &GetSetResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 132 - 0
services/imm/get_video.go

@@ -0,0 +1,132 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// GetVideo invokes the imm.GetVideo API synchronously
+// api document: https://help.aliyun.com/api/imm/getvideo.html
+func (client *Client) GetVideo(request *GetVideoRequest) (response *GetVideoResponse, err error) {
+	response = CreateGetVideoResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// GetVideoWithChan invokes the imm.GetVideo API asynchronously
+// api document: https://help.aliyun.com/api/imm/getvideo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetVideoWithChan(request *GetVideoRequest) (<-chan *GetVideoResponse, <-chan error) {
+	responseChan := make(chan *GetVideoResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetVideo(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// GetVideoWithCallback invokes the imm.GetVideo API asynchronously
+// api document: https://help.aliyun.com/api/imm/getvideo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetVideoWithCallback(request *GetVideoRequest, callback func(response *GetVideoResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetVideoResponse
+		var err error
+		defer close(result)
+		response, err = client.GetVideo(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// GetVideoRequest is the request struct for api GetVideo
+type GetVideoRequest struct {
+	*requests.RpcRequest
+	VideoUri string `position:"Query" name:"VideoUri"`
+	Project  string `position:"Query" name:"Project"`
+	SetId    string `position:"Query" name:"SetId"`
+}
+
+// GetVideoResponse is the response struct for api GetVideo
+type GetVideoResponse struct {
+	*responses.BaseResponse
+	RequestId           string          `json:"RequestId" xml:"RequestId"`
+	SetId               string          `json:"SetId" xml:"SetId"`
+	VideoUri            string          `json:"VideoUri" xml:"VideoUri"`
+	RemarksA            string          `json:"RemarksA" xml:"RemarksA"`
+	RemarksB            string          `json:"RemarksB" xml:"RemarksB"`
+	CreateTime          string          `json:"CreateTime" xml:"CreateTime"`
+	ModifyTime          string          `json:"ModifyTime" xml:"ModifyTime"`
+	VideoWidth          int             `json:"VideoWidth" xml:"VideoWidth"`
+	VideoHeight         int             `json:"VideoHeight" xml:"VideoHeight"`
+	VideoFormat         string          `json:"VideoFormat" xml:"VideoFormat"`
+	VideoDuration       float64         `json:"VideoDuration" xml:"VideoDuration"`
+	FileSize            int             `json:"FileSize" xml:"FileSize"`
+	VideoFrames         int             `json:"VideoFrames" xml:"VideoFrames"`
+	SourceType          string          `json:"SourceType" xml:"SourceType"`
+	SourceUri           string          `json:"SourceUri" xml:"SourceUri"`
+	SourcePosition      string          `json:"SourcePosition" xml:"SourcePosition"`
+	ProcessStatus       string          `json:"ProcessStatus" xml:"ProcessStatus"`
+	ProcessModifyTime   string          `json:"ProcessModifyTime" xml:"ProcessModifyTime"`
+	VideoTagsStatus     string          `json:"VideoTagsStatus" xml:"VideoTagsStatus"`
+	VideoTagsModifyTime string          `json:"VideoTagsModifyTime" xml:"VideoTagsModifyTime"`
+	CelebrityStatus     string          `json:"CelebrityStatus" xml:"CelebrityStatus"`
+	CelebrityModifyTime string          `json:"CelebrityModifyTime" xml:"CelebrityModifyTime"`
+	ProcessFailReason   string          `json:"ProcessFailReason" xml:"ProcessFailReason"`
+	VideoTagsFailReason string          `json:"VideoTagsFailReason" xml:"VideoTagsFailReason"`
+	CelebrityFailReason string          `json:"CelebrityFailReason" xml:"CelebrityFailReason"`
+	Celebrity           []CelebrityItem `json:"Celebrity" xml:"Celebrity"`
+	VideoTags           []VideoTagsItem `json:"VideoTags" xml:"VideoTags"`
+	Persons             []PersonsItem   `json:"Persons" xml:"Persons"`
+}
+
+// CreateGetVideoRequest creates a request to invoke GetVideo API
+func CreateGetVideoRequest() (request *GetVideoRequest) {
+	request = &GetVideoRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "GetVideo", "imm", "openAPI")
+	return
+}
+
+// CreateGetVideoResponse creates a response to parse from GetVideo response
+func CreateGetVideoResponse() (response *GetVideoResponse) {
+	response = &GetVideoResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 116 - 0
services/imm/get_video_task.go

@@ -0,0 +1,116 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// GetVideoTask invokes the imm.GetVideoTask API synchronously
+// api document: https://help.aliyun.com/api/imm/getvideotask.html
+func (client *Client) GetVideoTask(request *GetVideoTaskRequest) (response *GetVideoTaskResponse, err error) {
+	response = CreateGetVideoTaskResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// GetVideoTaskWithChan invokes the imm.GetVideoTask API asynchronously
+// api document: https://help.aliyun.com/api/imm/getvideotask.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetVideoTaskWithChan(request *GetVideoTaskRequest) (<-chan *GetVideoTaskResponse, <-chan error) {
+	responseChan := make(chan *GetVideoTaskResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.GetVideoTask(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// GetVideoTaskWithCallback invokes the imm.GetVideoTask API asynchronously
+// api document: https://help.aliyun.com/api/imm/getvideotask.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) GetVideoTaskWithCallback(request *GetVideoTaskRequest, callback func(response *GetVideoTaskResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *GetVideoTaskResponse
+		var err error
+		defer close(result)
+		response, err = client.GetVideoTask(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// GetVideoTaskRequest is the request struct for api GetVideoTask
+type GetVideoTaskRequest struct {
+	*requests.RpcRequest
+	TaskType string `position:"Query" name:"TaskType"`
+	Project  string `position:"Query" name:"Project"`
+	TaskId   string `position:"Query" name:"TaskId"`
+}
+
+// GetVideoTaskResponse is the response struct for api GetVideoTask
+type GetVideoTaskResponse struct {
+	*responses.BaseResponse
+	RequestId       string `json:"RequestId" xml:"RequestId"`
+	TaskId          string `json:"TaskId" xml:"TaskId"`
+	TaskType        string `json:"TaskType" xml:"TaskType"`
+	Parameters      string `json:"Parameters" xml:"Parameters"`
+	Result          string `json:"Result" xml:"Result"`
+	Status          string `json:"Status" xml:"Status"`
+	StartTime       string `json:"StartTime" xml:"StartTime"`
+	EndTime         string `json:"EndTime" xml:"EndTime"`
+	ErrorMessage    string `json:"ErrorMessage" xml:"ErrorMessage"`
+	NotifyEndpoint  string `json:"NotifyEndpoint" xml:"NotifyEndpoint"`
+	NotifyTopicName string `json:"NotifyTopicName" xml:"NotifyTopicName"`
+	Progress        int    `json:"Progress" xml:"Progress"`
+}
+
+// CreateGetVideoTaskRequest creates a request to invoke GetVideoTask API
+func CreateGetVideoTaskRequest() (request *GetVideoTaskRequest) {
+	request = &GetVideoTaskRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "GetVideoTask", "imm", "openAPI")
+	return
+}
+
+// CreateGetVideoTaskResponse creates a response to parse from GetVideoTask response
+func CreateGetVideoTaskResponse() (response *GetVideoTaskResponse) {
+	response = &GetVideoTaskResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 116 - 0
services/imm/index_image.go

@@ -0,0 +1,116 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// IndexImage invokes the imm.IndexImage API synchronously
+// api document: https://help.aliyun.com/api/imm/indeximage.html
+func (client *Client) IndexImage(request *IndexImageRequest) (response *IndexImageResponse, err error) {
+	response = CreateIndexImageResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// IndexImageWithChan invokes the imm.IndexImage API asynchronously
+// api document: https://help.aliyun.com/api/imm/indeximage.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) IndexImageWithChan(request *IndexImageRequest) (<-chan *IndexImageResponse, <-chan error) {
+	responseChan := make(chan *IndexImageResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.IndexImage(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// IndexImageWithCallback invokes the imm.IndexImage API asynchronously
+// api document: https://help.aliyun.com/api/imm/indeximage.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) IndexImageWithCallback(request *IndexImageRequest, callback func(response *IndexImageResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *IndexImageResponse
+		var err error
+		defer close(result)
+		response, err = client.IndexImage(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// IndexImageRequest is the request struct for api IndexImage
+type IndexImageRequest struct {
+	*requests.RpcRequest
+	ImageUri       string `position:"Query" name:"ImageUri"`
+	SourceUri      string `position:"Query" name:"SourceUri"`
+	SourcePosition string `position:"Query" name:"SourcePosition"`
+	RemarksB       string `position:"Query" name:"RemarksB"`
+	Project        string `position:"Query" name:"Project"`
+	SetId          string `position:"Query" name:"SetId"`
+	RemarksA       string `position:"Query" name:"RemarksA"`
+	SourceType     string `position:"Query" name:"SourceType"`
+}
+
+// IndexImageResponse is the response struct for api IndexImage
+type IndexImageResponse struct {
+	*responses.BaseResponse
+	RequestId  string `json:"RequestId" xml:"RequestId"`
+	SetId      string `json:"SetId" xml:"SetId"`
+	ImageUri   string `json:"ImageUri" xml:"ImageUri"`
+	RemarksA   string `json:"RemarksA" xml:"RemarksA"`
+	RemarksB   string `json:"RemarksB" xml:"RemarksB"`
+	CreateTime string `json:"CreateTime" xml:"CreateTime"`
+	ModifyTime string `json:"ModifyTime" xml:"ModifyTime"`
+}
+
+// CreateIndexImageRequest creates a request to invoke IndexImage API
+func CreateIndexImageRequest() (request *IndexImageRequest) {
+	request = &IndexImageRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "IndexImage", "imm", "openAPI")
+	return
+}
+
+// CreateIndexImageResponse creates a response to parse from IndexImage response
+func CreateIndexImageResponse() (response *IndexImageResponse) {
+	response = &IndexImageResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 125 - 0
services/imm/index_video.go

@@ -0,0 +1,125 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// IndexVideo invokes the imm.IndexVideo API synchronously
+// api document: https://help.aliyun.com/api/imm/indexvideo.html
+func (client *Client) IndexVideo(request *IndexVideoRequest) (response *IndexVideoResponse, err error) {
+	response = CreateIndexVideoResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// IndexVideoWithChan invokes the imm.IndexVideo API asynchronously
+// api document: https://help.aliyun.com/api/imm/indexvideo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) IndexVideoWithChan(request *IndexVideoRequest) (<-chan *IndexVideoResponse, <-chan error) {
+	responseChan := make(chan *IndexVideoResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.IndexVideo(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// IndexVideoWithCallback invokes the imm.IndexVideo API asynchronously
+// api document: https://help.aliyun.com/api/imm/indexvideo.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) IndexVideoWithCallback(request *IndexVideoRequest, callback func(response *IndexVideoResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *IndexVideoResponse
+		var err error
+		defer close(result)
+		response, err = client.IndexVideo(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// IndexVideoRequest is the request struct for api IndexVideo
+type IndexVideoRequest struct {
+	*requests.RpcRequest
+	GrabType  string           `position:"Query" name:"GrabType"`
+	RemarksB  string           `position:"Query" name:"RemarksB"`
+	Project   string           `position:"Query" name:"Project"`
+	RemarksA  string           `position:"Query" name:"RemarksA"`
+	EndTime   string           `position:"Query" name:"EndTime"`
+	StartTime string           `position:"Query" name:"StartTime"`
+	VideoUri  string           `position:"Query" name:"VideoUri"`
+	SaveType  requests.Boolean `position:"Query" name:"SaveType"`
+	SetId     string           `position:"Query" name:"SetId"`
+	Interval  string           `position:"Query" name:"Interval"`
+	TgtUri    string           `position:"Query" name:"TgtUri"`
+}
+
+// IndexVideoResponse is the response struct for api IndexVideo
+type IndexVideoResponse struct {
+	*responses.BaseResponse
+	RequestId  string  `json:"RequestId" xml:"RequestId"`
+	SetId      string  `json:"SetId" xml:"SetId"`
+	VideoUri   string  `json:"VideoUri" xml:"VideoUri"`
+	RemarksA   string  `json:"RemarksA" xml:"RemarksA"`
+	RemarksB   string  `json:"RemarksB" xml:"RemarksB"`
+	CreateTime string  `json:"CreateTime" xml:"CreateTime"`
+	ModifyTime string  `json:"ModifyTime" xml:"ModifyTime"`
+	Interval   float64 `json:"Interval" xml:"Interval"`
+	GrabType   string  `json:"GrabType" xml:"GrabType"`
+	StartTime  string  `json:"StartTime" xml:"StartTime"`
+	EndTime    string  `json:"EndTime" xml:"EndTime"`
+	SaveType   bool    `json:"SaveType" xml:"SaveType"`
+	TgtUri     string  `json:"TgtUri" xml:"TgtUri"`
+}
+
+// CreateIndexVideoRequest creates a request to invoke IndexVideo API
+func CreateIndexVideoRequest() (request *IndexVideoRequest) {
+	request = &IndexVideoRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "IndexVideo", "imm", "openAPI")
+	return
+}
+
+// CreateIndexVideoResponse creates a response to parse from IndexVideo response
+func CreateIndexVideoResponse() (response *IndexVideoResponse) {
+	response = &IndexVideoResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/imm/list_images.go

@@ -0,0 +1,109 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ListImages invokes the imm.ListImages API synchronously
+// api document: https://help.aliyun.com/api/imm/listimages.html
+func (client *Client) ListImages(request *ListImagesRequest) (response *ListImagesResponse, err error) {
+	response = CreateListImagesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListImagesWithChan invokes the imm.ListImages API asynchronously
+// api document: https://help.aliyun.com/api/imm/listimages.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListImagesWithChan(request *ListImagesRequest) (<-chan *ListImagesResponse, <-chan error) {
+	responseChan := make(chan *ListImagesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListImages(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListImagesWithCallback invokes the imm.ListImages API asynchronously
+// api document: https://help.aliyun.com/api/imm/listimages.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListImagesWithCallback(request *ListImagesRequest, callback func(response *ListImagesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListImagesResponse
+		var err error
+		defer close(result)
+		response, err = client.ListImages(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListImagesRequest is the request struct for api ListImages
+type ListImagesRequest struct {
+	*requests.RpcRequest
+	Marker          string `position:"Query" name:"Marker"`
+	Project         string `position:"Query" name:"Project"`
+	SetId           string `position:"Query" name:"SetId"`
+	CreateTimeStart string `position:"Query" name:"CreateTimeStart"`
+}
+
+// ListImagesResponse is the response struct for api ListImages
+type ListImagesResponse struct {
+	*responses.BaseResponse
+	SetId      string       `json:"SetId" xml:"SetId"`
+	NextMarker string       `json:"NextMarker" xml:"NextMarker"`
+	RequestId  string       `json:"RequestId" xml:"RequestId"`
+	Images     []ImagesItem `json:"Images" xml:"Images"`
+}
+
+// CreateListImagesRequest creates a request to invoke ListImages API
+func CreateListImagesRequest() (request *ListImagesRequest) {
+	request = &ListImagesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "ListImages", "imm", "openAPI")
+	return
+}
+
+// CreateListImagesResponse creates a response to parse from ListImages response
+func CreateListImagesResponse() (response *ListImagesResponse) {
+	response = &ListImagesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/imm/list_set_tags.go

@@ -0,0 +1,106 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ListSetTags invokes the imm.ListSetTags API synchronously
+// api document: https://help.aliyun.com/api/imm/listsettags.html
+func (client *Client) ListSetTags(request *ListSetTagsRequest) (response *ListSetTagsResponse, err error) {
+	response = CreateListSetTagsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListSetTagsWithChan invokes the imm.ListSetTags API asynchronously
+// api document: https://help.aliyun.com/api/imm/listsettags.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListSetTagsWithChan(request *ListSetTagsRequest) (<-chan *ListSetTagsResponse, <-chan error) {
+	responseChan := make(chan *ListSetTagsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListSetTags(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListSetTagsWithCallback invokes the imm.ListSetTags API asynchronously
+// api document: https://help.aliyun.com/api/imm/listsettags.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListSetTagsWithCallback(request *ListSetTagsRequest, callback func(response *ListSetTagsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListSetTagsResponse
+		var err error
+		defer close(result)
+		response, err = client.ListSetTags(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListSetTagsRequest is the request struct for api ListSetTags
+type ListSetTagsRequest struct {
+	*requests.RpcRequest
+	Project string `position:"Query" name:"Project"`
+	SetId   string `position:"Query" name:"SetId"`
+}
+
+// ListSetTagsResponse is the response struct for api ListSetTags
+type ListSetTagsResponse struct {
+	*responses.BaseResponse
+	RequestId string     `json:"RequestId" xml:"RequestId"`
+	SetId     string     `json:"SetId" xml:"SetId"`
+	Tags      []TagsItem `json:"Tags" xml:"Tags"`
+}
+
+// CreateListSetTagsRequest creates a request to invoke ListSetTags API
+func CreateListSetTagsRequest() (request *ListSetTagsRequest) {
+	request = &ListSetTagsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "ListSetTags", "imm", "openAPI")
+	return
+}
+
+// CreateListSetTagsResponse creates a response to parse from ListSetTags response
+func CreateListSetTagsResponse() (response *ListSetTagsResponse) {
+	response = &ListSetTagsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 106 - 0
services/imm/list_sets.go

@@ -0,0 +1,106 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ListSets invokes the imm.ListSets API synchronously
+// api document: https://help.aliyun.com/api/imm/listsets.html
+func (client *Client) ListSets(request *ListSetsRequest) (response *ListSetsResponse, err error) {
+	response = CreateListSetsResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListSetsWithChan invokes the imm.ListSets API asynchronously
+// api document: https://help.aliyun.com/api/imm/listsets.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListSetsWithChan(request *ListSetsRequest) (<-chan *ListSetsResponse, <-chan error) {
+	responseChan := make(chan *ListSetsResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListSets(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListSetsWithCallback invokes the imm.ListSets API asynchronously
+// api document: https://help.aliyun.com/api/imm/listsets.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListSetsWithCallback(request *ListSetsRequest, callback func(response *ListSetsResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListSetsResponse
+		var err error
+		defer close(result)
+		response, err = client.ListSets(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListSetsRequest is the request struct for api ListSets
+type ListSetsRequest struct {
+	*requests.RpcRequest
+	Marker  string `position:"Query" name:"Marker"`
+	Project string `position:"Query" name:"Project"`
+}
+
+// ListSetsResponse is the response struct for api ListSets
+type ListSetsResponse struct {
+	*responses.BaseResponse
+	RequestId  string     `json:"RequestId" xml:"RequestId"`
+	NextMarker string     `json:"NextMarker" xml:"NextMarker"`
+	Sets       []SetsItem `json:"Sets" xml:"Sets"`
+}
+
+// CreateListSetsRequest creates a request to invoke ListSets API
+func CreateListSetsRequest() (request *ListSetsRequest) {
+	request = &ListSetsRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "ListSets", "imm", "openAPI")
+	return
+}
+
+// CreateListSetsResponse creates a response to parse from ListSets response
+func CreateListSetsResponse() (response *ListSetsResponse) {
+	response = &ListSetsResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 4 - 2
services/imm/list_tag_names.go

@@ -76,6 +76,7 @@ func (client *Client) ListTagNamesWithCallback(request *ListTagNamesRequest, cal
 // ListTagNamesRequest is the request struct for api ListTagNames
 type ListTagNamesRequest struct {
 	*requests.RpcRequest
+	Marker  string `position:"Query" name:"Marker"`
 	Project string `position:"Query" name:"Project"`
 	SetId   string `position:"Query" name:"SetId"`
 }
@@ -83,8 +84,9 @@ type ListTagNamesRequest struct {
 // ListTagNamesResponse is the response struct for api ListTagNames
 type ListTagNamesResponse struct {
 	*responses.BaseResponse
-	RequestId string     `json:"RequestId" xml:"RequestId"`
-	Tags      []TagsItem `json:"Tags" xml:"Tags"`
+	RequestId  string     `json:"RequestId" xml:"RequestId"`
+	NextMarker string     `json:"NextMarker" xml:"NextMarker"`
+	Tags       []TagsItem `json:"Tags" xml:"Tags"`
 }
 
 // CreateListTagNamesRequest creates a request to invoke ListTagNames API

+ 110 - 0
services/imm/list_video_audios.go

@@ -0,0 +1,110 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ListVideoAudios invokes the imm.ListVideoAudios API synchronously
+// api document: https://help.aliyun.com/api/imm/listvideoaudios.html
+func (client *Client) ListVideoAudios(request *ListVideoAudiosRequest) (response *ListVideoAudiosResponse, err error) {
+	response = CreateListVideoAudiosResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListVideoAudiosWithChan invokes the imm.ListVideoAudios API asynchronously
+// api document: https://help.aliyun.com/api/imm/listvideoaudios.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListVideoAudiosWithChan(request *ListVideoAudiosRequest) (<-chan *ListVideoAudiosResponse, <-chan error) {
+	responseChan := make(chan *ListVideoAudiosResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListVideoAudios(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListVideoAudiosWithCallback invokes the imm.ListVideoAudios API asynchronously
+// api document: https://help.aliyun.com/api/imm/listvideoaudios.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListVideoAudiosWithCallback(request *ListVideoAudiosRequest, callback func(response *ListVideoAudiosResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListVideoAudiosResponse
+		var err error
+		defer close(result)
+		response, err = client.ListVideoAudios(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListVideoAudiosRequest is the request struct for api ListVideoAudios
+type ListVideoAudiosRequest struct {
+	*requests.RpcRequest
+	VideoUri string `position:"Query" name:"VideoUri"`
+	Marker   string `position:"Query" name:"Marker"`
+	Project  string `position:"Query" name:"Project"`
+	SetId    string `position:"Query" name:"SetId"`
+}
+
+// ListVideoAudiosResponse is the response struct for api ListVideoAudios
+type ListVideoAudiosResponse struct {
+	*responses.BaseResponse
+	SetId      string       `json:"SetId" xml:"SetId"`
+	VideoUri   string       `json:"VideoUri" xml:"VideoUri"`
+	NextMarker string       `json:"NextMarker" xml:"NextMarker"`
+	RequestId  string       `json:"RequestId" xml:"RequestId"`
+	Audios     []AudiosItem `json:"Audios" xml:"Audios"`
+}
+
+// CreateListVideoAudiosRequest creates a request to invoke ListVideoAudios API
+func CreateListVideoAudiosRequest() (request *ListVideoAudiosRequest) {
+	request = &ListVideoAudiosRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "ListVideoAudios", "imm", "openAPI")
+	return
+}
+
+// CreateListVideoAudiosResponse creates a response to parse from ListVideoAudios response
+func CreateListVideoAudiosResponse() (response *ListVideoAudiosResponse) {
+	response = &ListVideoAudiosResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 110 - 0
services/imm/list_video_frames.go

@@ -0,0 +1,110 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ListVideoFrames invokes the imm.ListVideoFrames API synchronously
+// api document: https://help.aliyun.com/api/imm/listvideoframes.html
+func (client *Client) ListVideoFrames(request *ListVideoFramesRequest) (response *ListVideoFramesResponse, err error) {
+	response = CreateListVideoFramesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListVideoFramesWithChan invokes the imm.ListVideoFrames API asynchronously
+// api document: https://help.aliyun.com/api/imm/listvideoframes.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListVideoFramesWithChan(request *ListVideoFramesRequest) (<-chan *ListVideoFramesResponse, <-chan error) {
+	responseChan := make(chan *ListVideoFramesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListVideoFrames(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListVideoFramesWithCallback invokes the imm.ListVideoFrames API asynchronously
+// api document: https://help.aliyun.com/api/imm/listvideoframes.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListVideoFramesWithCallback(request *ListVideoFramesRequest, callback func(response *ListVideoFramesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListVideoFramesResponse
+		var err error
+		defer close(result)
+		response, err = client.ListVideoFrames(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListVideoFramesRequest is the request struct for api ListVideoFrames
+type ListVideoFramesRequest struct {
+	*requests.RpcRequest
+	VideoUri string `position:"Query" name:"VideoUri"`
+	Marker   string `position:"Query" name:"Marker"`
+	Project  string `position:"Query" name:"Project"`
+	SetId    string `position:"Query" name:"SetId"`
+}
+
+// ListVideoFramesResponse is the response struct for api ListVideoFrames
+type ListVideoFramesResponse struct {
+	*responses.BaseResponse
+	SetId      string       `json:"SetId" xml:"SetId"`
+	VideoUri   string       `json:"VideoUri" xml:"VideoUri"`
+	NextMarker string       `json:"NextMarker" xml:"NextMarker"`
+	RequestId  string       `json:"RequestId" xml:"RequestId"`
+	Frames     []FramesItem `json:"Frames" xml:"Frames"`
+}
+
+// CreateListVideoFramesRequest creates a request to invoke ListVideoFrames API
+func CreateListVideoFramesRequest() (request *ListVideoFramesRequest) {
+	request = &ListVideoFramesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "ListVideoFrames", "imm", "openAPI")
+	return
+}
+
+// CreateListVideoFramesResponse creates a response to parse from ListVideoFrames response
+func CreateListVideoFramesResponse() (response *ListVideoFramesResponse) {
+	response = &ListVideoFramesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 108 - 0
services/imm/list_video_tasks.go

@@ -0,0 +1,108 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ListVideoTasks invokes the imm.ListVideoTasks API synchronously
+// api document: https://help.aliyun.com/api/imm/listvideotasks.html
+func (client *Client) ListVideoTasks(request *ListVideoTasksRequest) (response *ListVideoTasksResponse, err error) {
+	response = CreateListVideoTasksResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListVideoTasksWithChan invokes the imm.ListVideoTasks API asynchronously
+// api document: https://help.aliyun.com/api/imm/listvideotasks.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListVideoTasksWithChan(request *ListVideoTasksRequest) (<-chan *ListVideoTasksResponse, <-chan error) {
+	responseChan := make(chan *ListVideoTasksResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListVideoTasks(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListVideoTasksWithCallback invokes the imm.ListVideoTasks API asynchronously
+// api document: https://help.aliyun.com/api/imm/listvideotasks.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListVideoTasksWithCallback(request *ListVideoTasksRequest, callback func(response *ListVideoTasksResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListVideoTasksResponse
+		var err error
+		defer close(result)
+		response, err = client.ListVideoTasks(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListVideoTasksRequest is the request struct for api ListVideoTasks
+type ListVideoTasksRequest struct {
+	*requests.RpcRequest
+	MaxKeys  requests.Integer `position:"Query" name:"MaxKeys"`
+	TaskType string           `position:"Query" name:"TaskType"`
+	Marker   string           `position:"Query" name:"Marker"`
+	Project  string           `position:"Query" name:"Project"`
+}
+
+// ListVideoTasksResponse is the response struct for api ListVideoTasks
+type ListVideoTasksResponse struct {
+	*responses.BaseResponse
+	RequestId  string      `json:"RequestId" xml:"RequestId"`
+	NextMarker string      `json:"NextMarker" xml:"NextMarker"`
+	Tasks      []TasksItem `json:"Tasks" xml:"Tasks"`
+}
+
+// CreateListVideoTasksRequest creates a request to invoke ListVideoTasks API
+func CreateListVideoTasksRequest() (request *ListVideoTasksRequest) {
+	request = &ListVideoTasksRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "ListVideoTasks", "imm", "openAPI")
+	return
+}
+
+// CreateListVideoTasksResponse creates a response to parse from ListVideoTasks response
+func CreateListVideoTasksResponse() (response *ListVideoTasksResponse) {
+	response = &ListVideoTasksResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/imm/list_videos.go

@@ -0,0 +1,109 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// ListVideos invokes the imm.ListVideos API synchronously
+// api document: https://help.aliyun.com/api/imm/listvideos.html
+func (client *Client) ListVideos(request *ListVideosRequest) (response *ListVideosResponse, err error) {
+	response = CreateListVideosResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// ListVideosWithChan invokes the imm.ListVideos API asynchronously
+// api document: https://help.aliyun.com/api/imm/listvideos.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListVideosWithChan(request *ListVideosRequest) (<-chan *ListVideosResponse, <-chan error) {
+	responseChan := make(chan *ListVideosResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.ListVideos(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// ListVideosWithCallback invokes the imm.ListVideos API asynchronously
+// api document: https://help.aliyun.com/api/imm/listvideos.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) ListVideosWithCallback(request *ListVideosRequest, callback func(response *ListVideosResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *ListVideosResponse
+		var err error
+		defer close(result)
+		response, err = client.ListVideos(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// ListVideosRequest is the request struct for api ListVideos
+type ListVideosRequest struct {
+	*requests.RpcRequest
+	Marker          string `position:"Query" name:"Marker"`
+	Project         string `position:"Query" name:"Project"`
+	SetId           string `position:"Query" name:"SetId"`
+	CreateTimeStart string `position:"Query" name:"CreateTimeStart"`
+}
+
+// ListVideosResponse is the response struct for api ListVideos
+type ListVideosResponse struct {
+	*responses.BaseResponse
+	SetId      string       `json:"SetId" xml:"SetId"`
+	NextMarker string       `json:"NextMarker" xml:"NextMarker"`
+	RequestId  string       `json:"RequestId" xml:"RequestId"`
+	Videos     []VideosItem `json:"Videos" xml:"Videos"`
+}
+
+// CreateListVideosRequest creates a request to invoke ListVideos API
+func CreateListVideosRequest() (request *ListVideosRequest) {
+	request = &ListVideosRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "ListVideos", "imm", "openAPI")
+	return
+}
+
+// CreateListVideosResponse creates a response to parse from ListVideos response
+func CreateListVideosResponse() (response *ListVideosResponse) {
+	response = &ListVideosResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 124 - 0
services/imm/search_images.go

@@ -0,0 +1,124 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// SearchImages invokes the imm.SearchImages API synchronously
+// api document: https://help.aliyun.com/api/imm/searchimages.html
+func (client *Client) SearchImages(request *SearchImagesRequest) (response *SearchImagesResponse, err error) {
+	response = CreateSearchImagesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// SearchImagesWithChan invokes the imm.SearchImages API asynchronously
+// api document: https://help.aliyun.com/api/imm/searchimages.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) SearchImagesWithChan(request *SearchImagesRequest) (<-chan *SearchImagesResponse, <-chan error) {
+	responseChan := make(chan *SearchImagesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.SearchImages(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// SearchImagesWithCallback invokes the imm.SearchImages API asynchronously
+// api document: https://help.aliyun.com/api/imm/searchimages.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) SearchImagesWithCallback(request *SearchImagesRequest, callback func(response *SearchImagesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *SearchImagesResponse
+		var err error
+		defer close(result)
+		response, err = client.SearchImages(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// SearchImagesRequest is the request struct for api SearchImages
+type SearchImagesRequest struct {
+	*requests.RpcRequest
+	Gender           string `position:"Query" name:"Gender"`
+	RemarksAPrefix   string `position:"Query" name:"RemarksAPrefix"`
+	Project          string `position:"Query" name:"Project"`
+	OrderBy          string `position:"Query" name:"OrderBy"`
+	ImageSizeRange   string `position:"Query" name:"ImageSizeRange"`
+	RemarksBPrefix   string `position:"Query" name:"RemarksBPrefix"`
+	TagNames         string `position:"Query" name:"TagNames"`
+	SourceUriPrefix  string `position:"Query" name:"SourceUriPrefix"`
+	LocationBoundary string `position:"Query" name:"LocationBoundary"`
+	Emotion          string `position:"Query" name:"Emotion"`
+	ImageTimeRange   string `position:"Query" name:"ImageTimeRange"`
+	Marker           string `position:"Query" name:"Marker"`
+	OCRContentsMatch string `position:"Query" name:"OCRContentsMatch"`
+	CreateTimeRange  string `position:"Query" name:"CreateTimeRange"`
+	SetId            string `position:"Query" name:"SetId"`
+	SourceType       string `position:"Query" name:"SourceType"`
+	UpdateTimeRange  string `position:"Query" name:"UpdateTimeRange"`
+	AgeRange         string `position:"Query" name:"AgeRange"`
+	Order            string `position:"Query" name:"Order"`
+}
+
+// SearchImagesResponse is the response struct for api SearchImages
+type SearchImagesResponse struct {
+	*responses.BaseResponse
+	SetId      string       `json:"SetId" xml:"SetId"`
+	NextMarker string       `json:"NextMarker" xml:"NextMarker"`
+	RequestId  string       `json:"RequestId" xml:"RequestId"`
+	Images     []ImagesItem `json:"Images" xml:"Images"`
+}
+
+// CreateSearchImagesRequest creates a request to invoke SearchImages API
+func CreateSearchImagesRequest() (request *SearchImagesRequest) {
+	request = &SearchImagesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "SearchImages", "imm", "openAPI")
+	return
+}
+
+// CreateSearchImagesResponse creates a response to parse from SearchImages response
+func CreateSearchImagesResponse() (response *SearchImagesResponse) {
+	response = &SearchImagesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 109 - 0
services/imm/search_images_by_tag_names.go

@@ -0,0 +1,109 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// SearchImagesByTagNames invokes the imm.SearchImagesByTagNames API synchronously
+// api document: https://help.aliyun.com/api/imm/searchimagesbytagnames.html
+func (client *Client) SearchImagesByTagNames(request *SearchImagesByTagNamesRequest) (response *SearchImagesByTagNamesResponse, err error) {
+	response = CreateSearchImagesByTagNamesResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// SearchImagesByTagNamesWithChan invokes the imm.SearchImagesByTagNames API asynchronously
+// api document: https://help.aliyun.com/api/imm/searchimagesbytagnames.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) SearchImagesByTagNamesWithChan(request *SearchImagesByTagNamesRequest) (<-chan *SearchImagesByTagNamesResponse, <-chan error) {
+	responseChan := make(chan *SearchImagesByTagNamesResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.SearchImagesByTagNames(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// SearchImagesByTagNamesWithCallback invokes the imm.SearchImagesByTagNames API asynchronously
+// api document: https://help.aliyun.com/api/imm/searchimagesbytagnames.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) SearchImagesByTagNamesWithCallback(request *SearchImagesByTagNamesRequest, callback func(response *SearchImagesByTagNamesResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *SearchImagesByTagNamesResponse
+		var err error
+		defer close(result)
+		response, err = client.SearchImagesByTagNames(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// SearchImagesByTagNamesRequest is the request struct for api SearchImagesByTagNames
+type SearchImagesByTagNamesRequest struct {
+	*requests.RpcRequest
+	Marker   string `position:"Query" name:"Marker"`
+	Project  string `position:"Query" name:"Project"`
+	SetId    string `position:"Query" name:"SetId"`
+	TagNames string `position:"Query" name:"TagNames"`
+}
+
+// SearchImagesByTagNamesResponse is the response struct for api SearchImagesByTagNames
+type SearchImagesByTagNamesResponse struct {
+	*responses.BaseResponse
+	SetId      string   `json:"SetId" xml:"SetId"`
+	NextMarker string   `json:"NextMarker" xml:"NextMarker"`
+	RequestId  string   `json:"RequestId" xml:"RequestId"`
+	Images     []Frames `json:"Images" xml:"Images"`
+}
+
+// CreateSearchImagesByTagNamesRequest creates a request to invoke SearchImagesByTagNames API
+func CreateSearchImagesByTagNamesRequest() (request *SearchImagesByTagNamesRequest) {
+	request = &SearchImagesByTagNamesRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "SearchImagesByTagNames", "imm", "openAPI")
+	return
+}
+
+// CreateSearchImagesByTagNamesResponse creates a response to parse from SearchImagesByTagNames response
+func CreateSearchImagesByTagNamesResponse() (response *SearchImagesByTagNamesResponse) {
+	response = &SearchImagesByTagNamesResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

+ 21 - 0
services/imm/struct_audio_texts.go

@@ -0,0 +1,21 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// AudioTexts is a nested struct in imm response
+type AudioTexts struct {
+	AudioTextsItem []AudioTextsItem `json:"AudioTextsItem" xml:"AudioTextsItem"`
+}

+ 30 - 0
services/imm/struct_audio_texts_item.go

@@ -0,0 +1,30 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// AudioTextsItem is a nested struct in imm response
+type AudioTextsItem struct {
+	Text            string  `json:"Text" xml:"Text"`
+	BeginTime       float64 `json:"BeginTime" xml:"BeginTime"`
+	EndTime         float64 `json:"EndTime" xml:"EndTime"`
+	SilenceDuration float64 `json:"SilenceDuration" xml:"SilenceDuration"`
+	EmotionValue    float64 `json:"EmotionValue" xml:"EmotionValue"`
+	ChannelId       int     `json:"ChannelId" xml:"ChannelId"`
+	SpeechRate      int     `json:"SpeechRate" xml:"SpeechRate"`
+	Confidence      float64 `json:"Confidence" xml:"Confidence"`
+	Person          string  `json:"Person" xml:"Person"`
+	Library         string  `json:"Library" xml:"Library"`
+}

+ 21 - 0
services/imm/struct_audios.go

@@ -0,0 +1,21 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// Audios is a nested struct in imm response
+type Audios struct {
+	AudiosItem []AudiosItem `json:"AudiosItem" xml:"AudiosItem"`
+}

+ 39 - 0
services/imm/struct_audios_item.go

@@ -0,0 +1,39 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// AudiosItem is a nested struct in imm response
+type AudiosItem struct {
+	AudioDuration        float64          `json:"AudioDuration" xml:"AudioDuration"`
+	AudioUri             string           `json:"AudioUri" xml:"AudioUri"`
+	AudioRate            int              `json:"AudioRate" xml:"AudioRate"`
+	SourceType           string           `json:"SourceType" xml:"SourceType"`
+	ModifyTime           string           `json:"ModifyTime" xml:"ModifyTime"`
+	FileSize             int              `json:"FileSize" xml:"FileSize"`
+	SourceUri            string           `json:"SourceUri" xml:"SourceUri"`
+	CreateTime           string           `json:"CreateTime" xml:"CreateTime"`
+	RemarksA             string           `json:"RemarksA" xml:"RemarksA"`
+	RemarksB             string           `json:"RemarksB" xml:"RemarksB"`
+	AudioTextsStatus     string           `json:"AudioTextsStatus" xml:"AudioTextsStatus"`
+	AudioTextsModifyTime string           `json:"AudioTextsModifyTime" xml:"AudioTextsModifyTime"`
+	ProcessModifyTime    string           `json:"ProcessModifyTime" xml:"ProcessModifyTime"`
+	ProcessStatus        string           `json:"ProcessStatus" xml:"ProcessStatus"`
+	SourcePosition       string           `json:"SourcePosition" xml:"SourcePosition"`
+	AudioFormat          string           `json:"AudioFormat" xml:"AudioFormat"`
+	AudioTextsFailReason string           `json:"AudioTextsFailReason" xml:"AudioTextsFailReason"`
+	ProcessFailReason    string           `json:"ProcessFailReason" xml:"ProcessFailReason"`
+	AudioTexts           []AudioTextsItem `json:"AudioTexts" xml:"AudioTexts"`
+}

+ 24 - 0
services/imm/struct_celebrity_boundary.go

@@ -0,0 +1,24 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// CelebrityBoundary is a nested struct in imm response
+type CelebrityBoundary struct {
+	Width  int `json:"Width" xml:"Width"`
+	Height int `json:"Height" xml:"Height"`
+	Top    int `json:"Top" xml:"Top"`
+	Left   int `json:"Left" xml:"Left"`
+}

+ 21 - 0
services/imm/struct_celebrity_in_detect_image_celebrity.go

@@ -0,0 +1,21 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// CelebrityInDetectImageCelebrity is a nested struct in imm response
+type CelebrityInDetectImageCelebrity struct {
+	CelebrityItem []CelebrityItem `json:"CelebrityItem" xml:"CelebrityItem"`
+}

+ 21 - 0
services/imm/struct_celebrity_in_get_image.go

@@ -0,0 +1,21 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// CelebrityInGetImage is a nested struct in imm response
+type CelebrityInGetImage struct {
+	CelebrityItem []CelebrityItem `json:"CelebrityItem" xml:"CelebrityItem"`
+}

+ 21 - 0
services/imm/struct_celebrity_in_get_video.go

@@ -0,0 +1,21 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// CelebrityInGetVideo is a nested struct in imm response
+type CelebrityInGetVideo struct {
+	CelebrityItem []CelebrityItem `json:"CelebrityItem" xml:"CelebrityItem"`
+}

+ 21 - 0
services/imm/struct_celebrity_in_list_images.go

@@ -0,0 +1,21 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// CelebrityInListImages is a nested struct in imm response
+type CelebrityInListImages struct {
+	CelebrityItem []CelebrityItem `json:"CelebrityItem" xml:"CelebrityItem"`
+}

+ 21 - 0
services/imm/struct_celebrity_in_list_video_frames.go

@@ -0,0 +1,21 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// CelebrityInListVideoFrames is a nested struct in imm response
+type CelebrityInListVideoFrames struct {
+	CelebrityItem []CelebrityItem `json:"CelebrityItem" xml:"CelebrityItem"`
+}

+ 21 - 0
services/imm/struct_celebrity_in_list_videos.go

@@ -0,0 +1,21 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// CelebrityInListVideos is a nested struct in imm response
+type CelebrityInListVideos struct {
+	CelebrityItem []CelebrityItem `json:"CelebrityItem" xml:"CelebrityItem"`
+}

+ 21 - 0
services/imm/struct_celebrity_in_search_images.go

@@ -0,0 +1,21 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// CelebrityInSearchImages is a nested struct in imm response
+type CelebrityInSearchImages struct {
+	CelebrityItem []CelebrityItem `json:"CelebrityItem" xml:"CelebrityItem"`
+}

+ 21 - 0
services/imm/struct_celebrity_in_search_images_by_tag_names.go

@@ -0,0 +1,21 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// CelebrityInSearchImagesByTagNames is a nested struct in imm response
+type CelebrityInSearchImagesByTagNames struct {
+	CelebrityItem []CelebrityItem `json:"CelebrityItem" xml:"CelebrityItem"`
+}

+ 26 - 0
services/imm/struct_celebrity_item.go

@@ -0,0 +1,26 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// CelebrityItem is a nested struct in imm response
+type CelebrityItem struct {
+	CelebrityConfidence  float64           `json:"CelebrityConfidence" xml:"CelebrityConfidence"`
+	CelebrityName        string            `json:"CelebrityName" xml:"CelebrityName"`
+	CelebrityLibraryName string            `json:"CelebrityLibraryName" xml:"CelebrityLibraryName"`
+	CelebrityNum         int               `json:"CelebrityNum" xml:"CelebrityNum"`
+	CelebrityGender      string            `json:"CelebrityGender" xml:"CelebrityGender"`
+	CelebrityBoundary    CelebrityBoundary `json:"CelebrityBoundary" xml:"CelebrityBoundary"`
+}

+ 27 - 0
services/imm/struct_emotion_details.go

@@ -0,0 +1,27 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// EmotionDetails is a nested struct in imm response
+type EmotionDetails struct {
+	SURPRISED float64 `json:"SURPRISED" xml:"SURPRISED"`
+	HAPPY     float64 `json:"HAPPY" xml:"HAPPY"`
+	ANGRY     float64 `json:"ANGRY" xml:"ANGRY"`
+	DISGUSTED float64 `json:"DISGUSTED" xml:"DISGUSTED"`
+	SAD       float64 `json:"SAD" xml:"SAD"`
+	CALM      float64 `json:"CALM" xml:"CALM"`
+	SCARED    float64 `json:"SCARED" xml:"SCARED"`
+}

+ 4 - 2
services/imm/struct_face_a.go

@@ -17,6 +17,8 @@ package imm
 
 // FaceA is a nested struct in imm response
 type FaceA struct {
-	ImageUri string   `json:"ImageUri" xml:"ImageUri"`
-	Axis     []string `json:"Axis" xml:"Axis"`
+	ImageUri       string         `json:"ImageUri" xml:"ImageUri"`
+	FaceId         string         `json:"FaceId" xml:"FaceId"`
+	Axis           []string       `json:"Axis" xml:"Axis"`
+	FaceAttributes FaceAttributes `json:"FaceAttributes" xml:"FaceAttributes"`
 }

+ 29 - 0
services/imm/struct_face_attributes.go

@@ -0,0 +1,29 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// FaceAttributes is a nested struct in imm response
+type FaceAttributes struct {
+	Glasses           string       `json:"Glasses" xml:"Glasses"`
+	MaskConfidence    float64      `json:"MaskConfidence" xml:"MaskConfidence"`
+	Mask              string       `json:"Mask" xml:"Mask"`
+	GlassesConfidence float64      `json:"GlassesConfidence" xml:"GlassesConfidence"`
+	RaceConfidence    float64      `json:"RaceConfidence" xml:"RaceConfidence"`
+	Beard             string       `json:"Beard" xml:"Beard"`
+	Race              string       `json:"Race" xml:"Race"`
+	BeardConfidence   float64      `json:"BeardConfidence" xml:"BeardConfidence"`
+	FaceBoundary      FaceBoundary `json:"FaceBoundary" xml:"FaceBoundary"`
+}

+ 4 - 2
services/imm/struct_face_b.go

@@ -17,6 +17,8 @@ package imm
 
 // FaceB is a nested struct in imm response
 type FaceB struct {
-	ImageUri string   `json:"ImageUri" xml:"ImageUri"`
-	Axis     []string `json:"Axis" xml:"Axis"`
+	ImageUri       string         `json:"ImageUri" xml:"ImageUri"`
+	FaceId         string         `json:"FaceId" xml:"FaceId"`
+	Axis           []string       `json:"Axis" xml:"Axis"`
+	FaceAttributes FaceAttributes `json:"FaceAttributes" xml:"FaceAttributes"`
 }

+ 24 - 0
services/imm/struct_face_boundary.go

@@ -0,0 +1,24 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// FaceBoundary is a nested struct in imm response
+type FaceBoundary struct {
+	Width  int `json:"Width" xml:"Width"`
+	Height int `json:"Height" xml:"Height"`
+	Top    int `json:"Top" xml:"Top"`
+	Left   int `json:"Left" xml:"Left"`
+}

+ 21 - 0
services/imm/struct_faces_in_detect_image_faces.go

@@ -0,0 +1,21 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// FacesInDetectImageFaces is a nested struct in imm response
+type FacesInDetectImageFaces struct {
+	FacesItem []FacesItem `json:"FacesItem" xml:"FacesItem"`
+}

+ 21 - 0
services/imm/struct_faces_in_get_image.go

@@ -0,0 +1,21 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// FacesInGetImage is a nested struct in imm response
+type FacesInGetImage struct {
+	FacesItem []FacesItem `json:"FacesItem" xml:"FacesItem"`
+}

+ 21 - 0
services/imm/struct_faces_in_list_images.go

@@ -0,0 +1,21 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// FacesInListImages is a nested struct in imm response
+type FacesInListImages struct {
+	FacesItem []FacesItemInListImages `json:"FacesItem" xml:"FacesItem"`
+}

+ 21 - 0
services/imm/struct_faces_in_list_video_frames.go

@@ -0,0 +1,21 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// FacesInListVideoFrames is a nested struct in imm response
+type FacesInListVideoFrames struct {
+	FacesItem []FacesItemInListVideoFrames `json:"FacesItem" xml:"FacesItem"`
+}

+ 21 - 0
services/imm/struct_faces_in_search_images.go

@@ -0,0 +1,21 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// FacesInSearchImages is a nested struct in imm response
+type FacesInSearchImages struct {
+	FacesItem []FacesItemInSearchImages `json:"FacesItem" xml:"FacesItem"`
+}

+ 21 - 0
services/imm/struct_faces_in_search_images_by_tag_names.go

@@ -0,0 +1,21 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// FacesInSearchImagesByTagNames is a nested struct in imm response
+type FacesInSearchImagesByTagNames struct {
+	FacesItem []FacesItemInSearchImagesByTagNames `json:"FacesItem" xml:"FacesItem"`
+}

+ 16 - 5
services/imm/struct_faces_item.go

@@ -17,9 +17,20 @@ package imm
 
 // FacesItem is a nested struct in imm response
 type FacesItem struct {
-	UnGroupReason string                   `json:"UnGroupReason" xml:"UnGroupReason"`
-	FaceId        string                   `json:"FaceId" xml:"FaceId"`
-	GroupId       string                   `json:"GroupId" xml:"GroupId"`
-	FaceAttribute FaceAttribute            `json:"FaceAttribute" xml:"FaceAttribute"`
-	FaceRectangle FaceRectangleInIndexFace `json:"FaceRectangle" xml:"FaceRectangle"`
+	FaceConfidence       float64                  `json:"FaceConfidence" xml:"FaceConfidence"`
+	EmotionConfidence    float64                  `json:"EmotionConfidence" xml:"EmotionConfidence"`
+	Age                  string                   `json:"Age" xml:"Age"`
+	Attractive           float64                  `json:"Attractive" xml:"Attractive"`
+	AttractiveConfidence float64                  `json:"AttractiveConfidence" xml:"AttractiveConfidence"`
+	UnGroupReason        string                   `json:"UnGroupReason" xml:"UnGroupReason"`
+	AgeConfidence        float64                  `json:"AgeConfidence" xml:"AgeConfidence"`
+	Gender               string                   `json:"Gender" xml:"Gender"`
+	Emotion              string                   `json:"Emotion" xml:"Emotion"`
+	GenderConfidence     float64                  `json:"GenderConfidence" xml:"GenderConfidence"`
+	FaceId               string                   `json:"FaceId" xml:"FaceId"`
+	GroupId              string                   `json:"GroupId" xml:"GroupId"`
+	FaceAttributes       FaceAttributes           `json:"FaceAttributes" xml:"FaceAttributes"`
+	FaceRectangle        FaceRectangleInIndexFace `json:"FaceRectangle" xml:"FaceRectangle"`
+	EmotionDetails       EmotionDetails           `json:"EmotionDetails" xml:"EmotionDetails"`
+	FaceAttribute        FaceAttribute            `json:"FaceAttribute" xml:"FaceAttribute"`
 }

+ 30 - 0
services/imm/struct_faces_item_in_list_images.go

@@ -0,0 +1,30 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// FacesItemInListImages is a nested struct in imm response
+type FacesItemInListImages struct {
+	Age               int            `json:"Age" xml:"Age"`
+	GenderConfidence  float64        `json:"GenderConfidence" xml:"GenderConfidence"`
+	Attractive        float64        `json:"Attractive" xml:"Attractive"`
+	Gender            string         `json:"Gender" xml:"Gender"`
+	FaceConfidence    float64        `json:"FaceConfidence" xml:"FaceConfidence"`
+	Emotion           string         `json:"Emotion" xml:"Emotion"`
+	FaceId            string         `json:"FaceId" xml:"FaceId"`
+	EmotionConfidence float64        `json:"EmotionConfidence" xml:"EmotionConfidence"`
+	EmotionDetails    EmotionDetails `json:"EmotionDetails" xml:"EmotionDetails"`
+	FaceAttributes    FaceAttributes `json:"FaceAttributes" xml:"FaceAttributes"`
+}

+ 30 - 0
services/imm/struct_faces_item_in_list_video_frames.go

@@ -0,0 +1,30 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// FacesItemInListVideoFrames is a nested struct in imm response
+type FacesItemInListVideoFrames struct {
+	Age               int            `json:"Age" xml:"Age"`
+	GenderConfidence  float64        `json:"GenderConfidence" xml:"GenderConfidence"`
+	Attractive        float64        `json:"Attractive" xml:"Attractive"`
+	Gender            string         `json:"Gender" xml:"Gender"`
+	FaceConfidence    float64        `json:"FaceConfidence" xml:"FaceConfidence"`
+	Emotion           string         `json:"Emotion" xml:"Emotion"`
+	FaceId            string         `json:"FaceId" xml:"FaceId"`
+	EmotionConfidence float64        `json:"EmotionConfidence" xml:"EmotionConfidence"`
+	EmotionDetails    EmotionDetails `json:"EmotionDetails" xml:"EmotionDetails"`
+	FaceAttributes    FaceAttributes `json:"FaceAttributes" xml:"FaceAttributes"`
+}

+ 30 - 0
services/imm/struct_faces_item_in_search_images.go

@@ -0,0 +1,30 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// FacesItemInSearchImages is a nested struct in imm response
+type FacesItemInSearchImages struct {
+	Age               int            `json:"Age" xml:"Age"`
+	GenderConfidence  float64        `json:"GenderConfidence" xml:"GenderConfidence"`
+	Attractive        float64        `json:"Attractive" xml:"Attractive"`
+	Gender            string         `json:"Gender" xml:"Gender"`
+	FaceConfidence    float64        `json:"FaceConfidence" xml:"FaceConfidence"`
+	Emotion           string         `json:"Emotion" xml:"Emotion"`
+	FaceId            string         `json:"FaceId" xml:"FaceId"`
+	EmotionConfidence float64        `json:"EmotionConfidence" xml:"EmotionConfidence"`
+	EmotionDetails    EmotionDetails `json:"EmotionDetails" xml:"EmotionDetails"`
+	FaceAttributes    FaceAttributes `json:"FaceAttributes" xml:"FaceAttributes"`
+}

+ 30 - 0
services/imm/struct_faces_item_in_search_images_by_tag_names.go

@@ -0,0 +1,30 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// FacesItemInSearchImagesByTagNames is a nested struct in imm response
+type FacesItemInSearchImagesByTagNames struct {
+	Age               int            `json:"Age" xml:"Age"`
+	GenderConfidence  float64        `json:"GenderConfidence" xml:"GenderConfidence"`
+	Attractive        float64        `json:"Attractive" xml:"Attractive"`
+	Gender            string         `json:"Gender" xml:"Gender"`
+	FaceConfidence    float64        `json:"FaceConfidence" xml:"FaceConfidence"`
+	Emotion           string         `json:"Emotion" xml:"Emotion"`
+	FaceId            string         `json:"FaceId" xml:"FaceId"`
+	EmotionConfidence float64        `json:"EmotionConfidence" xml:"EmotionConfidence"`
+	EmotionDetails    EmotionDetails `json:"EmotionDetails" xml:"EmotionDetails"`
+	FaceAttributes    FaceAttributes `json:"FaceAttributes" xml:"FaceAttributes"`
+}

+ 52 - 0
services/imm/struct_frames.go

@@ -0,0 +1,52 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// Frames is a nested struct in imm response
+type Frames struct {
+	FacesStatus         string                              `json:"FacesStatus" xml:"FacesStatus"`
+	ModifyTime          string                              `json:"ModifyTime" xml:"ModifyTime"`
+	CreateTime          string                              `json:"CreateTime" xml:"CreateTime"`
+	CelebrityFailReason string                              `json:"CelebrityFailReason" xml:"CelebrityFailReason"`
+	OCRModifyTime       string                              `json:"OCRModifyTime" xml:"OCRModifyTime"`
+	ImageFormat         string                              `json:"ImageFormat" xml:"ImageFormat"`
+	FacesFailReason     string                              `json:"FacesFailReason" xml:"FacesFailReason"`
+	Exif                string                              `json:"Exif" xml:"Exif"`
+	ImageHeight         int                                 `json:"ImageHeight" xml:"ImageHeight"`
+	SourceType          string                              `json:"SourceType" xml:"SourceType"`
+	RemarksB            string                              `json:"RemarksB" xml:"RemarksB"`
+	FileSize            int                                 `json:"FileSize" xml:"FileSize"`
+	Orientation         string                              `json:"Orientation" xml:"Orientation"`
+	TagsStatus          string                              `json:"TagsStatus" xml:"TagsStatus"`
+	FacesModifyTime     string                              `json:"FacesModifyTime" xml:"FacesModifyTime"`
+	CelebrityModifyTime string                              `json:"CelebrityModifyTime" xml:"CelebrityModifyTime"`
+	TagsFailReason      string                              `json:"TagsFailReason" xml:"TagsFailReason"`
+	CelebrityStatus     string                              `json:"CelebrityStatus" xml:"CelebrityStatus"`
+	OCRStatus           string                              `json:"OCRStatus" xml:"OCRStatus"`
+	ImageUri            string                              `json:"ImageUri" xml:"ImageUri"`
+	ImageTime           string                              `json:"ImageTime" xml:"ImageTime"`
+	Location            string                              `json:"Location" xml:"Location"`
+	TagsModifyTime      string                              `json:"TagsModifyTime" xml:"TagsModifyTime"`
+	RemarksA            string                              `json:"RemarksA" xml:"RemarksA"`
+	SourcePosition      string                              `json:"SourcePosition" xml:"SourcePosition"`
+	OCRFailReason       string                              `json:"OCRFailReason" xml:"OCRFailReason"`
+	SourceUri           string                              `json:"SourceUri" xml:"SourceUri"`
+	ImageWidth          int                                 `json:"ImageWidth" xml:"ImageWidth"`
+	Faces               []FacesItemInSearchImagesByTagNames `json:"Faces" xml:"Faces"`
+	OCR                 []OCRItem                           `json:"OCR" xml:"OCR"`
+	Celebrity           []CelebrityItem                     `json:"Celebrity" xml:"Celebrity"`
+	Tags                []TagsItem                          `json:"Tags" xml:"Tags"`
+}

+ 21 - 0
services/imm/struct_frames_in_list_video_frames.go

@@ -0,0 +1,21 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// FramesInListVideoFrames is a nested struct in imm response
+type FramesInListVideoFrames struct {
+	FramesItem []FramesItem `json:"FramesItem" xml:"FramesItem"`
+}

+ 52 - 0
services/imm/struct_frames_item.go

@@ -0,0 +1,52 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// FramesItem is a nested struct in imm response
+type FramesItem struct {
+	FacesModifyTime     string                       `json:"FacesModifyTime" xml:"FacesModifyTime"`
+	OCRModifyTime       string                       `json:"OCRModifyTime" xml:"OCRModifyTime"`
+	OCRStatus           string                       `json:"OCRStatus" xml:"OCRStatus"`
+	SourcePosition      string                       `json:"SourcePosition" xml:"SourcePosition"`
+	Exif                string                       `json:"Exif" xml:"Exif"`
+	ImageUri            string                       `json:"ImageUri" xml:"ImageUri"`
+	ImageWidth          int                          `json:"ImageWidth" xml:"ImageWidth"`
+	ImageFormat         string                       `json:"ImageFormat" xml:"ImageFormat"`
+	SourceType          string                       `json:"SourceType" xml:"SourceType"`
+	ModifyTime          string                       `json:"ModifyTime" xml:"ModifyTime"`
+	FileSize            int                          `json:"FileSize" xml:"FileSize"`
+	SourceUri           string                       `json:"SourceUri" xml:"SourceUri"`
+	CreateTime          string                       `json:"CreateTime" xml:"CreateTime"`
+	FacesStatus         string                       `json:"FacesStatus" xml:"FacesStatus"`
+	RemarksA            string                       `json:"RemarksA" xml:"RemarksA"`
+	ImageHeight         int                          `json:"ImageHeight" xml:"ImageHeight"`
+	RemarksB            string                       `json:"RemarksB" xml:"RemarksB"`
+	ImageTime           string                       `json:"ImageTime" xml:"ImageTime"`
+	Orientation         string                       `json:"Orientation" xml:"Orientation"`
+	Location            string                       `json:"Location" xml:"Location"`
+	OCRFailReason       string                       `json:"OCRFailReason" xml:"OCRFailReason"`
+	FacesFailReason     string                       `json:"FacesFailReason" xml:"FacesFailReason"`
+	TagsFailReason      string                       `json:"TagsFailReason" xml:"TagsFailReason"`
+	TagsModifyTime      string                       `json:"TagsModifyTime" xml:"TagsModifyTime"`
+	CelebrityStatus     string                       `json:"CelebrityStatus" xml:"CelebrityStatus"`
+	CelebrityModifyTime string                       `json:"CelebrityModifyTime" xml:"CelebrityModifyTime"`
+	CelebrityFailReason string                       `json:"CelebrityFailReason" xml:"CelebrityFailReason"`
+	TagsStatus          string                       `json:"TagsStatus" xml:"TagsStatus"`
+	Faces               []FacesItemInListVideoFrames `json:"Faces" xml:"Faces"`
+	Tags                []TagsItem                   `json:"Tags" xml:"Tags"`
+	OCR                 []OCRItem                    `json:"OCR" xml:"OCR"`
+	Celebrity           []CelebrityItem              `json:"Celebrity" xml:"Celebrity"`
+}

+ 21 - 0
services/imm/struct_images_in_list_face_search_group_images.go

@@ -0,0 +1,21 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// ImagesInListFaceSearchGroupImages is a nested struct in imm response
+type ImagesInListFaceSearchGroupImages struct {
+	ImagesItem []ImagesItem `json:"ImagesItem" xml:"ImagesItem"`
+}

+ 2 - 2
services/imm/struct_images.go → services/imm/struct_images_in_list_images.go

@@ -15,7 +15,7 @@ package imm
 // Code generated by Alibaba Cloud SDK Code Generator.
 // Changes may cause incorrect behavior and will be lost if the code is regenerated.
 
-// Images is a nested struct in imm response
-type Images struct {
+// ImagesInListImages is a nested struct in imm response
+type ImagesInListImages struct {
 	ImagesItem []ImagesItem `json:"ImagesItem" xml:"ImagesItem"`
 }

+ 21 - 0
services/imm/struct_images_in_search_images.go

@@ -0,0 +1,21 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// ImagesInSearchImages is a nested struct in imm response
+type ImagesInSearchImages struct {
+	ImagesItem []ImagesItem `json:"ImagesItem" xml:"ImagesItem"`
+}

+ 21 - 0
services/imm/struct_images_in_search_images_by_tag_names.go

@@ -0,0 +1,21 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// ImagesInSearchImagesByTagNames is a nested struct in imm response
+type ImagesInSearchImagesByTagNames struct {
+	Frames []Frames `json:"Frames" xml:"Frames"`
+}

+ 45 - 14
services/imm/struct_images_item.go

@@ -17,18 +17,49 @@ package imm
 
 // ImagesItem is a nested struct in imm response
 type ImagesItem struct {
-	User     string   `json:"User" xml:"User"`
-	ImageId  string   `json:"ImageId" xml:"ImageId"`
-	ImageUri string   `json:"ImageUri" xml:"ImageUri"`
-	ImageMd5 string   `json:"ImageMd5" xml:"ImageMd5"`
-	Roll     float64  `json:"Roll" xml:"Roll"`
-	FaceId   string   `json:"FaceId" xml:"FaceId"`
-	Yaw      float64  `json:"Yaw" xml:"Yaw"`
-	Quality  float64  `json:"Quality" xml:"Quality"`
-	Glasses  int      `json:"Glasses" xml:"Glasses"`
-	Hat      int      `json:"Hat" xml:"Hat"`
-	Pitch    float64  `json:"Pitch" xml:"Pitch"`
-	Age      int      `json:"Age" xml:"Age"`
-	Gender   string   `json:"Gender" xml:"Gender"`
-	Axis     []string `json:"Axis" xml:"Axis"`
+	FacesStatus         string                  `json:"FacesStatus" xml:"FacesStatus"`
+	User                string                  `json:"User" xml:"User"`
+	ModifyTime          string                  `json:"ModifyTime" xml:"ModifyTime"`
+	ImageId             string                  `json:"ImageId" xml:"ImageId"`
+	Quality             float64                 `json:"Quality" xml:"Quality"`
+	CreateTime          string                  `json:"CreateTime" xml:"CreateTime"`
+	CelebrityFailReason string                  `json:"CelebrityFailReason" xml:"CelebrityFailReason"`
+	OCRModifyTime       string                  `json:"OCRModifyTime" xml:"OCRModifyTime"`
+	ImageFormat         string                  `json:"ImageFormat" xml:"ImageFormat"`
+	ImageMd5            string                  `json:"ImageMd5" xml:"ImageMd5"`
+	FacesFailReason     string                  `json:"FacesFailReason" xml:"FacesFailReason"`
+	Exif                string                  `json:"Exif" xml:"Exif"`
+	ImageHeight         int                     `json:"ImageHeight" xml:"ImageHeight"`
+	Age                 int                     `json:"Age" xml:"Age"`
+	SourceType          string                  `json:"SourceType" xml:"SourceType"`
+	RemarksB            string                  `json:"RemarksB" xml:"RemarksB"`
+	FileSize            int                     `json:"FileSize" xml:"FileSize"`
+	Orientation         string                  `json:"Orientation" xml:"Orientation"`
+	FaceId              string                  `json:"FaceId" xml:"FaceId"`
+	Hat                 int                     `json:"Hat" xml:"Hat"`
+	TagsStatus          string                  `json:"TagsStatus" xml:"TagsStatus"`
+	FacesModifyTime     string                  `json:"FacesModifyTime" xml:"FacesModifyTime"`
+	CelebrityModifyTime string                  `json:"CelebrityModifyTime" xml:"CelebrityModifyTime"`
+	TagsFailReason      string                  `json:"TagsFailReason" xml:"TagsFailReason"`
+	CelebrityStatus     string                  `json:"CelebrityStatus" xml:"CelebrityStatus"`
+	OCRStatus           string                  `json:"OCRStatus" xml:"OCRStatus"`
+	Pitch               float64                 `json:"Pitch" xml:"Pitch"`
+	ImageUri            string                  `json:"ImageUri" xml:"ImageUri"`
+	ImageTime           string                  `json:"ImageTime" xml:"ImageTime"`
+	Location            string                  `json:"Location" xml:"Location"`
+	TagsModifyTime      string                  `json:"TagsModifyTime" xml:"TagsModifyTime"`
+	Yaw                 float64                 `json:"Yaw" xml:"Yaw"`
+	RemarksA            string                  `json:"RemarksA" xml:"RemarksA"`
+	Gender              string                  `json:"Gender" xml:"Gender"`
+	SourcePosition      string                  `json:"SourcePosition" xml:"SourcePosition"`
+	OCRFailReason       string                  `json:"OCRFailReason" xml:"OCRFailReason"`
+	Roll                float64                 `json:"Roll" xml:"Roll"`
+	Glasses             int                     `json:"Glasses" xml:"Glasses"`
+	SourceUri           string                  `json:"SourceUri" xml:"SourceUri"`
+	ImageWidth          int                     `json:"ImageWidth" xml:"ImageWidth"`
+	Axis                []string                `json:"Axis" xml:"Axis"`
+	Faces               []FacesItemInListImages `json:"Faces" xml:"Faces"`
+	OCR                 []OCRItem               `json:"OCR" xml:"OCR"`
+	Celebrity           []CelebrityItem         `json:"Celebrity" xml:"Celebrity"`
+	Tags                []TagsItem              `json:"Tags" xml:"Tags"`
 }

+ 24 - 0
services/imm/struct_ocr_boundary.go

@@ -0,0 +1,24 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// OCRBoundary is a nested struct in imm response
+type OCRBoundary struct {
+	Width  int `json:"Width" xml:"Width"`
+	Height int `json:"Height" xml:"Height"`
+	Top    int `json:"Top" xml:"Top"`
+	Left   int `json:"Left" xml:"Left"`
+}

+ 21 - 0
services/imm/struct_ocr_in_detect_image_texts.go

@@ -0,0 +1,21 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// OCRInDetectImageTexts is a nested struct in imm response
+type OCRInDetectImageTexts struct {
+	OCRItem []OCRItem `json:"OCRItem" xml:"OCRItem"`
+}

+ 21 - 0
services/imm/struct_ocr_in_get_image.go

@@ -0,0 +1,21 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// OCRInGetImage is a nested struct in imm response
+type OCRInGetImage struct {
+	OCRItem []OCRItem `json:"OCRItem" xml:"OCRItem"`
+}

+ 21 - 0
services/imm/struct_ocr_in_list_images.go

@@ -0,0 +1,21 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// OCRInListImages is a nested struct in imm response
+type OCRInListImages struct {
+	OCRItem []OCRItem `json:"OCRItem" xml:"OCRItem"`
+}

+ 21 - 0
services/imm/struct_ocr_in_list_video_frames.go

@@ -0,0 +1,21 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// OCRInListVideoFrames is a nested struct in imm response
+type OCRInListVideoFrames struct {
+	OCRItem []OCRItem `json:"OCRItem" xml:"OCRItem"`
+}

+ 21 - 0
services/imm/struct_ocr_in_search_images.go

@@ -0,0 +1,21 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// OCRInSearchImages is a nested struct in imm response
+type OCRInSearchImages struct {
+	OCRItem []OCRItem `json:"OCRItem" xml:"OCRItem"`
+}

+ 21 - 0
services/imm/struct_ocr_in_search_images_by_tag_names.go

@@ -0,0 +1,21 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// OCRInSearchImagesByTagNames is a nested struct in imm response
+type OCRInSearchImagesByTagNames struct {
+	OCRItem []OCRItem `json:"OCRItem" xml:"OCRItem"`
+}

+ 23 - 0
services/imm/struct_ocr_item.go

@@ -0,0 +1,23 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// OCRItem is a nested struct in imm response
+type OCRItem struct {
+	OCRContents   string      `json:"OCRContents" xml:"OCRContents"`
+	OCRConfidence float64     `json:"OCRConfidence" xml:"OCRConfidence"`
+	OCRBoundary   OCRBoundary `json:"OCRBoundary" xml:"OCRBoundary"`
+}

+ 21 - 0
services/imm/struct_persons_in_get_video.go

@@ -0,0 +1,21 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// PersonsInGetVideo is a nested struct in imm response
+type PersonsInGetVideo struct {
+	PersonsItem []PersonsItem `json:"PersonsItem" xml:"PersonsItem"`
+}

+ 21 - 0
services/imm/struct_persons_in_list_videos.go

@@ -0,0 +1,21 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// PersonsInListVideos is a nested struct in imm response
+type PersonsInListVideos struct {
+	PersonsItem []PersonsItem `json:"PersonsItem" xml:"PersonsItem"`
+}

+ 25 - 0
services/imm/struct_persons_item.go

@@ -0,0 +1,25 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// PersonsItem is a nested struct in imm response
+type PersonsItem struct {
+	Age              int     `json:"Age" xml:"Age"`
+	AgeConfidence    float64 `json:"AgeConfidence" xml:"AgeConfidence"`
+	Gender           string  `json:"Gender" xml:"Gender"`
+	GenderConfidence float64 `json:"GenderConfidence" xml:"GenderConfidence"`
+	PersonId         string  `json:"PersonId" xml:"PersonId"`
+}

+ 21 - 0
services/imm/struct_sets_in_list_sets.go

@@ -0,0 +1,21 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// SetsInListSets is a nested struct in imm response
+type SetsInListSets struct {
+	SetsItem []SetsItem `json:"SetsItem" xml:"SetsItem"`
+}

+ 11 - 6
services/imm/struct_sets_item.go

@@ -17,10 +17,15 @@ package imm
 
 // SetsItem is a nested struct in imm response
 type SetsItem struct {
-	Photos     int    `json:"Photos" xml:"Photos"`
-	SetId      string `json:"SetId" xml:"SetId"`
-	ModifyTime string `json:"ModifyTime" xml:"ModifyTime"`
-	CreateTime string `json:"CreateTime" xml:"CreateTime"`
-	Status     string `json:"Status" xml:"Status"`
-	Faces      int    `json:"Faces" xml:"Faces"`
+	Photos      int    `json:"Photos" xml:"Photos"`
+	SetId       string `json:"SetId" xml:"SetId"`
+	ModifyTime  string `json:"ModifyTime" xml:"ModifyTime"`
+	CreateTime  string `json:"CreateTime" xml:"CreateTime"`
+	SetName     string `json:"SetName" xml:"SetName"`
+	VideoLength int    `json:"VideoLength" xml:"VideoLength"`
+	Status      string `json:"Status" xml:"Status"`
+	FaceCount   int    `json:"FaceCount" xml:"FaceCount"`
+	VideoCount  int    `json:"VideoCount" xml:"VideoCount"`
+	Faces       int    `json:"Faces" xml:"Faces"`
+	ImageCount  int    `json:"ImageCount" xml:"ImageCount"`
 }

+ 1 - 1
services/imm/struct_success_details_item.go

@@ -26,5 +26,5 @@ type SuccessDetailsItem struct {
 	QRCodes          []QRCodesItem          `json:"QRCodes" xml:"QRCodes"`
 	LogoBoxDetail    []LogoBoxDetailItem    `json:"LogoBoxDetail" xml:"LogoBoxDetail"`
 	Faces            []FacesItem            `json:"Faces" xml:"Faces"`
-	Tags             []TagsItem             `json:"Tags" xml:"Tags"`
+	Tags             []TagsItemInIndexTag   `json:"Tags" xml:"Tags"`
 }

+ 21 - 0
services/imm/struct_tags_in_detect_image_tags.go

@@ -0,0 +1,21 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// TagsInDetectImageTags is a nested struct in imm response
+type TagsInDetectImageTags struct {
+	TagsItem []TagsItem `json:"TagsItem" xml:"TagsItem"`
+}

+ 1 - 1
services/imm/struct_tags_in_detect_tag.go

@@ -17,5 +17,5 @@ package imm
 
 // TagsInDetectTag is a nested struct in imm response
 type TagsInDetectTag struct {
-	TagsItem []TagsItem `json:"TagsItem" xml:"TagsItem"`
+	TagsItem []TagsItemInDetectTag `json:"TagsItem" xml:"TagsItem"`
 }

+ 21 - 0
services/imm/struct_tags_in_get_image.go

@@ -0,0 +1,21 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// TagsInGetImage is a nested struct in imm response
+type TagsInGetImage struct {
+	TagsItem []TagsItem `json:"TagsItem" xml:"TagsItem"`
+}

+ 1 - 1
services/imm/struct_tags_in_index_tag.go

@@ -17,5 +17,5 @@ package imm
 
 // TagsInIndexTag is a nested struct in imm response
 type TagsInIndexTag struct {
-	TagsItem []TagsItem `json:"TagsItem" xml:"TagsItem"`
+	TagsItem []TagsItemInIndexTag `json:"TagsItem" xml:"TagsItem"`
 }

+ 21 - 0
services/imm/struct_tags_in_list_images.go

@@ -0,0 +1,21 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// TagsInListImages is a nested struct in imm response
+type TagsInListImages struct {
+	TagsItem []TagsItem `json:"TagsItem" xml:"TagsItem"`
+}

+ 21 - 0
services/imm/struct_tags_in_list_set_tags.go

@@ -0,0 +1,21 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// TagsInListSetTags is a nested struct in imm response
+type TagsInListSetTags struct {
+	TagsItem []TagsItem `json:"TagsItem" xml:"TagsItem"`
+}

+ 21 - 0
services/imm/struct_tags_in_list_video_frames.go

@@ -0,0 +1,21 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// TagsInListVideoFrames is a nested struct in imm response
+type TagsInListVideoFrames struct {
+	TagsItem []TagsItem `json:"TagsItem" xml:"TagsItem"`
+}

+ 21 - 0
services/imm/struct_tags_in_search_images.go

@@ -0,0 +1,21 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// TagsInSearchImages is a nested struct in imm response
+type TagsInSearchImages struct {
+	TagsItem []TagsItem `json:"TagsItem" xml:"TagsItem"`
+}

+ 21 - 0
services/imm/struct_tags_in_search_images_by_tag_names.go

@@ -0,0 +1,21 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// TagsInSearchImagesByTagNames is a nested struct in imm response
+type TagsInSearchImagesByTagNames struct {
+	TagsItem []TagsItem `json:"TagsItem" xml:"TagsItem"`
+}

+ 8 - 7
services/imm/struct_tags_item.go

@@ -17,11 +17,12 @@ package imm
 
 // TagsItem is a nested struct in imm response
 type TagsItem struct {
-	ParentTagId   string `json:"ParentTagId" xml:"ParentTagId"`
-	TagName       string `json:"TagName" xml:"TagName"`
-	TagLevel      string `json:"TagLevel" xml:"TagLevel"`
-	TagId         string `json:"TagId" xml:"TagId"`
-	TagScore      string `json:"TagScore" xml:"TagScore"`
-	Num           int    `json:"Num" xml:"Num"`
-	ParentTagName string `json:"ParentTagName" xml:"ParentTagName"`
+	TagEnName       string  `json:"TagEnName" xml:"TagEnName"`
+	TagName         string  `json:"TagName" xml:"TagName"`
+	TagCount        int     `json:"TagCount" xml:"TagCount"`
+	TagConfidence   float64 `json:"TagConfidence" xml:"TagConfidence"`
+	ParentTagEnName string  `json:"ParentTagEnName" xml:"ParentTagEnName"`
+	TagLevel        int     `json:"TagLevel" xml:"TagLevel"`
+	ParentTagName   string  `json:"ParentTagName" xml:"ParentTagName"`
+	Num             int     `json:"Num" xml:"Num"`
 }

+ 26 - 0
services/imm/struct_tags_item_in_detect_tag.go

@@ -0,0 +1,26 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// TagsItemInDetectTag is a nested struct in imm response
+type TagsItemInDetectTag struct {
+	TagId         string `json:"TagId" xml:"TagId"`
+	TagLevel      string `json:"TagLevel" xml:"TagLevel"`
+	TagName       string `json:"TagName" xml:"TagName"`
+	ParentTagId   string `json:"ParentTagId" xml:"ParentTagId"`
+	ParentTagName string `json:"ParentTagName" xml:"ParentTagName"`
+	TagScore      string `json:"TagScore" xml:"TagScore"`
+}

+ 26 - 0
services/imm/struct_tags_item_in_index_tag.go

@@ -0,0 +1,26 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// TagsItemInIndexTag is a nested struct in imm response
+type TagsItemInIndexTag struct {
+	TagId         string `json:"TagId" xml:"TagId"`
+	TagLevel      string `json:"TagLevel" xml:"TagLevel"`
+	TagName       string `json:"TagName" xml:"TagName"`
+	ParentTagId   string `json:"ParentTagId" xml:"ParentTagId"`
+	ParentTagName string `json:"ParentTagName" xml:"ParentTagName"`
+	TagScore      string `json:"TagScore" xml:"TagScore"`
+}

+ 21 - 0
services/imm/struct_tasks_in_list_video_tasks.go

@@ -0,0 +1,21 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// TasksInListVideoTasks is a nested struct in imm response
+type TasksInListVideoTasks struct {
+	TasksItem []TasksItem `json:"TasksItem" xml:"TasksItem"`
+}

+ 7 - 0
services/imm/struct_tasks_item.go

@@ -18,17 +18,24 @@ package imm
 // TasksItem is a nested struct in imm response
 type TasksItem struct {
 	TgtType         string `json:"TgtType" xml:"TgtType"`
+	Result          string `json:"Result" xml:"Result"`
+	ErrorMessage    string `json:"ErrorMessage" xml:"ErrorMessage"`
 	Style           string `json:"Style" xml:"Style"`
 	PageCount       int    `json:"PageCount" xml:"PageCount"`
 	CreateTime      string `json:"CreateTime" xml:"CreateTime"`
 	ExternalID      string `json:"ExternalID" xml:"ExternalID"`
 	FinishTime      string `json:"FinishTime" xml:"FinishTime"`
 	SrcUri          string `json:"SrcUri" xml:"SrcUri"`
+	Parameters      string `json:"Parameters" xml:"Parameters"`
 	Percent         int    `json:"Percent" xml:"Percent"`
 	TaskId          string `json:"TaskId" xml:"TaskId"`
+	StartTime       string `json:"StartTime" xml:"StartTime"`
+	EndTime         string `json:"EndTime" xml:"EndTime"`
+	Progress        int    `json:"Progress" xml:"Progress"`
 	TgtUri          string `json:"TgtUri" xml:"TgtUri"`
 	ImageSpec       string `json:"ImageSpec" xml:"ImageSpec"`
 	NotifyEndpoint  string `json:"NotifyEndpoint" xml:"NotifyEndpoint"`
 	Status          string `json:"Status" xml:"Status"`
+	TaskType        string `json:"TaskType" xml:"TaskType"`
 	NotifyTopicName string `json:"NotifyTopicName" xml:"NotifyTopicName"`
 }

+ 21 - 0
services/imm/struct_video_tags_in_get_video.go

@@ -0,0 +1,21 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// VideoTagsInGetVideo is a nested struct in imm response
+type VideoTagsInGetVideo struct {
+	VideoTagsItem []VideoTagsItem `json:"VideoTagsItem" xml:"VideoTagsItem"`
+}

+ 21 - 0
services/imm/struct_video_tags_in_list_videos.go

@@ -0,0 +1,21 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// VideoTagsInListVideos is a nested struct in imm response
+type VideoTagsInListVideos struct {
+	VideoTagsItem []VideoTagsItem `json:"VideoTagsItem" xml:"VideoTagsItem"`
+}

+ 23 - 0
services/imm/struct_video_tags_item.go

@@ -0,0 +1,23 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// VideoTagsItem is a nested struct in imm response
+type VideoTagsItem struct {
+	VideoTagName       string  `json:"VideoTagName" xml:"VideoTagName"`
+	VideoTagConfidence float64 `json:"VideoTagConfidence" xml:"VideoTagConfidence"`
+	VideoTagEnName     string  `json:"VideoTagEnName" xml:"VideoTagEnName"`
+}

+ 21 - 0
services/imm/struct_videos.go

@@ -0,0 +1,21 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// Videos is a nested struct in imm response
+type Videos struct {
+	VideosItem []VideosItem `json:"VideosItem" xml:"VideosItem"`
+}

+ 46 - 0
services/imm/struct_videos_item.go

@@ -0,0 +1,46 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// VideosItem is a nested struct in imm response
+type VideosItem struct {
+	VideoUri            string          `json:"VideoUri" xml:"VideoUri"`
+	RemarksA            string          `json:"RemarksA" xml:"RemarksA"`
+	RemarksB            string          `json:"RemarksB" xml:"RemarksB"`
+	CreateTime          string          `json:"CreateTime" xml:"CreateTime"`
+	ModifyTime          string          `json:"ModifyTime" xml:"ModifyTime"`
+	VideoWidth          int             `json:"VideoWidth" xml:"VideoWidth"`
+	VideoHeight         int             `json:"VideoHeight" xml:"VideoHeight"`
+	VideoFormat         string          `json:"VideoFormat" xml:"VideoFormat"`
+	VideoDuration       float64         `json:"VideoDuration" xml:"VideoDuration"`
+	FileSize            int             `json:"FileSize" xml:"FileSize"`
+	VideoFrames         int             `json:"VideoFrames" xml:"VideoFrames"`
+	SourceType          string          `json:"SourceType" xml:"SourceType"`
+	SourceUri           string          `json:"SourceUri" xml:"SourceUri"`
+	SourcePosition      string          `json:"SourcePosition" xml:"SourcePosition"`
+	ProcessStatus       string          `json:"ProcessStatus" xml:"ProcessStatus"`
+	ProcessModifyTime   string          `json:"ProcessModifyTime" xml:"ProcessModifyTime"`
+	VideoTagsStatus     string          `json:"VideoTagsStatus" xml:"VideoTagsStatus"`
+	VideoTagsModifyTime string          `json:"VideoTagsModifyTime" xml:"VideoTagsModifyTime"`
+	CelebrityStatus     string          `json:"CelebrityStatus" xml:"CelebrityStatus"`
+	CelebrityModifyTime string          `json:"CelebrityModifyTime" xml:"CelebrityModifyTime"`
+	CelebrityFailReason string          `json:"CelebrityFailReason" xml:"CelebrityFailReason"`
+	VideoTagsFailReason string          `json:"VideoTagsFailReason" xml:"VideoTagsFailReason"`
+	ProcessFailReason   string          `json:"ProcessFailReason" xml:"ProcessFailReason"`
+	VideoTags           []VideoTagsItem `json:"VideoTags" xml:"VideoTags"`
+	Celebrity           []CelebrityItem `json:"Celebrity" xml:"Celebrity"`
+	Persons             []PersonsItem   `json:"Persons" xml:"Persons"`
+}

+ 116 - 0
services/imm/update_image.go

@@ -0,0 +1,116 @@
+package imm
+
+//Licensed under the Apache License, Version 2.0 (the "License");
+//you may not use this file except in compliance with the License.
+//You may obtain a copy of the License at
+//
+//http://www.apache.org/licenses/LICENSE-2.0
+//
+//Unless required by applicable law or agreed to in writing, software
+//distributed under the License is distributed on an "AS IS" BASIS,
+//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//See the License for the specific language governing permissions and
+//limitations under the License.
+//
+// Code generated by Alibaba Cloud SDK Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/requests"
+	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/responses"
+)
+
+// UpdateImage invokes the imm.UpdateImage API synchronously
+// api document: https://help.aliyun.com/api/imm/updateimage.html
+func (client *Client) UpdateImage(request *UpdateImageRequest) (response *UpdateImageResponse, err error) {
+	response = CreateUpdateImageResponse()
+	err = client.DoAction(request, response)
+	return
+}
+
+// UpdateImageWithChan invokes the imm.UpdateImage API asynchronously
+// api document: https://help.aliyun.com/api/imm/updateimage.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) UpdateImageWithChan(request *UpdateImageRequest) (<-chan *UpdateImageResponse, <-chan error) {
+	responseChan := make(chan *UpdateImageResponse, 1)
+	errChan := make(chan error, 1)
+	err := client.AddAsyncTask(func() {
+		defer close(responseChan)
+		defer close(errChan)
+		response, err := client.UpdateImage(request)
+		if err != nil {
+			errChan <- err
+		} else {
+			responseChan <- response
+		}
+	})
+	if err != nil {
+		errChan <- err
+		close(responseChan)
+		close(errChan)
+	}
+	return responseChan, errChan
+}
+
+// UpdateImageWithCallback invokes the imm.UpdateImage API asynchronously
+// api document: https://help.aliyun.com/api/imm/updateimage.html
+// asynchronous document: https://help.aliyun.com/document_detail/66220.html
+func (client *Client) UpdateImageWithCallback(request *UpdateImageRequest, callback func(response *UpdateImageResponse, err error)) <-chan int {
+	result := make(chan int, 1)
+	err := client.AddAsyncTask(func() {
+		var response *UpdateImageResponse
+		var err error
+		defer close(result)
+		response, err = client.UpdateImage(request)
+		callback(response, err)
+		result <- 1
+	})
+	if err != nil {
+		defer close(result)
+		callback(nil, err)
+		result <- 0
+	}
+	return result
+}
+
+// UpdateImageRequest is the request struct for api UpdateImage
+type UpdateImageRequest struct {
+	*requests.RpcRequest
+	ImageUri       string `position:"Query" name:"ImageUri"`
+	SourceUri      string `position:"Query" name:"SourceUri"`
+	SourcePosition string `position:"Query" name:"SourcePosition"`
+	RemarksB       string `position:"Query" name:"RemarksB"`
+	Project        string `position:"Query" name:"Project"`
+	SetId          string `position:"Query" name:"SetId"`
+	RemarksA       string `position:"Query" name:"RemarksA"`
+	SourceType     string `position:"Query" name:"SourceType"`
+}
+
+// UpdateImageResponse is the response struct for api UpdateImage
+type UpdateImageResponse struct {
+	*responses.BaseResponse
+	RequestId  string `json:"RequestId" xml:"RequestId"`
+	SetId      string `json:"SetId" xml:"SetId"`
+	ImageUri   string `json:"ImageUri" xml:"ImageUri"`
+	RemarksA   string `json:"RemarksA" xml:"RemarksA"`
+	RemarksB   string `json:"RemarksB" xml:"RemarksB"`
+	CreateTime string `json:"CreateTime" xml:"CreateTime"`
+	ModifyTime string `json:"ModifyTime" xml:"ModifyTime"`
+}
+
+// CreateUpdateImageRequest creates a request to invoke UpdateImage API
+func CreateUpdateImageRequest() (request *UpdateImageRequest) {
+	request = &UpdateImageRequest{
+		RpcRequest: &requests.RpcRequest{},
+	}
+	request.InitWithApiInfo("imm", "2017-09-06", "UpdateImage", "imm", "openAPI")
+	return
+}
+
+// CreateUpdateImageResponse creates a response to parse from UpdateImage response
+func CreateUpdateImageResponse() (response *UpdateImageResponse) {
+	response = &UpdateImageResponse{
+		BaseResponse: &responses.BaseResponse{},
+	}
+	return
+}

部分文件因文件數量過多而無法顯示