package main import ( "flag" "log" "net/http" "os" "segmento/pkg/media" "segmento/pkg/playlist" "segmento/pkg/s3" ) 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 := media.NewMP3Segmenter() publisher := &media.FakePublisher{} playlist := playlist.NewMediaPlaylist(resp.Body, segmenter, publisher) playlist.AddConsumer(&s3.Consumer{}) if err = playlist.Run(); err != nil { log.Fatal(err) } log.Println("exiting") }