# License: GNU AGPL v3: http://www.gnu.org/licenses/ # This file is part of `delarte` (https://git.afpy.org/fcode/delarte.git) """Provide ArteTV website utilities.""" import json from .error import InvalidPage, PageNotFound, PageNotSupported, HTTPError from .model import Program _DATA_MARK = '", start) try: next_js_data = json.loads(html[start:end].strip()) except json.JSONDecodeError: raise InvalidPage("INVALID_JSON_DATA", page_url) try: page_value = next_js_data["props"]["pageProps"]["props"]["page"]["value"] match page_value["type"]: case "program": yield from _process_programs_page(page_value) case "collection": yield from _process_collections_page(page_value) case _: raise PageNotSupported(page_url, page_value) except (KeyError, IndexError, ValueError) as e: raise InvalidPage("SCHEMA", page_url) from e except InvalidPage as e: raise InvalidPage(e.args[0], page_url) from e