#!/usr/bin/env python3

import re
import urllib.request
from pathlib import Path

SOURCE = "https://iptv-org.github.io/iptv/index.m3u"
OUTPUT = Path("/srv/iptv/channels.m3u")

ID_MAP = {
    "FoxSports1.us@HD": "US1#Fox.Sports.1.us",
    "FoxSports2.us@HD": "US1#Fox.Sports.2.us",
    "ESPNU.us@SD": "US1#ESPN.U.us",
    "ESPNU.us@HD": "US1#ESPN.U.us",
    "ESPNDeportes.us@SD": "US1#ESPN.Deportes.us",
    "ESPNDeportes.us@HD": "US1#ESPN.Deportes.us",
    "RacerNetwork.us@SD": "US1#Racer.Network.us",
    "FastTV.us@SD": "US1#MotorTrend.FAST.TV.us",
}

with urllib.request.urlopen(SOURCE, timeout=30) as r:
    text = r.read().decode("utf-8", errors="replace")

out = []

for line in text.splitlines():
    if line.startswith("#EXTINF"):
        m = re.search(r'tvg-id="([^"]*)"', line)

        if m:
            old_id = m.group(1)
            new_id = ID_MAP.get(old_id)

            if new_id:
                line = line.replace(
                    f'tvg-id="{old_id}"',
                    f'tvg-id="{new_id}"'
                )

    out.append(line)

OUTPUT.write_text("\n".join(out) + "\n", encoding="utf-8")

print(f"Wrote normalized playlist to {OUTPUT}")
