diff --git a/Golang/go.mod b/Golang/go.mod index 7c4db90..3574e0a 100644 --- a/Golang/go.mod +++ b/Golang/go.mod @@ -3,15 +3,15 @@ module Golang go 1.19 require ( - github.com/dlclark/regexp2 v1.7.0 github.com/dop251/goja v0.0.0-20230203172422-5460598cfa32 + github.com/etherlabsio/go-m3u8 v1.0.0 github.com/forgoer/openssl v1.5.0 github.com/gin-gonic/gin v1.8.2 github.com/tidwall/gjson v1.14.4 ) require ( - github.com/etherlabsio/go-m3u8 v1.0.0 // indirect + github.com/dlclark/regexp2 v1.7.0 // indirect github.com/gin-contrib/sse v0.1.0 // indirect github.com/go-playground/locales v0.14.0 // indirect github.com/go-playground/universal-translator v0.18.0 // indirect diff --git a/Golang/liveurls/douyin.go b/Golang/liveurls/douyin.go index d10711c..5c325f2 100644 --- a/Golang/liveurls/douyin.go +++ b/Golang/liveurls/douyin.go @@ -9,6 +9,7 @@ package liveurls import ( "encoding/json" + "fmt" "io" "net/http" "net/url" @@ -16,7 +17,6 @@ import ( ) type Douyin struct { - Quality string Shorturl string Rid string } @@ -45,7 +45,7 @@ func GetRoomId(url string) any { } func (d *Douyin) GetRealurl() any { - var mediamap map[string]map[string]map[string]map[string]map[string]any + var mediamap map[string]map[string]map[string]map[string]any var roomid string if str, ok := GetRoomId(d.Shorturl).(string); ok { roomid = str @@ -53,72 +53,20 @@ func (d *Douyin) GetRealurl() any { return nil } client := &http.Client{} - params := map[string]string{ - "aid": "6383", - "live_id": "1", - "device_platform": "web", - "language": "zh-CN", - "enter_from": "web_search", - "cookie_enabled": "true", - "screen_width": "1920", - "screen_height": "1080", - "browser_language": "zh-CN", - "browser_name": "Chrome", - "room_id": roomid, - "scene": "pc_stream_4k", - } - - r, _ := http.NewRequest("GET", "https://live.douyin.com/webcast/room/info_by_scene/?", nil) - q := r.URL.Query() - for k, v := range params { - q.Add(k, v) - } - r.URL.RawQuery = q.Encode() + r, _ := http.NewRequest("GET", "https://webcast.amemv.com/webcast/room/reflow/info/?type_id=0&live_id=1&room_id="+roomid+"&sec_user_id=&app_id=1128", nil) + r.Header.Add("user-agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36") + r.Header.Add("upgrade-insecure-requests", "1") resp, _ := client.Do(r) defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) str, _ := url.QueryUnescape(string(body)) json.Unmarshal([]byte(str), &mediamap) var realurl any - if mediaslice, ok := mediamap["data"]["stream_url"]["live_core_sdk_data"]["pull_data"]["Hls"].([]any); ok { - for _, v := range mediaslice { - if newmediamap, ok := v.(map[string]any); ok { - for k := range newmediamap { - switch d.Quality { - case "uhd": - { - if newmediamap[k] == "uhd" { - realurl = newmediamap["url"] - } - } - case "origin": - { - if newmediamap[k] == "origin" { - realurl = newmediamap["url"] - } - } - case "hd": - { - if newmediamap[k] == "hd" { - realurl = newmediamap["url"] - } - } - case "sd": - { - if newmediamap[k] == "sd" { - realurl = newmediamap["url"] - } - } - case "ld": - { - if newmediamap[k] == "ld" { - realurl = newmediamap["url"] - } - } - } - } + if mediaslice, ok := mediamap["data"]["room"]["stream_url"]["hls_pull_url_map"].(map[string]any); ok { + for k, v := range mediaslice { + if k == "FULL_HD1" { + realurl = fmt.Sprintf("%v", v) } - } } return realurl diff --git a/Golang/main.go b/Golang/main.go index 9c033e3..269ca36 100644 --- a/Golang/main.go +++ b/Golang/main.go @@ -31,10 +31,8 @@ func setupRouter(adurl string) *gin.Engine { r.GET("/douyin", func(c *gin.Context) { url := c.Query("url") - quality := c.DefaultQuery("quality", "origin") douyinobj := &liveurls.Douyin{} douyinobj.Shorturl = url - douyinobj.Quality = quality c.Redirect(http.StatusMovedPermanently, duanyan(adurl, douyinobj.GetRealurl())) })