import requests
import re
import os

PANEL_URL = "http://192.168.1.112:1236/playlist.m3u"
USERNAME = "Tamox"
PASSWORD = "Tamoxel"

BASE_PATHS = [
    "/mnt/nas/Daten/M3u Mapped/V1",
    "/mnt/nas/Daten/M3u Mapped/V2",
    "/mnt/nas/Daten/M3u Mapped/V3",
    "/mnt/nas/Daten/M3u Mapped/V4",
]

OUTPUT = "/home/o11/iptv/EMBY_ALL.m3u"

def load_panel():
    r = requests.get(PANEL_URL, auth=(USERNAME, PASSWORD), timeout=20)
    r.raise_for_status()
    return r.text.splitlines()

def load_base():
    mapping = {}

    for folder in BASE_PATHS:
        for root, _, files in os.walk(folder):
            for f in files:
                if f.endswith(".m3u"):
                    path = os.path.join(root, f)

                    with open(path, encoding="utf-8", errors="ignore") as file:
                        lines = file.readlines()

                        for line in lines:
                            if line.startswith("#EXTINF"):
                                name = line.split(",")[-1].strip()

                                tvg_id = ""
                                group = ""
                                logo = ""

                                m = re.search(r'tvg-id="([^"]*)"', line)
                                if m:
                                    tvg_id = m.group(1)

                                g = re.search(r'group-title="([^"]*)"', line)
                                if g:
                                    group = g.group(1)

                                l = re.search(r'tvg-logo="([^"]*)"', line)
                                if l:
                                    logo = l.group(1)

                                mapping[name.lower()] = {
                                    "tvg_id": tvg_id,
                                    "group": group,
                                    "logo": logo
                                }

    return mapping

def main():
    print("EMBY FINAL 1:1...")

    panel = load_panel()
    base = load_base()

    output = ['#EXTM3U x-tvg-url="https://extras.vip-arena.net/smiley/epg/epg.xml.gz https://epg.ovh/pltv.xml https://epgshare01.online/epgshare01/epg_ripper_IT1.xml.gz"']

    used_ids = set()
    counter = 0

    for i in range(len(panel)):
        if panel[i].startswith("#EXTINF"):
            name = panel[i].split(",")[-1].strip()
            stream = panel[i+1].strip()

            key = name.lower()
            data = base.get(key)

            if data:
                tvg_id = data["tvg_id"]
                group = data["group"]
                logo = data["logo"]
            else:
                tvg_id = f"noepg_{counter}"
                group = "UNMAPPED"
                logo = ""

            if tvg_id in used_ids:
                tvg_id = f"{tvg_id}_{counter}"

            used_ids.add(tvg_id)

            line = f'#EXTINF:-1 tvg-id="{tvg_id}"'

            if logo:
                line += f' tvg-logo="{logo}"'

            if group:
                line += f' group-title="{group}"'

            line += f',{name}'

            output.append(line)
            output.append(stream)

            counter += 1

    with open(OUTPUT, "w", encoding="utf-8") as f:
        f.write("\n".join(output))

    print("FERTIG:", OUTPUT)

if __name__ == "__main__":
    main()
