defmodule Exstream.Playlist do def get_header() do "#EXTM3U\n" end def get_playlist_type() do "#EXT-X-PLAYLIST-TYPE:VOD\n" end def get_target_duration(duration) do "#EXT-X-TARGETDURATION:#{ duration }\n" end def get_version() do "#EXT-X-VERSION:4\n" end def get_media_sequence() do "#EXT-X-MEDIA-SEQUENCE:0\n" end def get_step(duration, step, base_url) do "#EXTINF:#{ Exstream.get_one_tenth(duration) },\n#{ base_url }&segment=#{ Exstream.get_step(duration, step) }\n" end def get_end_list() do "#EXT-X-ENDLIST" end def build(path, base_url) do duration = Exstream.probe(path) |> Exstream.get_duration() get_header() <> get_playlist_type() <> get_target_duration(duration) <> get_version() <> get_media_sequence() <> get_step(duration, 0, base_url) <> get_step(duration, 1, base_url) <> get_step(duration, 2, base_url) <> get_step(duration, 3, base_url) <> get_step(duration, 4, base_url) <> get_step(duration, 5, base_url) <> get_step(duration, 6, base_url) <> get_step(duration, 7, base_url) <> get_step(duration, 8, base_url) <> get_step(duration, 9, base_url) <> get_end_list() end end