package main import ( "fmt" "m3u8-downloader/pkg/downloader" ) func main() { //Stream URL masterUrl := "https://d17cyqyz9yhmep.cloudfront.net/streams/234945/playlist_1752291107574_1752292056713.m3u8" //Download Service service := downloader.GetDownloadService() //Parse Master Playlist -> Stream Set stream, err := service.ParseMasterPlaylist(masterUrl) if err != nil { panic(err) } //Select best quality streams audio, video := stream.Master.SelectBestQualityStreams() //Populate Segment Lists audio_segments, err := service.ParseSegmentPlaylist(stream.BuildSegmentURL(audio.URL)) if err != nil { panic(err) } audio.Segments = *audio_segments video_segments, err := service.ParseSegmentPlaylist(stream.BuildSegmentURL(video.URL)) if err != nil { panic(err) } video.Segments = *video_segments //Download Segment Playlists for _, segment := range video.Segments.SegmentList { err := service.DownloadFile(stream.BuildSegmentURL(segment.URL)) if err != nil { fmt.Println(err) return } } for _, segment := range audio.Segments.SegmentList { err := service.DownloadFile(stream.BuildSegmentURL(segment.URL)) if err != nil { fmt.Println(err) return } } fmt.Println(stream) //stream, err := media.ParseMasterPlaylist(masterUrl) //if err != nil { // panic(err) //} // //audio, video, err := stream.FetchSegmentPlaylists() //if err != nil { // panic(err) //} // //videoPlaylist := media.ParseMediaPlaylist(video) //audioPlaylist := media.ParseMediaPlaylist(audio) // //for _, segment := range videoPlaylist.SegmentList { // fmt.Println(segment.URL) //} // //for _, segment := range audioPlaylist.SegmentList { // err := http.DownloadFile(stream.BuildSegmentURL(segment.URL), media.OutputDirPath) // if err != nil { // return // } //} }