package main import ( "flag" "log" "net/http" "os" "time" "segmento/internal/segment" ) func main() { // TODO accept some flags with: // URL - source of stream // TargetLength - length of segments in seconds // Output // -d some_dir/ => output playlist and chunks to this directory, cleaning up old files from time to time. // -b 0.0.0.0:3000 => serve playlist and chunks from an HTTP server bound to this address var url string flag.StringVar(&url, "url", "", "URL of MP3 stream") flag.Parse() if url == "" { log.Println("Invalid arguments") flag.PrintDefaults() os.Exit(-1) } client := &http.Client{} resp, err := client.Get(url) if err != nil { log.Fatal(err) } defer resp.Body.Close() segmenter := segment.NewMP3HTTPSegmenter() segments, err := segmenter.Segment(resp.Body) if err != nil { log.Fatal(err) } go func() { for s := range segments { log.Println("got segment with duration", s.Duration(), "and len", s.Len(), "bytes") } }() time.Sleep(10 * time.Second) log.Println("exiting") }