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