import os from dotenv import load_dotenv import requests import json from typing import List load_dotenv() def get_latest_urls_from_dns() -> List[str]: """Retrieves the latest stream URLs from DNS and extra URL files. Returns: A list of unique stream URLs. """ with open("./ktvmanager/lib/DNS_list.txt") as f: lines = [line.rstrip("\n") for line in f] with open("./ktvmanager/lib/extra_urls.txt") as urls: extra_urls = [line.rstrip("\n") for line in urls] # print(lines) complete_list_of_urls = [] for url in lines: data = requests.get(url) try: content = json.loads(data.text) except Exception: pass try: list_of_urls = content["su"].split(",") except KeyError: list_of_urls = content["fu"].split(",") for url in list_of_urls: complete_list_of_urls.append(url) complete_list_of_urls = list(set(complete_list_of_urls)) for url in extra_urls: complete_list_of_urls.append(url) return list(dict.fromkeys(complete_list_of_urls)) def generate_urls_for_user(username: str, password: str) -> List[str]: """Generates a list of full stream URLs for a specific user. Args: username: The username of the user. password: The password of the user. Returns: A list of fully constructed stream URLs for the user. """ new_urls = [] for url in get_latest_urls_from_dns(): hard_url = ( f"/player_api.php?password={password}&username={username}&action=user&sub=info" ) new_url = url + hard_url new_urls.append(new_url) return new_urls