package dyjx import ( "dysy/apis" "dysy/models" "encoding/json" "errors" "fmt" "github.com/asmcos/requests" "github.com/gin-gonic/gin" "net/http" "strings" ) func DouYinUrlJieXi(c *gin.Context) { //前端给端视频连接 var inData models.DyJieXiInput var outData models.DyJieXiOutput err := c.ShouldBindJSON(&inData) if err != nil { outData.Code = apis.Code400 outData.Message = apis.InputFail c.JSON(http.StatusOK, outData) return } err, outData = DeWater(inData) if err != nil { outData.Code = apis.Code500 outData.Message = err.Error() c.JSON(http.StatusOK, outData) return } outData.Code = apis.Code200 outData.Message = apis.Success c.JSON(http.StatusOK, outData) } func DeWater(in models.DyJieXiInput) (error, models.DyJieXiOutput) { var out models.DyJieXiOutput fmt.Println("test") str := "" baseHost := in.Url client := &http.Client{ CheckRedirect: func(req *http.Request, via []*http.Request) error { return http.ErrUseLastResponse }, } res, err := client.Get(baseHost) if err != nil { return errors.New(apis.ClientGetFail), out } //if res.StatusCode != 301 { // fmt.Println(baseHost) // //return baseHost //} //fmt.Println(res.Header.Get("Location")) str = res.Header.Get("Location") comma := strings.Index(str, "/video/") pos := strings.Index(str, "/?") fmt.Println(comma, pos, str[comma+7:pos]) var inData models.DyJieXi baseHost = "https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids=" + str[comma+7:pos] req := requests.Requests() resp, err := req.Get(baseHost) if err != nil { return errors.New(apis.RedirectUrlFail), out } err = json.Unmarshal([]byte(resp.Text()), &inData) if err != nil { return errors.New(apis.JsonUnmarshalFail), out //fmt.Println() } fmt.Println(inData) //视频url var videoUrl = inData.ItemList[0].Video.PlayAddr.URLList[0] fmt.Println(inData.ItemList[0].Video.PlayAddr.URLList[0]) fmt.Println(inData.ItemList[0].Video.PlayAddr.URI) fmt.Println(strings.Replace(videoUrl, "playwm", "play", 1)) out.Data.VideoUrl = strings.Replace(videoUrl, "playwm", "play", 1) //音频url //musicUrl = dyResult.getItem_list().get(0).getMusic().getPlay_url().getUri(); //dyDto.setMusicUrl(musicUrl); fmt.Println(inData.ItemList[0].Music.PlayURL.URI) //fmt.Println(inData.ItemList[0].Music.PlayURL.URLList[0]) out.Data.AudioUrl = inData.ItemList[0].Music.PlayURL.URI //videoPic = dyResult.getItem_list().get(0).getVideo().getDynamic_cover().getUrl_list().get(0); //dyDto.setVideoPic(videoPic); //封面 fmt.Println(inData.ItemList[0].Video.DynamicCover.URLList[0]) out.Data.VideoPic = inData.ItemList[0].Video.DynamicCover.URLList[0] //文案 //desc = dyResult.getItem_list().get(0).getDesc(); // dyDto.setDesc(desc); fmt.Println(inData.ItemList[0].Desc) out.Data.Desc = inData.ItemList[0].Desc return nil, out }