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