1package main 2 3import ( 4 "fmt" 5 6 ame "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/ame/v20190916" 7 "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common" 8 "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/errors" 9 "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common/profile" 10) 11 12func main() { 13 // 必要步骤: 14 // 实例化一个认证对象,入参需要传入腾讯云账户密钥对secretId,secretKey。 15 // 这里采用的是从环境变量读取的方式,需要在环境变量中先设置这两个值。 16 // 你也可以直接在代码中写死密钥对,但是小心不要将代码复制、上传或者分享给他人, 17 // 以免泄露密钥对危及你的财产安全。 18 credential := common.NewCredential( 19 "", 20 "", 21 ) 22 23 cpf := profile.NewClientProfile() 24 cpf.HttpProfile.ReqMethod = "POST" 25 cpf.HttpProfile.ReqTimeout = 5 26 cpf.SignMethod = "HmacSHA1" 27 28 client, _ := ame.NewClient(credential, "ap-guangzhou", cpf) 29 30 // 云音乐相关接口调用示例 31 CloudMusicDemo(client) 32 33 // 曲库包相关接口调用示例 34 PackageMusicDemo(client) 35} 36 37// 云音乐相关接口调用示例 38func CloudMusicDemo(client *ame.Client) { 39 // 1. 获取授权项目列表 40 request := ame.NewDescribeAuthInfoRequest() 41 request.Limit = common.Int64Ptr(10) 42 request.Offset = common.Int64Ptr(0) 43 44 response, err := client.DescribeAuthInfo(request) 45 if _, ok := err.(*errors.TencentCloudSDKError); ok { 46 fmt.Printf("An API error has returned: %s", err) 47 return 48 } 49 // unexpected errors 50 if err != nil { 51 panic(err) 52 } 53 54 println(response.ToJsonString()) 55 if len(response.Response.AuthInfo) <= 0 { 56 println("暂未创建授权项目") 57 return 58 } 59 60 // 2. 获取授权项目已购云音乐列表 61 authInfoId := response.Response.AuthInfo[0].Id 62 request1 := ame.NewDescribeCloudMusicPurchasedRequest() 63 request1.AuthInfoId = authInfoId 64 response1, err := client.DescribeCloudMusicPurchased(request1) 65 if err != nil { 66 panic(err) 67 } 68 69 println(response1.ToJsonString()) 70 if len(response1.Response.MusicOpenDetail) <= 0 { 71 println("授权项目下暂无购买音乐") 72 return 73 } 74 75 // 3. 获取云音乐播放信息 76 musicId := response1.Response.MusicOpenDetail[0].MusicId 77 request2 := ame.NewDescribeCloudMusicRequest() 78 request2.MusicId = musicId 79 // 该值为固定值,必填,不填返回带水印的试听音乐播放链接 80 request2.MusicType = common.StringPtr("MP3-320K-FTD") 81 response2, err := client.DescribeCloudMusic(request2) 82 if err != nil { 83 panic(err) 84 } 85 // 打印音乐播放链接 86 println(*response2.Response.MusicUrl) 87} 88 89// 曲库包相关接口调用示例 90func PackageMusicDemo(client *ame.Client) { 91 // 1. 获取已购曲库包列表 92 request := ame.NewDescribePackagesRequest() 93 request.Length = common.Uint64Ptr(10) 94 request.Offset = common.Uint64Ptr(0) 95 response, err := client.DescribePackages(request) 96 if err != nil { 97 panic(err) 98 } 99 println(response.ToJsonString()) 100 if len(response.Response.Packages) <= 0 { 101 println("暂未购买任何曲库包") 102 return 103 } 104 105 // 2. 获取曲库包已核销歌曲列表 106 request1 := ame.NewDescribePackageItemsRequest() 107 request1.Length = common.Uint64Ptr(10) 108 request1.Offset = common.Uint64Ptr(0) 109 request1.OrderId = response.Response.Packages[0].OrderId 110 response1, err := client.DescribePackageItems(request1) 111 if err != nil { 112 panic(err) 113 } 114 println(response1.ToJsonString()) 115 if len(response1.Response.PackageItems) <= 0 { 116 println("曲库包下未核销任何歌曲") 117 return 118 } 119 120 // 3. 获取曲库包歌曲播放信息 121 itemId := response1.Response.PackageItems[0].ItemID 122 request2 := ame.NewDescribeMusicRequest() 123 request2.ItemId = itemId 124 // 该值为固定值 125 request2.SubItemType = common.StringPtr("MP3-320K-FTD") 126 // 在应用前端播放音乐C端用户的唯一标识。无需是账户信息,用户唯一标识即可。 127 request2.IdentityId = common.StringPtr("userid") 128 request2.Ssl = common.StringPtr("Y") 129 response2, err := client.DescribeMusic(request2) 130 if err != nil { 131 panic(err) 132 } 133 println(*response2.Response.Music.FullUrl) 134 135 // 4. 获取歌词信息 136 request3 := ame.NewDescribeLyricRequest() 137 request3.ItemId = itemId 138 request3.SubItemType = common.StringPtr("LRC-LRC") 139 response3, err := client.DescribeLyric(request3) 140 if err != nil { 141 panic(err) 142 } 143 println(*response3.Response.Lyric.Url) 144} 145