package service import ( "encoding/json" "fmt" "io/ioutil" "net/http" "strings" ) type MoreapiService struct{} // 获取抖音作品数据 type DouyinStatisticResponse struct { Code int `json:"code"` Data struct { AwemeDetail struct { Statistics struct { DiggCount int `json:"digg_count"` // 点赞数 CommentCount int `json:"comment_count"` // 评论数 CollectCount int `json:"collect_count"` // 收藏数 ShareCount int `json:"share_count"` // 分享数 } `json:"statistics"` } `json:"aweme_detail"` } `json:"data"` } // 获取抖音作品数据 func (s MoreapiService) GetDouyinStatistic(shareText string) (likes, comments, collects, shares int, err error) { url := "http://120.46.92.62:6888/api/douyin/aweme_detail_v4" method := "POST" //awemeId = "7519726524871462153" //shareText = "6.99 M@j.cn 03/18 uSy:/ - 你怎么哭着脸 # 沈妙 # 永劫无间 # 街头狂欢 # 涂鸦少女 https://v.douyin.com/z4go6Y8l458/ 复制此链接,打开Dou音搜索,直接观看视频!" requestBody := struct { AwemeId string `json:"aweme_id"` ShareText string `json:"share_text"` Proxy string `json:"proxy"` }{ AwemeId: "", ShareText: shareText, Proxy: "", } // 封装请求体 jsonData, err := json.Marshal(requestBody) if err != nil { fmt.Println("JSON编码失败:", err) return 0, 0, 0, 0, err } payload := strings.NewReader(string(jsonData)) client := &http.Client{} req, err := http.NewRequest(method, url, payload) if err != nil { // fmt.Println(err) return 0, 0, 0, 0, err } req.Header.Add("Cookie", "") req.Header.Add("Content-Type", "application/json") res, err := client.Do(req) if err != nil { // fmt.Println(err) return 0, 0, 0, 0, err } defer res.Body.Close() body, err := ioutil.ReadAll(res.Body) if err != nil { //fmt.Println("解析互动数据失败:", err) return 0, 0, 0, 0, err } fmt.Println(string(body)) // 解析响应数据 var response DouyinStatisticResponse err = json.Unmarshal(body, &response) if err != nil { fmt.Println("解析互动数据失败:", err) return 0, 0, 0, 0, fmt.Errorf("解析JSON失败: %v", err) } statistics := response.Data.AwemeDetail.Statistics likes, comments, collects, shares = statistics.DiggCount, statistics.CommentCount, statistics.CollectCount, statistics.ShareCount // 打印结果 fmt.Println("点赞数:", likes) fmt.Println("评论数:", comments) fmt.Println("收藏数:", collects) fmt.Println("分享数(可作为浏览量参考):", shares) return likes, comments, collects, shares, nil } // 获取快手作品数据 type KuaishouStatisticResponse struct { Code int `json:"code"` Data struct { Photos []struct { CollectCount int `json:"collect_count"` // 收藏数 CommentCount int `json:"comment_count"` // 评论数 LikeCount int `json:"like_count"` // 点赞数 ForwardCount int `json:"forward_count"` ViewCount int `json:"view_count"` // 浏览数 ShareCount int `json:"share_count"` // 分享数 } `json:"photos"` } `json:"data"` } // 获取快手作品数据 func (s MoreapiService) GetKuaishouStatistic(shareText string) (likes, comments, collects, shares int, err error) { url := "http://120.46.92.62:6888/api/ks/aweme_detail" method := "POST" //photoId = "3xhsja9s5xfr3ts" //shareText = "https://www.kuaishou.com/f/X-16itgqSzQ64163" requestBody := struct { PhotoId string `json:"photo_id"` ShareText string `json:"share_text"` Proxy string `json:"proxy"` }{ PhotoId: "", ShareText: shareText, Proxy: "", } // 封装请求体 jsonData, err := json.Marshal(requestBody) if err != nil { fmt.Println("JSON编码失败:", err) return 0, 0, 0, 0, err } payload := strings.NewReader(string(jsonData)) client := &http.Client{} req, err := http.NewRequest(method, url, payload) if err != nil { // fmt.Println(err) return 0, 0, 0, 0, err } req.Header.Add("Cookie", "") req.Header.Add("Content-Type", "application/json") res, err := client.Do(req) if err != nil { // fmt.Println(err) return 0, 0, 0, 0, err } defer res.Body.Close() body, err := ioutil.ReadAll(res.Body) if err != nil { //fmt.Println("解析互动数据失败:", err) return 0, 0, 0, 0, err } fmt.Println(string(body)) // 解析响应数据 var response KuaishouStatisticResponse err = json.Unmarshal(body, &response) if err != nil { fmt.Println("解析互动数据失败:", err) return 0, 0, 0, 0, fmt.Errorf("解析JSON失败: %v", err) } photo := response.Data.Photos[0] likes, comments, collects, shares = photo.LikeCount, photo.CommentCount, photo.CollectCount, photo.ViewCount // 打印结果 fmt.Println("点赞数:", likes) fmt.Println("评论数:", comments) fmt.Println("收藏数:", collects) fmt.Println("分享数(可作为浏览量参考):", shares) return likes, comments, collects, shares, nil } // 获取b站作品数据 type BilibiliStatisticResponse struct { Code int `json:"code"` Data struct { VideoData struct { Stat struct { Like int `json:"like"` // 点赞数 Reply int `json:"reply"` // 评论数 Favorite int `json:"favorite"` // 收藏数 Share int `json:"share"` // 分享数 Coin int `json:"coin"` // 投币数 View int `json:"view"` // 浏览数 } `json:"stat"` } `json:"videoData"` } `json:"data"` } // 获取b站作品数据 func (s MoreapiService) GetBilibiliStatistic(bvId string) (likes, comments, collects, shares int, err error) { url := "http://120.46.92.62:6888/api/bilibili/video_data" method := "POST" bvId = "BV1KUM2z1Ecu" requestBody := struct { BvId string `json:"bvid"` Proxy string `json:"proxy"` }{ BvId: bvId, Proxy: "", } // 封装请求体 jsonData, err := json.Marshal(requestBody) if err != nil { fmt.Println("JSON编码失败:", err) return 0, 0, 0, 0, err } payload := strings.NewReader(string(jsonData)) client := &http.Client{} req, err := http.NewRequest(method, url, payload) if err != nil { // fmt.Println(err) return 0, 0, 0, 0, err } req.Header.Add("Cookie", "") req.Header.Add("Content-Type", "application/json") res, err := client.Do(req) if err != nil { // fmt.Println(err) return 0, 0, 0, 0, err } defer res.Body.Close() body, err := ioutil.ReadAll(res.Body) if err != nil { //fmt.Println("解析互动数据失败:", err) return 0, 0, 0, 0, err } fmt.Println(string(body)) // 解析响应数据 var response BilibiliStatisticResponse err = json.Unmarshal(body, &response) if err != nil { fmt.Println("解析互动数据失败:", err) return 0, 0, 0, 0, fmt.Errorf("解析JSON失败: %v", err) } stat := response.Data.VideoData.Stat likes, comments, collects, shares = stat.Like, stat.Reply, stat.Favorite, stat.View // 打印结果 fmt.Println("点赞数:", likes) fmt.Println("评论数:", comments) fmt.Println("收藏数:", collects) fmt.Println("分享数(可作为浏览量参考):", shares) return likes, comments, collects, shares, nil }