import requests
import re


apiKey = input().strip()
collection = "93fe0a2f243fb3e6cd53eefb2a18ffcf"


def get_items_in(collection: str):
    headers = dict(Authorization="MediaBrowser Token=" + apiKey)
    res = requests.get("https://watch.akno.dev/Items",
                        params=dict(parentId=collection, userId="c0829cc7f3bf402faa0b91409cb521ec"), headers=headers)

    if res.status_code != 200:
        print(res.status_code, res.url)
        print(res.text)
        exit()

    return res.json()


def proc(name: str) -> str:
    return re.sub(r"[^a-z\d/]", "", name.lower())


data = get_items_in(collection)
ids = {}
for item in data["Items"]:
    name = item["Name"]
    if item["IsFolder"]:
        for child in get_items_in(item["Id"])["Items"]:
            ids[f"{name} ({child["Name"]})"] = child["Id"]
    else:
        ids[name] = item["Id"]

rev = {v: k for k, v in ids.items()}
ids = {proc(k): v for k, v in ids.items()}
assert len(ids) == len(rev)


def find_link(o: re.Match) -> str:
    index = o.group(1)
    name = o.group(2)
    if m := re.fullmatch(r"(.+) \(Season (\d+)\)", name):
        name = f"{m.group(1)} (Season {int(m.group(2))})"

    keys = [proc(name), proc(name + " (Season 1)")]
    for key in keys:
        if key in ids:
            v = ids.pop(key)
            return f"{index}. [{rev[v]}](https://watch.akno.dev/web/#/details?id={v})"

    return o.group(0)


with open("marvel.md", encoding="utf-8") as f:
    links = re.sub(r"^(\d+)\. \[(.+)\]\((.+)\)$", find_link, f.read(), flags=re.MULTILINE)

print(links)
