PAGE = "https://tv.nrk.no/serie/samenes-nasjonaldag/2024/SAPP63008024/avspiller"
import requests
import json
def get_programme_data(page):
    if page.endswith("/avspiller"):
        parts = page.split("/")
        programme_id = parts[-2]
        res = requests.get(f"https://psapi.nrk.no/playback/manifest/program/{programme_id}?eea-portability=true")
        if res.status_code == 200:
            data = json.loads(res.text)
            return data
    return None
res = get_programme_data(PAGE)
res.keys()
dict_keys(['_links', 'id', 'playability', 'streamingMode', 'availability', 'statistics', 'playable', 'nonPlayable', 'displayAspectRatio', 'sourceMedium'])
def get_urls_from_programme_data(data):
    output = {}
    if not 'playable' in data:
        return []
    if not 'assets' in data['playable']:
        return []
    for asset in data['playable']['assets']:
        if 'url' in asset:
            output['m3u'] = asset['url']
    if 'subtitles' in data['playable']:
        subtitles = []
        for st in data['playable']['subtitles']:
            subtitles.append(st['webVtt'])
        output['subtitles'] = subtitles
    return output
get_urls_from_programme_data(res)
{'m3u': 'https://nrkod46-cdn0-47115-odedge1.dna.contentdelivery.net/47115-odedge1/open/ps/sapp/sapp63008024/32342f4f-5.smil/index.m3u8?adap=small&s=0',
 'subtitles': ['https://undertekst.nrk.no/SAPP63/00/SAPP63008024/NOR/SAPP63008024.vtt',
  'https://undertekst.nrk.no/SAPP63/00/SAPP63008024/TTV/SAPP63008024.vtt']}