83 lines
1.8 KiB
Go

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