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.
kuaishou/api.go

66 lines
1.4 KiB

2 years ago
package kuaishou
import (
2 years ago
"context"
2 years ago
"errors"
"github.com/mvdan/xurls"
"strings"
)
type AnalysisResponse struct {
VideoLink string `json:"video_link"`
ImageLinkList []string `json:"image_link_list"`
}
type AnalysisResult struct {
Result AnalysisResponse // 结果
Err error // 错误
}
2 years ago
func newAnalysisResult(result AnalysisResponse, err error) *AnalysisResult {
2 years ago
return &AnalysisResult{Result: result, Err: err}
}
// Analysis 快手解析
2 years ago
func (c *Client) Analysis(ctx context.Context, content string) *AnalysisResult {
2 years ago
// 定义
var response AnalysisResponse
// 提取url
var url string
if strings.Contains(content, "kuaishou.com") {
url = xurls.Relaxed.FindString(content)
} else if strings.Contains(content, "gifshow.com") {
url = xurls.Relaxed.FindString(content)
} else {
2 years ago
return newAnalysisResult(response, errors.New("url为空"))
2 years ago
}
// 获取重定向链接
2 years ago
result := c.GetVideoLink(url)
2 years ago
if result.Err != nil {
2 years ago
return newAnalysisResult(response, result.Err)
2 years ago
}
// 获取重定向内容
2 years ago
html, err := c.GetVideoHtml(result.Link, result.Cookies)
2 years ago
if err != nil {
2 years ago
return newAnalysisResult(response, result.Err)
2 years ago
}
// 判断
2 years ago
imageLinks := c.ExtractImageLink(html)
videoLink := c.ExtractVideoLink(html)
2 years ago
// 0 是视频1是图集
if len(imageLinks) > 0 {
response.ImageLinkList = imageLinks
} else if len(videoLink) > 0 {
response.VideoLink = videoLink
}
2 years ago
return newAnalysisResult(response, err)
2 years ago
}