123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- 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
- }
|