#!/usr/bin/env python3

import sys
import xml.etree.ElementTree as ET

if len(sys.argv) != 2:
    print(f"usage: {sys.argv[0]} manifest.mpd", file=sys.stderr)
    sys.exit(1)

tree = ET.parse(sys.argv[1])
root = tree.getroot()

# DASH namespaces
ns = {}
if root.tag.startswith("{"):
    uri = root.tag.split("}")[0][1:]
    ns["mpd"] = uri
    segment_urls = root.findall(".//mpd:SegmentURL", ns)
else:
    segment_urls = root.findall(".//SegmentURL")

print("#EXTM3U")
print("#EXT-X-VERSION:4")
print("#EXT-X-PLAYLIST-TYPE:VOD")

for seg in segment_urls:
    media = seg.attrib["media"]

    rng = seg.attrib.get("mediaRange")
    if rng:
        start, end = map(int, rng.split("-"))
        length = end - start + 1

        # duration unknown from SegmentURL alone
        print("#EXTINF:0.0,")
        print(f"#EXT-X-BYTERANGE:{length}@{start}")
        print(media)
    else:
        print("#EXTINF:0.0,")
        print(media)

print("#EXT-X-ENDLIST")
