You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

117 lines
2.3 KiB

package musicobj
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
)
func newSys(options Options) (sys *Music, err error) {
sys = &Music{
options: options,
}
return
}
type Music struct {
options Options
}
// 搜索歌曲
func (this *Music) SearchMusic(keywords string, limit, offset int) (result *SearchResultResponse, err error) {
var (
req *http.Request
resp *http.Response
body []byte
)
// keywords = url.QueryEscape(keywords)
// 创建JSON请求体
requestData := map[string]interface{}{
"keywords": keywords,
"limit": limit,
"offset": offset,
}
url := fmt.Sprintf("%s/api/music/music_search", this.options.ApiBaseUrl)
jsonData, err := json.Marshal(requestData)
if err != nil {
return
}
req, err = http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
if err != nil {
return
}
// 设置请求头
req.Header.Set("Content-Type", "application/json")
// 执行请求
client := &http.Client{}
resp, err = client.Do(req)
if err != nil {
return
}
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
err = fmt.Errorf("StatusCode:%d", resp.StatusCode)
}
// 读取响应内容
body, err = io.ReadAll(resp.Body)
if err != nil {
return
}
// 输出响应内容
// fmt.Println(string(body))
result = &SearchResultResponse{}
err = json.Unmarshal(body, result)
return
}
// 音乐连接获取
func (this *Music) MusicUrl(id int64) (result *UrlResultResponse, err error) {
var (
req *http.Request
resp *http.Response
body []byte
)
// 创建JSON请求体
requestData := map[string]interface{}{
"id": id,
}
jsonData, err := json.Marshal(requestData)
if err != nil {
return
}
url := fmt.Sprintf("%s/api/music/music_url", this.options.ApiBaseUrl)
req, err = http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
if err != nil {
return
}
// 设置请求头
req.Header.Set("Content-Type", "application/json")
// 发起请求
client := &http.Client{}
resp, err = client.Do(req)
if err != nil {
return
}
defer resp.Body.Close()
// 读取响应内容
body, err = io.ReadAll(resp.Body)
if err != nil {
return
}
if resp.StatusCode != http.StatusOK {
err = fmt.Errorf("StatusCode:%d", resp.StatusCode)
return
}
// 打印结果
fmt.Println(string(body))
result = &UrlResultResponse{}
err = json.Unmarshal(body, result)
return
}