import re import logging from typing import Any, Dict from urllib.parse import urlparse from mediaflow_proxy.extractors.base import BaseExtractor, ExtractorError from mediaflow_proxy.utils.packed import unpack logger = logging.getLogger(__name__) class SportsonlineExtractor(BaseExtractor): """Sportsonline/Sportzonline URL extractor for M3U8 streams. Strategy: 1. Fetch page -> find first