package twitch import ( "fmt" "io" "net/http" "strings" ) func GetStream(streamerName string) (string, error) { tokenwsig, err := getPlaybackAccessToken(streamerName, "") token := tokenwsig.Token signature := tokenwsig.Signature playlistUrl := "https://usher.ttvnw.net/api/channel/hls/" + strings.ToLower(streamerName) + ".m3u8" params := "?sig=" + signature + "&token=" + token req, err := http.NewRequest("GET", playlistUrl+params, nil) req.Header.Add("Client-Id", "ue6666qo983tsx6so1t0vnawi233wa") fmt.Println(req.URL.String()) if err != nil { return "", err } resp, err := http.DefaultClient.Do(req) if err != nil { return "", err } playlistFile, err := io.ReadAll(resp.Body) if err != nil { return "", err } // holy zooks, what the scallop??? we got the playlist, houston!!! // time to proxy all the urls!!! proxiedPlaylist := ProxyPlaylistFile(string(playlistFile), false, false) return proxiedPlaylist, nil } func GetSubPlaylist(rawurl string, isVOD bool) (string, error) { req, err := http.NewRequest("GET", rawurl, nil) req.Header.Add("Client-Id", "ue6666qo983tsx6so1t0vnawi233wa") if err != nil { return "", err } resp, err := http.DefaultClient.Do(req) if err != nil { return "", err } playlistFile, err := io.ReadAll(resp.Body) if err != nil { return "", err } proxiedPlaylist := ProxyPlaylistFile(string(playlistFile), true, isVOD) return proxiedPlaylist, nil }